Compartir a través de


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

El programador políglota

Introducción a Oak

Ted Neward

Ted NewardEs interesante, a veces, tener en cuenta los cambios que han ocurrido dentro de nuestra industria en los últimos 50 años. Un graduado de la Universidad en 1960 podría, muy razonablemente, han conseguido un trabajo como programador y, a través de la amplitud de su carrera, vio su trabajo desde llenar las tarjetas perforadas para programar una máquina del tamaño de una habitación con un friolera 4K de memoria activa (y sin almacenamiento en línea); visto el surgimiento de lenguajes de programación como COBOL en mainframes y luego las minicomputadoras como la PC de IBM; cambios experimentados en la tecnología de interfaz de usuario como la GUI; visto el portátil se convierten en el equipo estándar de elección; fue testigo del "nacimiento" de la Internet y la Web — y eventualmente retirarse justo el momento en que las tabletas y dispositivos móviles se están convirtiendo en computación dispositivos de elección al consumidor.

Pero también es igualmente cierto que los cambios ocurren dentro de ciertos focos de la industria, y el mismo tipo de "revoluciones" llevará a cabo dentro de un círculo más pequeño de tecnología o dominio. Un tal círculo rápidamente cambiante de la tecnología es el de la web ubicua: de interfaz de entrada común (CGI) scripts escritos en Perl o C; a las extensiones de servidor Web como ISAPI; a "orientada a la página" herramientas como ASP; a fundamentos más poderosos detrás de esas herramientas orientadas a la página (ASP.NET, respaldado por el CLR en lugar de código nativo); y así sucesivamente. Cada vez más, el método de elección para estas herramientas se está alejando de "estáticamente mecanografiados" lenguajes, como C#, más "dinámicamente escribió" idiomas, tales como Ruby o Python. Los debates de la rabia, sin embargo, sobre la severidad de las sanciones a la programación con un lenguaje dinámico (en el que el compilador no puede atrapar errores comunes) y cómo comercian fuera contra la sobrecarga (el proceso de compilación y tener que trabajar con o alrededor del sistema tipo) de un lenguaje estático. Estos debates aún tienen que rendir un abrumadora "ganador", y como resultado, algunos desarrolladores están empezando a buscar formas para tomar lo mejor de ambos mundos.

Roble, un proyecto open source de Amir Rajan (Twitter: @amirrajan; Web: amirrajan.net), es un intento para aprovechar las capacidades dinámicas inherentes dentro de C# (a través del palabra clave/tipo "dinámico" y el Dynamic Language Runtime o DLR, ambos introducidos en Visual Studio 2010) y obtener los beneficios de productividad de un sistema como Ruby on Rails, pero mantener todo en un lenguaje (C#) que ofrece estática tipo comprobación y verificación.

Configurar

Roble está disponible como un paquete de NuGet, pero una cosa que los desarrolladores a roble deben entender es que, ante todas las otras cosas, el roble es más de un enfoque de estilo de vida de desarrollo que "sólo" una biblioteca. Roble tomará un enfoque diferente a la construcción de aplicaciones de lo que el desarrollador ASP.NET MVC tradicional puede utilizarse para. Por ejemplo, énfasis en extremadamente rápida retroalimentación significará roble quiere construir continuamente en el fondo (o al menos parecen ser), tal que simplemente guardar el archivo .cs será suficiente para ver los resultados en el navegador — no explícita "construir" es un paso necesario. (Cómo roble logra esto no en realidad es ciencia de cohetes, como verás.) El resultado final de roble desarrollo será una aplicación ASP.NET "tradicional", los tipos de operaciones nunca sabrá que construyó diferente de cómo solías, afortunadamente.

Herramientas

Parte de este ajuste de estilo de vida es que Robles no es sólo una descarga de NuGet, pero también requiere el uso de otras herramientas, que debe ser instalado en su máquina para empezar. IIS Express es una herramienta, que muchos desarrolladores de Microsoft .NET Framework ya tendrá si ha experimentado con Visual Studio LightSwitch en absoluto. Otra tal herramienta es Ruby, que se utiliza en algunas de la automatización de construcción y herramientas. Otra vez, Ruby no será necesario en los servidores de producción una vez que se realiza el desarrollo, pero necesitará para comenzar y desarrollar en roble. Redactar este artículo, Ruby sólo lanzó la versión 2.0, pero los trabajos de la 1.9 versión igual (y, por mi dinero, me reconforta más que no voy a correr en un bicho raro 2.0 que nadie ha visto). Por último, como parte de su estilo rápido, interactivo, roble quiere ser capaz de flash mensajes en desde el sistema de compilación continua en el fondo, entonces roble quiere Growl para Windows, un sistema de notificación que hará estallar pequeños mensajes a usted en el escritorio (tales como MSN Messenger) cuando ocurren eventos — como una construcción exitosa o fracasada en el fondo. (Explorará la API Growl en una columna posterior, por cierto, porque es una herramienta útil a tener en el bolsillo.)

Una vez instalados los, hay un paso más que roble requiere: Los scripts de Ruby se utiliza la necesidad de algunos paquetes disponibles a través del gestor de paquete Ruby, gema. (Gema de rubíes era, por cierto, gran parte de la inspiración para NuGet y otros administradores, paquete idioma como nodo npm y Haskell Cabal.) Enciende el sistema del símbolo con Ruby en el camino y disparar este comando desde la línea de comandos:

C:\Projects\Exploration\Oak\Blog>gem install warmup

La gema de calentamiento (bit.ly/15e51Lx) es en realidad cómo obtendrá un proyecto roble comenzó — se tire hacia abajo de una plantilla que contiene todos los movimientos importantes piezas de roble requiere.

Ya puedes decir que esto es un largo camino de la "archivo | Nuevo | Proyecto"con el cual usted está probablemente familiarizado.

A partir de roble

Levantando un nuevo proyecto de roble y funcionamiento consiste en utilizar la gema de calentamiento desde la línea de comandos para bajar la plantilla de semilla desde su hogar en línea, así:

C:\Projects\Exploration\Oak\Blog>warmup https://github.com/amirrajan/loam Blog

Este proyecto seed, una vez se tiró a su máquina, contiene una escueto "weblog" implementación (y puse weblog entre comillas porque si esto se puede llamar un weblog, entonces mis aspiraciones de baloncesto de la NBA están vivos y bien, pese a que yo no puedo botar el balón, disparen o dunk). Una vez que el disco deje de dar vueltas, abra el archivo descargado Blog.sln solución de Visual Studio (así que tienes el ambiente confortable Visual Studio delante de ti). Entonces, desde la línea de comandos en el cual le expedirá el comando calentamiento ejecutar estos dos comandos:

C:\Projects\Exploration\Oak\Blog>rake
C:\Projects\Exploration\Oak\Blog>rake server

Rastrillo es la herramienta de Rubí "build", de la misma manera que "hacer" era la C/C++ construir herramienta durante tantos años; se emitirá una secuencia de pasos según un objetivo. El primer mando a construir la solución, y la segunda le dirá rastrillo a implementar el código en el directorio IIS Express a IIS Express. Ahora estará listo para aceptar solicitudes HTTP entrantes Puerto 3000 (por defecto).

Si tienes curiosidad ver la lista completa de los objetivos que soporta la Rakefile, llamada "rastrillo -T," y verá la salida de línea de comandos que se muestra en la figura 1. (Nota: Una lista mucho más larga y completa de objetivos está disponible con "rastrillo -D," para aquellos que quieran ver el texto completo de la ayuda para cada tarea).

Figura 1 lista de admitidos Rakefile objetivos desde la línea de comandos

C:\Projects\Exploration\Oak\Blog>rake -T
rake build                  # builds the solution
rake default                # builds and deploys website to directories iis...
rake deploy                 # deploys MVC app to directory that iis express...
rake export                 # if you have the nuget package oak installed, ...
rake reset                  # if you have the nuget package oak installed, ...
rake sample                 # if you have the nuget package oak installed, ...
rake server                 # start iis express for MVC app
rake simulate_load_balance  # simulate the web application as if it were lo...
rake stop_nginx             # stops nginx
rake sync[file]             # synchronizes a file specfied to the website d...
rake tests                  # run nspec tests
rake ui                     # run ui automation tests
rake ui_tests               # runs ui tests (without building)

Una vez que IIS Express está en marcha, poner en marcha la herramienta de construcción continua, compañero:

C:\Projects\Exploration\Oak\Blog>sidekick

Sidekick es en realidad un archivo por lotes que utiliza el compilador de C# de línea de comandos para compilar un programa .exe pequeño (sidekickapp.exe) que establecerá un observador del sistema de archivos para ver cuando los archivos en el directorio del árbol de cambio, y — si son archivos de código fuente — desencadenar un MSBuild para recompilar el proyecto. (Experimentos recientes de Glenn Block con Roslyn para crear un entorno de C# REPL, ScriptCS, podrían también usarse para lograr la misma cosa, más probable.)

Un lado rápido antes de ir más lejos: Aviso figura 1 cómo rastrillo ofrece una opción para ejecutar "rastrillo simulate_load_balance". Esto es — exactamente como su nombre lo indica, una simulación de cómo la aplicación comportará detrás de un balanceador de carga round robin sencillo, así que usted puede probar su aplicación (y, específicamente, cómo se comportará el estado de la aplicación) en un ambiente de equilibrio de carga sin tener que tocar el violín con máquinas virtuales (VMs), balanceador de carga de hardware o software y IIS. Es un complemento poco ingenioso para todo el proyecto que justifique casi aprendizaje roble completamente por sí mismo.

En este punto, roble está en marcha — y puede abrir un navegador para localhost:3000 para probarlo, como se muestra en la figura 2.

Browsing to localhost:3000 to Ensure Oak Is Running
Figura 2 navegación a localhost:3000 para asegurar roble está funcionando

Don' t se estrese por qué roble está diciendo ahora, eso será lo que empiezo a explorar a continuación. Por ahora, es suficiente para asegurar que el roble está activo y ejecutándose.

Solución de problemas

Si eso no funciona, puede ser que rastrillo no sabe donde su IIS Express está esperando sitios Web para residir; el Rakefile que establece roble utiliza un archivo de configuración, dev.yml, saber dónde instalar el ASP.NET-compilado de archivos. En ese archivo (en el mismo directorio que el archivo Blog.sln), establece las siguientes líneas para que coincida con lo que está en su sistema:

website_port: 3000
website_deploy_directory: c:\Prg\iisexpress\Blog
solution_name: Blog # just the name, no .sln extension
mvc_project: Blog # just the folder name,
  no .csproj extension
test_project: Blog.Tests # just the folder name,
  no .csproj extension
iis_express: C:\Program Files\IIS Express

En sistemas de 64 bits, por ejemplo, IIS Express se instalará en "C:\Program Files (x 86) \IIS Express."

Más que explorar

Hay mucho de roble aún por explorar — de hecho, el título de este artículo probablemente debió "Bellota", dado que esta es la semilla necesaria de la que nacerá el resto del marco (y serie de artículos). Roble tiene mucho aún por demostrar, a partir de su integración en la ASP.NET MVC desarrollo estructura tradicional (controladores, vistas y modelos) y llevando a través en las interacciones de su base de datos. Además, todavía tienes que ver lo que le compran todas esta herramientas adicionales (Ruby y Growl). Un rato más largo — la diversión comienza la próxima vez.

Feliz codificación!

Ted Neward es el director de Neward & Associates LLC. Ha escrito más de 100 artículos y autor y coautor de una docena de libros, incluyendo "profesional F # 2.0" (Wrox, 2010). Es un F # MVP y habla en conferencias alrededor del mundo. Consúltanos y mentores regularmente — llegar a él en ted@tedneward.com si usted está interesado en que lo vamos a trabajar con su equipo, o leer su blog en blogs.tedneward.com.

Gracias al siguiente experto técnico por su ayuda en la revisión de este artículo: Amir Rajan (creador del proyecto roble)