Este artículo proviene de un motor de traducción automática.

Avance

IronRuby en Windows Phone 7

Shay Friedman

Descargar el ejemplo de código

Algunos años, fui un chico de .NET del 100 por ciento. No tengo una pista sobre el resto del mundo del desarrollo, y estoy bastante satisfecho de mi propia burbuja. A continuación, algo por error, aprendí Ruby, y la experiencia fue masticadores de colocar. Hacer las cosas de forma usando características integradas del lenguaje de la era golpear a mí.

Aún así, la persona que puede seguir fuera del mundo. NET, pero no puede tomar el mundo de .NET de la persona. Es así cuando escuché Microsoft estaba desarrollando una implementación del lenguaje Ruby, denominado IronRuby, en la parte superior de Microsoft .NET Framework, tiene muy satisfechos y palomas directamente en él.

Con IronRuby, ahora están conectados el mundo de .NET y el mundo Ruby. Esto permite posibilidades ilimitadas de nuevas, y las ventajas de una conexión de este tipo son absolutamente de extraordinario.

En este artículo, voy a comentar una de las ventajas es importante para los desarrolladores de .NET Framework y de Ruby, puede utilizar IronRuby de teléfono de Windows 7.

¿Qué es IronRuby?

En 2006, Microsoft anunció el desarrollo de IronRuby. Se tardó más de tres años para desarrollar y de abril, el equipo de IronRuby anunció la primera versión estable de IronRuby: versión 1.0.

IronRuby es compatible con el conjunto de toda la característica del lenguaje Ruby con un único complemento: integración entre el código de Ruby y el código de .NET Framework. Esta integración es bastante sencillo y requiere poco más de cargar un ensamblado de .NET Framework para el contexto de Ruby. Por ejemplo, este código de IronRuby carga el ensamblado System.Windows.Forms y aprovecha las ventajas de sus clases:

require 'System.Windows.Forms'

include System::Windows::Forms

form = Form.
new form.height = 200 form.width = 400 form.text = "IronRuby Window" form.show_dialog

Esta integración es posible gracias al lenguaje dinámico en tiempo de ejecución (DLR), una capa que se agrega a la infraestructura de .NET Framework para proporcionar servicios común para lenguajes dinámicos que se escriben en la parte superior de la estructura. El DLR se escribe en la parte superior de CLR y resulta mucho más fáciles de implementar los lenguajes dinámicos en la parte superior de. NET. Se trata de una de las razones principales para el aumento de los lenguajes dinámicos de .NET Framework que hemos visto últimamente, incluidos IronRuby, IronPython, IronJS, Nua, ClojureCLR y otros.

Principales funciones de IronRuby

Ruby es un lenguaje dinámico y, por lo tanto, es IronRuby. Esto significa que no hay ningún compilador en cuestión, y se lleva a cabo la mayoría de las operaciones realizadas durante el tiempo de compilación y generación en lenguajes estáticos en tiempo de ejecución. Este comportamiento proporciona una gran variedad de características que son difíciles o imposibles de lograr en lenguajes estáticos más recientes.

Interoperabilidad con objetos de .NET Framework El idioma de Ruby tiene diversas implementaciones: Resonancia Magnética (que es el original), JRuby, Rubinius, MacRub, IronRuby y otros usuarios. Lo IronRuby destaquen sobre el público es su capacidad para interactuar correctamente con los objetos de .NET Framework. Que interoperabilidad lleva a ambas formas, objetos de .NET Framework están disponibles desde el código de IronRuby y objetos de IronRuby están disponibles desde el código de .NET Framework.

Tipos dinámicos Tipos de variables de IronRuby se calculan en tiempo de ejecución, por lo que no es necesario especificar los tipos en el código. Sin embargo, esto no significa que no dispone de tipos de IronRuby. Lo hace, y todos los tipos tienen sus propias reglas, al igual que los tipos en lenguajes estáticos. En este ejemplo de código se muestra el mecanismo de tipos dinámico en unos sencillos pasos:

# Declaring a numeric variable a = 1

# The variable is of a numeric type # and therefore numeric operations are available a = a * 2 + 8 / 4

# The next line will raise an exception # because it is not possible to add a string to a number a = a + \"hello\"

# However, the next line is entirely legit and will result # in changing the variable type to String a = \"Hello\"

La consola interactiva Al igual que el símbolo del sistema de Windows, la consola interactiva es una aplicación que recupera el código de IronRuby y lo ejecuta inmediatamente. El flujo de ejecución es también se denomina lectura-evaluar-Print-Loop (REPL). Puede definir las variables, métodos y las clases incluso, cargar los ensamblados de .NET Framework o de los archivos de IronRuby y utilizarlas de forma instantánea. Por ejemplo, de figura 1 muestra una sesión de consola simple que crea una clase y lo utiliza de forma inmediata.

image: Using the IronRuby Console

Figura 1 de uso de la consola de IronRuby

Pato escritura IronRuby es un lenguaje orientado a objetos. Es compatible con el control de acceso, encapsulación, herencia y clases, como cabría esperar de un lenguaje orientado a objetos. Sin embargo, no admite las interfaces o clases abstractas, como ocurre con muchos lenguajes estáticos.

Aunque no es un error en el diseño del lenguaje. Escribir texto dinámico, declarar el código de contrato, como las interfaces o clases abstractas se convierte en redundantes. Lo único que es importante acerca de un objeto es que si define un método específico o no, y no es necesario para Mark al mismo tiempo. Esto se conoce como duck escribiendo, si lo quacks como un pato swims como un pato, se trata de un pato y no es necesario para marcar para tener en cuenta como un pato.

For example, the code sample in Figure 2 contains two classes with a method named say_hi and another general method named introduce that retrieves an object and executes its say_hi method.(Notice the absence of interfaces or other marking mechanisms.)

La figura 2 de un ejemplo de escritura de duck

class Human def say_hi puts "Hi!" end end class Duck def say_hi puts "Quack!" end end

def introduce(obj) obj.say_hi end

human = Human.
new duck = Duck.
new

introduce(human) # prints "Hi!" introduce(duck) # prints "Quack!"

Metaprogramación IronRuby incluye eficaces capacidades de metaprogramación. Metaprogramming es una forma para agregar, cambiar e incluso quitar métodos de tiempo de ejecución. Por ejemplo, es posible agregar métodos a una clase, escribir métodos que se definen otros métodos o quitar las definiciones de métodos de una clase existente. La figura 3 agrega un método a una clase que se reflejará en todas las instancias actuales y futuras de esa clase.

La figura 3 de Agregar un método a una clase después de IT se ha declarado

# Creating a class with no methods class Demo end

# Creating an instance of class Demo d = Demo.
new

# Opening the class and adding a new method - hello_world class Demo def hello_world puts \"hello world\" end end

# Using the newly added method on the class instance d.hello_world # prints \"hello world\"

Además, existen métodos especiales que se pueden utilizar para detectar las llamadas a métodos sin definir o constantes. Using these methods makes it easy to support dynamic method names such as find_by_[column name] where [column name] can be replaced with any value such as find_by_name, find_by_city or find_by_zipcode.

RubyGems El lenguaje Ruby, tan eficaz como lo es, no Would have se convierten en dichos un enorme éxito sin las bibliotecas externas que se pueden instalar y utilizar con el mismo.

El método principal de la instalación de las bibliotecas de Ruby es a través del sistema RubyGems. It’s a package manager that helps distribute and install Ruby libraries, which are called gems. Hay miles de gemas libres disponible, que cubren prácticamente todos los aspectos de programación y la tarea, incluyendo pruebas marcos de trabajo, las bibliotecas de cálculo de impuestos, marcos de trabajo de desarrollo Web y mucho más.

Debe tener en cuenta que algunos RubyGems dependen de las bibliotecas de C. Estas joyas no se pueden ejecutar en la versión actual de IronRuby, a menos que proceden las bibliotecas de C en Ruby normal o en C#.

La Comunidad Una de las mejores cosas sobre IronRuby es que obtiene acceso a la Comunidad de Ruby. Esto incluye contenido valioso en docenas de foros, listas de distribución, salones de charla y blogs proporcionadas por las personas que están dispuestas a ayudarle con cualquier pregunta. No dude en aprovechar las ventajas de estos recursos, ya que son extremadamente útiles.

IronRuby y Silverlight

Silverlight 2 introdujo una característica nueva e importante: compatibilidad con lenguajes de DLR. Como resultado, los programadores pueden utilizar IronRuby con aplicaciones de Silverlight, de la incorporación de la aplicación para escribir aplicaciones de Silverlight toda con él.

¿Pero espere, Silverlight se está ejecutando en el teléfono de Windows (7), derecha? Exactamente.

Teléfono de Windows 7

La próxima plataforma móvil Microsoft, Windows teléfono 7, se espera que algunos se convierta en un cambiador de juego en la industria de smartphone. Además de las capacidades de multi-touch estándar y una interfaz de usuario nuevo y brillante, las mejores noticias acerca de cómo Windows 7 de teléfono desde la perspectiva del desarrollador son que Silverlight es su plataforma de desarrollo.

Es un paso inteligente por Microsoft para que utilice una tecnología de reconocido prestigio, lo que permite que un gran número de los desarrolladores crear aplicaciones móviles con una sencilla, casi imperceptible, curva de aprendizaje.

Debido a que los lenguajes DLR son capaces de ejecutarse en el entorno de Silverlight, puede aprovechar las ventajas de IronRuby y utilizarla para escribir aplicaciones de Windows 7 de teléfono.

Sin embargo, existen algunas limitaciones que debe tener en cuenta. Teléfono de Windows 7 se incluye con .NET Compact Framework, que es un subconjunto de .NET Framework. Compact Framework está diseñado para aplicaciones móviles e incrustadas y contiene aproximadamente un 30 por ciento de .NET Framework completo. Por lo tanto, no aparecen numerosas clases, y esto afecta al funcionamiento de IronRuby.

La función principal que falta en la que afecta a IronRuby es el espacio de nombres de Reflection.Emit. IronRuby, utiliza esta característica para compilar el código sobre la marcha para que las aplicaciones se ejecuten más rápidamente. Sin embargo, es sólo una optimización del rendimiento y no es un componente necesario para ejecutar secuencias de comandos sencillas y aplicaciones.

Otra limitación se refiere a la forma en que se crean nuevas aplicaciones de Windows 7 de teléfono. Estas aplicaciones se pueden crear sólo desde Visual Studio y sólo en C#. Este requisito obliga a los desarrolladores escribir código en C# que inicia el código de IronRuby.

La última limitación importante es que RubyGems no funcionará en Windows 7 de teléfono. Por lo tanto, para utilizar un gema que hay, tendrá que incluir los archivos de código dentro de los archivos de aplicación y utilizarlos como cualquier otro archivo de código de IronRuby.

Creación de una aplicación de IronRuby Simple en el teléfono de Windows 7

Para iniciar una aplicación controlada por IronRuby 7 de teléfono de Windows, debe instalar las herramientas de desarrollo de Windows teléfono 7, que se puede descargar desde developer.windowsphone.com de .

Una vez instaladas las herramientas, abra Visual Studio y vaya al archivo | nuevo | proyecto. En el cuadro de diálogo nuevo proyecto, seleccione la categoría “ teléfono de Silverlight para Windows ” y, a continuación, elija la plantilla de proyecto de aplicación para teléfonos Windows “ ”. El nombre y continuar.

Cuando se abre el nuevo proyecto, observará que se ha creado un archivo XAML sencillo para usted. Tenga en cuenta que el XAML se requiere para Silverlight en general y no dependen del idioma. Por lo tanto, aunque el código de la aplicación se escribirán en IronRuby, debe utilizar XAML para crear la interfaz de usuario. En esta aplicación sencilla, el archivo XAML predeterminado es suficiente, por lo que no hay cambios hay que hacer aquí.

La parte interesante de esta aplicación simple es el código. Antes de profundizar en el, sin embargo, necesitamos agregar referencias a la plancha ­ Ruby y los ensamblados DLR. Estos ensamblados no son los normales; es necesario que los ensamblados de listos para el 7 de teléfono de Windows, que se pueden recuperar de ironruby.codeplex.com/releases/view/43540#DownloadId=133276 de . Encontrará los ensamblados necesarios dentro de la carpeta o ubicación de silverlight en el paquete descargado.

A continuación, debemos escribir el código de IronRuby. Agregar un nuevo archivo de texto a la aplicación y asígnele el nombre MainPage.rb. Además, para facilitar la implementación en el teléfono, abra las propiedades de este archivo y cambie la propiedad “ Build Action ” “ Embedded Resource. ”

Pegue el código de del 4 de la figura en el archivo.

La figura 4 del archivo de código de IronRuby para ejecutar en el teléfono de Windows 7

# Include namespaces for ease of use include System::Windows::Media include System::Windows::Controls

# Set the titles Phone.find_name(\"ApplicationTitle\").text = \"MSDN Magazine\" Phone.find_name(\"PageTitle\").text = \"IronRuby& WP7\"

# Create a new text block textBlock = TextBlock.
new textBlock.text = "IronRuby is running on Windows Phone 7!" textBlock.foreground = SolidColorBrush.
new(Colors.Green) textBlock.font_size = 48 textBlock.text_wrapping = System::Windows::TextWrapping.Wrap

# Add the text block to the page Phone.find_name(\"ContentGrid\").children.add(textBlock)

El código de IronRuby en de figura 4 es bastante sencillo, establecemos los títulos, crear un bloque de texto con texto y agregarla a la página. Tenga en cuenta que puede utilizar todos los elementos en el Ruby lenguaje (no se hace aquí), como clases, metaprogramación y bibliotecas, con las limitaciones mencionadas de ejecución en el entorno de teléfono de Windows.

Lo único que queda es en realidad se ejecuta el código de IronRuby. Para hacerlo así, cuando se carga la aplicación, el código de de figura 5 se debe agregar al constructor de clase MainPage, que se encuentra dentro del archivo MainPage.xaml.cs.

La figura 5 de Agregar código para ejecutar el código de IronRuby desde el constructor de clase

// Allow both portrait and landscape orientations SupportedOrientations = SupportedPageOrientation.PortraitOrLandscape;

// Create an IronRuby engine and prevent compilation ScriptEngine engine = Ruby.CreateEngine();

// Load the System.Windows.Media assembly to the IronRuby context engine.Runtime.LoadAssembly(typeof(Color).Assembly);

// Add a global constant named Phone, which will allow access to this class engine.Runtime.Globals.SetVariable("Phone", this);

// Read the IronRuby code Assembly execAssembly = Assembly.GetExecutingAssembly(); Stream codeFile = execAssembly.GetManifestResourceStream("SampleWPApp.MainPage.rb"); string code = new StreamReader(codeFile).ReadToEnd();

// Execute the IronRuby code engine.Execute(code);

De figura 5 el código es bastante corto y sin problemas, muestra lo fácil que resulta ejecutar el código de IronRuby desde código C#.

Además, asegúrese de agregar estas instrucciones para la clase:

using System.Reflection; using System.IO; using Microsoft.Scripting.Hosting; using IronRuby;

La tercera línea de código en de figura 5, carga el ensamblado de System.Windows.Media en el contexto de IronRuby, que permite al código interactuar con las enumeraciones y clases de este ensamblado.

La siguiente línea permite que el código de IronRuby tener acceso a la actual página de Silverlight. This line exposes the current instance (this) to the IronRuby code via a constant named Phone.

El resto del código lee el código de IronRuby desde el archivo incrustado (tenga en cuenta que se debe agregar el espacio de nombres de aplicación para el nombre de archivo, por lo que MainPage.rb pasa a ser SampleWPApp.MainPage.rb) y, a continuación, se ejecuta utilizando la instancia del motor.

Y eso es todo. Hemos creado una aplicación que, una vez cargado, se ejecuta IronRuby, que a su vez, cambie los títulos y agrega un bloque de texto a la página de Silverlight. Lo único que queda es ejecutar la aplicación y el resultado se muestra en de figura 6.

image: An IronRuby-Driven Application Running on Windows Phone 7

La figura 6 de una aplicación de IronRuby gobernadas por que se ejecutan en el teléfono de Windows 7

Obtener el mejor de todo el período de vida

Aunque el flujo de trabajo no es perfecto al utilizar IronRuby 7 de teléfono de Windows y tiene que tener en cuenta las limitaciones diferentes, esto es sólo el principio. Las plataformas de IronRuby y teléfono de Windows 7 son nuevos y está obteniendo un mejor todo el tiempo.

Esta combinación abre muchas posibilidades, para los desarrolladores de .NET Framework y de los desarrolladores de Ruby. Ahora, los programadores de .NET pueden aprovechar el poder increíble del lenguaje Ruby al escribir aplicaciones de Windows 7 de teléfono, como, por ejemplo, la incorporación de una consola de IronRuby a sus aplicaciones o proporcionar las capacidades de extensibilidad. Y a los desarrolladores de Ruby, en el otro extremo, pueden, por primera vez, escribir aplicaciones móviles con su idioma.

Esto es, sin una duda, el origen de un mundo nuevo de brave con muchas de las oportunidades y las posibilidades. Y todo ello en la palma de sus manos.

Shay Friedman es un Microsoft Visual C# / IronRuby MVP y autor de Lanzamiento de IronRuby. Trabaja como líder de lenguajes dinámicos en el grupo Sela donde consulta y lleva a cabo cursos de todo el mundo. Read his blog at IronShay.com.

Gracias al siguiente experto técnico para este artículo: Tomas Matousek