2009-04-20 103 views
5

我在製作Flex網站方面有一些基本的經驗,但我想我在製作桌面AIR應用程序方面有更多的用途。如何將C#與AIR一起使用?

無論如何,我想知道是否至少可以將C#與Actionscript/AIR結合使用?我找不到任何這樣的例子。

另外,我可以在Flex應用程序中使用自定義Flash組件嗎?我知道我可以使用Javascript組件。

謝謝

回答

8

您的AIR選項僅限於HTML/JS,Flash/ActionScript或Flex。不支持其他語言和框架。

+0

我明白了。這不會限制我選擇可用的第三方API嗎?此外,Actionscript不能發送電子郵件,但它可以調用其他語言的方法(我認爲)。此外,這是否意味着我的應用程序將是相當基本的? – dotnetdev 2009-04-20 22:47:02

0

AIR的重點在於讓知道AS/JS的Web開發人員能夠輕鬆製作可自動移植到win,linux和mac的桌面應用程序。因此,爲什麼沒有辦法將它連接到其他語言,如C#,C++等,因爲Web開發人員通常不關心這些語言,如果使用它們,應用程序不再是可移植的(是的,大多數語言都可以移植到其他操作系統的一些努力,但AIR的重點是你寫任何你想要的,它運行在任何地方沒有額外的工作)。

如果你想結合C#和Flash,而不是試圖把C#放在AIR中,你應該做的是將Flash放入C#應用程序中。在互聯網上有這方面的各種資源,這裏是我發現的一個快速搜索:Example: Using the External API with an ActiveX container。在搜索時,確保它談論更新,更高級的ExternalInterface/External API方法,而不是老的SetVariable/CallFunction/watch方法。較新的一個更容易使用&有更多的功能。

另外,是的,您可以在Flex應用程序中使用自定義Flash組件。通常,您只需在Flash CS3(或CS4)中創建一個SWC,然後在Flex Builder(或Flex SDK,或FlashDevelop或...)中導入該SWC。

如果您自己在Flash CS3中創建組件,您應該使用Flex Component Kit。它爲您提供了一些功能,並提供樣板代碼,讓您的Flash組件在Flex內部發揮出色。它包含在Flex Builder/Flex SDK中。

1

如果「旁邊」的意思是使用c#作爲中間件連接到數據庫(可能是SQL Server),或者執行遠程計算,那麼你可以。您可以使用遠程對象連接到c#服務。午夜編碼器生產一種名爲WebORB的產品,使用起來相當簡單。如果您在Air中構建桌面應用程序,則3.4版本是完全免費的版本。接下來的兩個版本不是免費的,但基本上沒有給你帶來真正的好處。

2

Slukse是正確的 - 這取決於你的意思是「旁邊」。

很明顯,你不能將C#代碼編譯成SWF文件 - 就是我們所知道的。但是,您當然可以將ActiveX控件嵌入到.NET Forms應用程序中,將SWF加載到該控件中,並使用ExternalInterface API將運行在桌面應用程序中的C#代碼與運行在SWF中的ActionScript代碼。如果你的意思是編寫服務器端C#代碼來呈現Flex應用程序可以使用的數據,那麼當然也可以這樣做 - 這裏有大量的文檔介紹瞭如何連接Flash或Flex(或AIR,通過擴展)應用程序到各種風格的Web服務,包括相對較新的WCF的東西。

另一種方法是運行獨立的C#桌面應用程序(例如服務,控制檯應用程序等),並讓該應用程序偵聽某個本地端口 - 然後讓您的SWF與該應用程序通話Socket類。我正在做一些類似於個人項目的事情(使用Java,而不是C#,但這個想法是相同的)。

0

我知道這樣做的唯一方法是使用C#Web服務程序和AIR/Flex應用程序與Web服務進行通信。

3

您可以創建一個C#控制檯應用程序並從AIR調用此應用程序。

var file:File = File.applicationDirectory; 
file = file.resolvePath("CSharpConsoleApplication.exe"); 
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo(); 
nativeProcessStartupInfo.executable = file; 
nativeProcessStartupInfo.arguments.push("-arg"); 
var process:NativeProcess = new NativeProcess(); 
process.addEventListener(NativeProcessExitEvent.EXIT,onProcessDone); 
process.start(nativeProcessStartupInfo); 

這樣我們就有了一個帶有AIR接口的C#應用​​程序。

相關問題