2009-04-20 10 views
5

Ho alcune esperienze di base nella realizzazione di siti Flex, ma penso di avere più utilizzo per Flex nel creare un'applicazione AIR desktop.Come usare C# con AIR?

In ogni caso, mi chiedevo se è almeno possibile utilizzare C# insieme a Actionscript/AIR? Non riesco a trovare alcun esempio di questo.

Inoltre, è possibile utilizzare componenti Flash personalizzati in un'app Flex? So che posso usare componenti Javascript.

Grazie

risposta

8

le opzioni con AIR sono limitate a HTML/JS, Flash/ActionScript o Flex. Non c'è supporto per altri linguaggi e framework.

+0

Vedo. Questo non limiterà la mia scelta di API di terze parti disponibili da utilizzare? Inoltre, Actionscript non può inviare email ma può chiamare metodi in altre lingue (credo). Inoltre, questo non significa che le mie app saranno abbastanza semplici? – dotnetdev

+0

dotnetdev, è possibile chiamare un server per inviare/ricevere dati da un'applicazione aerea. – Tracker1

+0

@dotnetdev: è possibile accedere a socket TCP/IP non elaborati da AIR, il che significa che è possibile inviare messaggi di posta elettronica direttamente, ma che probabilmente sarà un argomento per un'altra domanda. –

0

L'obiettivo di AIR è di consentire agli sviluppatori Web che sanno di AS/JS di creare facilmente applicazioni desktop che sono automaticamente portatili per vincere, Linux e Mac. Quindi perché non c'è modo di connetterlo ad altri linguaggi come C#, C++, ecc, poiché gli sviluppatori web generalmente non si preoccupano di quelle lingue, e se sono state usate, l'app non è più portabile (sì, la maggior parte delle lingue può essere portato su altri sistemi operativi con qualche sforzo, ma il punto di AIR è che si scrive quello che vuoi, e funziona ovunque senza lavoro extra).

Se si desidera combinare C# e Flash, invece di provare a inserire C# all'interno di AIR, ciò che si dovrebbe fare è inserire Flash in un'app C#. Ci sono varie risorse per questo sugli internet, eccone uno che ho trovato in una ricerca rapida: Example: Using the External API with an ActiveX container. Durante la ricerca, assicurarsi che parli del metodo ExternalInterface/External API più recente e avanzato e non del metodo SetVariable/CallFunction/watch oldschool. Il più recente è molto più facile da usare & ha più funzionalità.

Inoltre, sì, è possibile utilizzare componenti Flash personalizzati all'interno di un'app Flex. Generalmente fai un SWC all'interno di Flash CS3 (o CS4), quindi importa quel file SWC all'interno di Flex Builder (o Flex SDK, o FlashDevelop o ...)

Se stai creando i componenti da solo in Flash CS3, dovresti usare il Flex Component Kit. Fornisce alcune funzionalità per te e inserisce il codice boilerplate per rendere piacevole il tuo componente Flash all'interno di Flex. È incluso in Flex Builder/Flex SDK.

1

Se con "accanto" si intende l'uso di C# come middleware per connettersi al proprio database (probabilmente SQL Server), o per eseguire calcoli remoti allora sì è possibile. È possibile connettersi a un servizio C# utilizzando oggetti remoti. I codificatori di mezzanotte producono un prodotto chiamato WebORB che è abbastanza semplice da usare. La versione 3.4 era una versione totalmente gratuita che dovrebbe essere sufficiente se stai costruendo applicazioni desktop in Air. Le prossime due versioni non sono gratuite ma sostanzialmente non ti offrono alcun vantaggio reale.

2

Slukse è corretto, dipende da cosa intendi per "accanto".

Ovviamente non è possibile compilare il codice C# in un file SWF, questo è ciò che sappiamo. Ma puoi certamente integrare (come suggerisce davr) un controllo ActiveX in un'app .NET Form, caricare il SWF in quel controllo e usare l'API ExternalInterface per collegare il codice C# in esecuzione nell'app desktop e il codice ActionScript in esecuzione nel file SWF . Se accanto a te intendi scrivere codice C# sul lato server per rendere i dati utilizzabili dall'app Flex, allora ovviamente puoi farlo anche tu - c'è molta documentazione là fuori che spiega come collegare un Flash o Flex (o AIR, per estensione) app per servizi Web di una varietà di sapori, tra cui il roba WCF relativamente nuovo.

Un altro modo per utilizzare l'app desktop C# standalone (ad esempio un servizio, un'app console o simili) e far sì che l'app stia ascoltando su una determinata porta locale, quindi comunicare il proprio SWF a quell'app utilizzando le classi Socket.Sto facendo qualcosa di simile ora (con Java, non C#, ma l'idea è la stessa) per un progetto personale.

0

L'unico modo che conosco di fare ciò è con i programmi di servizio web C# e le app AIR/Flex comunicano con i servizi web.

3

È possibile creare un'applicazione console C# e chiamare questa applicazione da 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); 

In questo modo abbiamo un'applicazione C# con interfaccia AIR.