2009-04-20 4 views
5

Tengo cierta experiencia básica en la creación de sitios Flex, pero creo que tengo más uso para Flex en la creación de una aplicación AIR de escritorio.¿Cómo se usa C# con AIR?

De todos modos, me preguntaba si al menos es posible usar C# junto con Actionscript/AIR? No puedo encontrar ningún ejemplo de esto.

Además, ¿puedo usar componentes Flash personalizados en una aplicación Flex? Sé que puedo usar componentes de Javascript.

Gracias

Respuesta

8

sus opciones con AIR se limitan a HTML/JS, Flash/ActionScript o Flex. No hay soporte para otros lenguajes y marcos.

+0

Ya veo. ¿Esto no limitaría mi elección de API de terceros disponibles para usar? Además, Actionscript no puede enviar correos electrónicos, pero puede llamar a métodos en otros idiomas (creo). Además, ¿no significa que mis aplicaciones serán bastante básicas? – dotnetdev

+0

dotnetdev, puede llamar a un servidor para enviar/recibir datos de una aplicación aérea. – Tracker1

+0

@dotnetdev: puede acceder a tomas TCP/IP sin procesar desde AIR, lo que significa que puede enviar correos electrónicos directamente, pero eso probablemente sea un tema para otra pregunta. –

0

El objetivo de AIR es permitir que los desarrolladores web que conocen AS/JS puedan crear fácilmente aplicaciones de escritorio que sean automáticamente portátiles para win, linux y mac. De ahí que no haya forma de conectarlo a otros lenguajes como C#, C++, etc., ya que los desarrolladores web generalmente no se preocupan por esos idiomas, y si se usaron, la aplicación ya no es portátil (sí, la mayoría de los idiomas pueden ser portado a otros sistemas operativos con cierto esfuerzo, pero el objetivo de AIR es que escribas lo que quieras, y se ejecuta en todas partes sin ningún trabajo adicional).

Si desea combinar C# y Flash, en lugar de intentar poner C# dentro de AIR, lo que debe hacer es colocar Flash dentro de una aplicación C#. Hay varios recursos para esto en los internets, aquí hay uno que encontré en una búsqueda rápida: Example: Using the External API with an ActiveX container. Cuando realice una búsqueda, asegúrese de que se trata del método más avanzado y más avanzado ExternalInterface/External API, y no del método SetVariable/CallFunction/watch de la escuela anterior. El más nuevo es mucho más fácil de usar. & tiene más funciones.

Además, sí, puede usar componentes Flash personalizados dentro de una aplicación Flex. En general, solo hace un SWC dentro de Flash CS3 (o CS4), y luego importa ese SWC dentro de Flex Builder (o Flex SDK, o FlashDevelop, o ...)

Si está fabricando los componentes usted mismo dentro de Flash CS3, deberías usar el Kit de Componente Flex. Proporciona algunas características para usted y pone en el código repetitivo, para hacer que su componente flash juegue bien dentro de Flex. Se incluye con Flex Builder/Flex SDK.

1

Si con 'al costado' quiere decir usar C# como middleware para conectarse a su base de datos (probablemente SQL Server), o para realizar cálculos remotos, entonces sí puede hacerlo. Puede conectarse a un servicio C# utilizando objetos remotos. Los codificadores de medianoche producen un producto llamado WebORB que es bastante simple de usar. La versión 3.4 era una versión totalmente gratuita que debería ser suficiente si está creando aplicaciones de escritorio en Air. Las siguientes dos versiones no son gratuitas, pero básicamente no te ofrecen ninguna ventaja real.

2

Slukse es correcto, depende de a qué te refieras con "al costado".

Obviamente, no se puede compilar el código C# en un archivo SWF, eso sí que sabemos. Pero ciertamente puede incrustar (como davr sugiere) un control ActiveX en una aplicación .NET Forms, cargar el SWF en ese control y usar la API ExternalInterface para unir el código C# que se ejecuta en la aplicación de escritorio y el código ActionScript que se ejecuta en el SWF . Si junto a usted quiere decir escribir el código C# del lado del servidor para procesar los datos consumibles en la aplicación Flex, entonces, por supuesto, también puede hacerlo: hay mucha documentación sobre cómo conectar un Flash o Flex (o AIR, por extensión) aplicación a los servicios web de una variedad de sabores, incluyendo las cosas relativamente nuevas de WCF.

Otra forma de hacerlo sería ejecutar una aplicación de escritorio C# independiente (por ejemplo, un servicio, una aplicación de consola o similar) y hacer que la aplicación escuche en un determinado puerto local; luego, haga que su SWF hable a esa aplicación usando las clases de Socket.Ahora estoy haciendo algo como esto (con Java, no con C#, pero la idea es la misma) para un proyecto personal.

0

La única manera que conozco de hacerlo es con los programas de servicio web C# y las aplicaciones AIR/Flex se comunican con los servicios web.

3

Puede crear una aplicación de consola C# y llamar a esta aplicación desde 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); 

De esta forma tenemos una aplicación C# con interfaz AIR.