Saltar al contenido

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript... y lo que venga ;)

17 años online

el blog de José M. Aguilar

Inicio El autor Contactar

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web
ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript...

¡Microsoft MVP!
Mostrando entradas con la etiqueta webmatrix. Mostrar todas las entradas
Mostrando entradas con la etiqueta webmatrix. Mostrar todas las entradas
martes, 2 de noviembre de 2010
Hace unos días contestaba a una cuestión sobre la creación de helpers en Razor, y mostré un ejemplo como el siguiente:

image

Se trata de una forma puramente funcional de crear un helper: creamos una función que retorna una cadena de texto, y como en el ejemplo anterior, podemos invocarla desde cualquier parte de la vista.

Sin embargo, Razor dispone de otro tipo de helpers, llamados helpers declarativos, que ya fueron descritos hace algún tiempo por Scottgu, aunque hasta la Beta de MVC 3 no hemos podido verlos en  funcionamiento.

Los helpers declarativos son funciones que permiten introducir en su cuerpo tanto código como marcado HTML, al igual que se hace sobre la propia página o vista, lo que permite construcciones mucho más legibles.

Su codificación es muy similar a de las funciones, salvo en que en este caso no tienen ningún tipo de retorno, y son precedidas por @helper, como se observa a continuación:

Ejemplo de helper declarativo
Publicado en: Variable not found.
lunes, 11 de octubre de 2010
Como sabréis, hace unos días pudimos asistir y participar en el alboroto digital que provoca la presentación de nuevos productos y versiones por parte de Microsoft. Una tarde realmente divertida, en la que el aluvión de mensajes, análisis y comentarios vía Twitter hacía difícil concentrarse en algo ajeno a este festival.

Y todo se debía a la publicación, prácticamente de forma simultánea, de la primera beta de ASP.NET MVC 3, Nupack, y WebMatrix beta 2, que demuestra que la familia de tecnologías para Web sigue madurando y creciendo, y que existe alguna conspiración cuyo objetivo final es volvernos locos a todos ;-)

Vamos a comentar por encima qué nos traen estos lanzamientos.

ASP.NET MVC 3 Beta

ASP.NET MVCContra todo pronóstico, ASP.NET MVC 3 Beta rompe el patrón seguido en las versiones anteriores, en las que el ciclo de desarrollo prácticamente rondaba el año, y en cuya secuencia habían sido incluidas hasta el momento varias previews y algunas betas antes de llegar al producto final.

En esta ocasión, la primera preview de ASP.NET MVC 3 apareció unos tres meses después de la versión 2, y la beta dos meses más tarde.

Como tiene que haber gente para todo, hay quien se queja de que esto puede significar que a Microsoft ha dejado de interesarle el feedback de los desarrolladores. En mi opinión, esto no tiene sentido, y no hay intención maquiavélica por detrás: simplemente, esta entrega no es tan compleja y amplia como la primera versión, donde se partía de cero, o su incremental hacia la versión 2. Aunque algunas de las novedades que se vislumbran son bastante interesantes, no se han introducido características realmente rompedoras o que requieran un gran tiempo de pruebas o una gran retroalimentación, y además, parte de ellas son compartidas con otros productos como WebMatrix.

Otro tema distinto, y creo que criticable, es la velocidad con la que se están sucediendo las distintas versiones del producto. Hace unos días comentaba vía Twitter que es difícil construir sobre una infraestructura que está en continuo movimiento; a veces las cosas hay que dejarlas reposar un poco para que asienten y calen los conceptos, se cree comunidad, software de referencia o documentación, que, desde mi punto de vista, son algunos de los handicaps actuales frente a la adopción del framework ASP.NET MVC por parte de los desarrolladores.

Pero bueno, en cualquier caso, para los que ya estamos enganchados a ASP.NET MVC, la llegada de una nueva revisión es siempre una buena noticia. La beta que podemos descargar hoy (ojo, sólo para .NET 4) ya incluye la mayoría de características que tendremos disponibles cuando aparezca la versión final, para la que, como se deja entrever en el roadmap del producto, podría faltar únicamente una release candidate, en la que aparentemente no serán incluidas muchas más novedades.

A modo de resumen, las características que a día de hoy parece que traerá el futuro ASP.NET MVC 3 son, principalmente:
  • Mayor flexibilidad para el uso de motores de vistas alternativos a WebForms.
  • El nuevo motor de vistas Razor, compartido por la tecnología WebPages. Eso sí, aún no está disponible intellisense en el editor de Visual Studio para estas vistas.
  • Un soporte para inyección de dependencias muy mejorado respecto a las versiones anteriores.
  • Registro de filtros globales durante la inicialización de la aplicación.
  • Nuevos tipos de resultados (ActionResults) de uso común.
  • Mejoras en el sistema de validación, soportando nuevos atributos,  generación de scripts en cliente de forma más sencilla, y nuevas fórmulas para la inclusión de validación no intrusiva.
  • Soporte para funcionalidades Ajax no intrusivas.
  • Inclusión de capacidad de binding sobre JSON.
  • Nuevas vías para enviar información del controlador a las vistas, de forma dinámica.
  • Helpers para la realización de tareas de uso frecuente, como la generación de grids, charts, o manipulación de imágenes.
  • Control individual sobre la validación de la petición (vaya, ahora que había encontrado un truquillo para conseguirlo).
  • Incluye el gestor de paquetes Nupack, que comentaré algo más abajo.
No sé si me dejaré algo por detrás, pero de todas formas ya iré desgranando estos temas en futuros posts.
Para conocer las novedades de la beta 2 respecto a la Preview, te recomiendo que leas el post de Eduard Tomás, escrito con el producto aún humeante, recién salido del horno ;-)

¿Nupack? ¿Eso qué es?

Nupack Otra de las grandes estrellas de la tarde del miércoles fue Nupack, un gestor de paquetes open source que está llamado a ser una herramienta imprescindible para los desarrolladores. La versión presentada es bastante preliminar, CTP1, pero funciona muy bien y es útil para empezar a conocerla.

Por hacernos una idea rápida sobre el nuevo producto, podríamos considerar que Nupack es a librerías y componentes lo que Web Platform Installer a aplicaciones y plataformas. Se trata de un gestor de paquetes integrado en Visual Studio que permite obtener componentes open source (y, lo que es más interesante, las dependencias de éstos), e incluirlos en nuestros proyectos de forma muy sencilla.

Y con “incluirlos” no me refiero a descargarlos y dejarlos en un directorio para que nosotros hagamos el resto; Nupack lo descarga y extrae sobre una carpeta de uso interno, añade las referencias necesarias a nuestro proyecto, y, cuando es necesario, añade archivos y modifica educadamente los ficheros de configuración del proyecto.

Los paquetes disponibles en Nupack se obtienen de una serie de repositorios de software open source, por supuesto configurables. En estos momentos hay ya más de 70 paquetes entre los que se encuentran de uso más frecuente, aunque supongo que el número continuará aumentando.

Para añadir un componente a un proyecto basta con abrir el menú contextual sobre las referencias y seleccionar la opción “Add Package Reference”, que nos llevará a un cuadro de diálogo como el mostrado a continuación, que nos permite buscar e incluir los paquetes de forma más visual:

Añadiendo un paquete con Nupack
También podemos utilizar Nupack desde una línea de comandos incluida en Visual Studio (Package Manager Console). La siguiente captura muestra lo simple que resulta añadir un componente como T4MVC a un proyecto utilizando la consola:

Añadiendo T4MVC a un proyecto
Esta última fórmula, además de resultar muy cómoda, está diseñada para ser extensible, por lo que es posible descargar e instalar paquetes que amplíen sus funciones, como MvcScaffold, que añade a la consola órdenes para generar código de vistas más rápidamente que utilizando su equivalente GUI, y de forma similar a como se hace en otras plataformas como Ruby.

Nupack se incluye “de serie” con ASP.NET MVC 3 Beta, por lo que si has instalado éste último, ya podrás disfrutar de esta nueva herramienta. Si no, puedes descargarlo desde la página del proyecto Nupack en Codeplex.

Si quieres utilizar Nupack desde la consola de comandos, debes tener instalado previamente PowerShell 2.0. En caso de necesitarlo, puedes bajarlo, por ejemplo, con Web Platform Installer.

Un último detalle: Nupack, aunque se haya presentado así, unido a otros lanzamientos de la pila de tecnologías Web de Microsoft, no está ligado a éstas. Se trata de una herramienta independiente, de la que podremos sacar partido en todo tipo de proyecto.

En resumen, desde mi punto de vista se trata de una herramienta excelente, presente en otros ámbitos y tecnologías, y que ya venía haciendo falta a Visual Studio y los desarrolladores .NET. Si quieres saber más sobre el tema, no te pierdas el gran post de Scott Hanselman explicando su uso.

WebMatrix Beta 2

WebMatrix Hace unos meses, al aparecer la primera beta ya describí mis primeras impresiones sobre WebMatrix, por lo que no voy a extenderme demasiado ahora.

Para los despistadillos, recordar que WebMatrix es un conjunto de herramientas y plataformas destinadas a crear aplicaciones basadas en el paradigma de “orientación a página” (como ASP clásico o PHP, entre otros), e incluye:
  • IIS 7 Express, una edición reducida del servicio de publicación web.
  • SQL Server Compact, un motor de datos capaz de ejecutarse en el proceso de la aplicación que lo utiliza, por tanto sin necesidad de instalar software alguno en servidor.
  • Un entorno de desarrollo, compuesto por:
    • un editor de texto plano bastante simplillo para crear y modificar las páginas,
    • un diseñador de bases de datos,
    • herramienta de generación de informes SEO del sitio,
  • Integración con un extenso repositorio de software libre (.NET y PHP, principalmente), del que es posible descargar aplicaciones para personalizarlas o construir sobre ellas de forma rápida.
  • Tecnología WebPages, un nuevo modelo de desarrollo sobre ASP.NET que permite la creación de sitios web utilizando el nuevo motor Razor.
Esta segunda Beta trae algunas novedades interesantes relativas a WebPages y Razor.

Se ha incluido un gestor de paquetes basado en web, que permitirá añadir nuevos helpers y componentes al sistema. Para ello, basta con acceder desde el navegador a la carpeta “_Admin” en el raíz del sitio web; la primera vez nos solicitará la introducción de una contraseña que deberemos utilizar en adelante. Una superado este trámite, podremos instalar los paquetes desde la misma página:

Gestor de paquetes en Webmatrix
También han sido añadidos nuevos helpers, renombrado algunos métodos y clases existentes, y se ha introducido validación de peticiones a nivel de campo, al igual que a MVC 3. En definitiva, cambios que podríamos considerar de menor calado.

Puedes leer más en el documento Readme de WebMatrix beta 2.

En fin, que…

… de nuevo nos encontramos ante una oleada de tecnologías y herramientas, algunas bastante destacables, a las que debemos ir haciendo hueco en nuestra mochila y a las que conviene ir echando el ojo de vez en cuando para poder seguirles el ritmo.

Sin duda, diversión asegurada. :-)

Publicado en: Variable not found.
miércoles, 7 de julio de 2010
WebMatrix Ayer mismo ScottGu anunciaba la publicación de la primera beta de WebMatrix, una curiosa, y por mi parte inesperada, solución integrada cuyo objetivo es facilitar el acceso al desarrollo de aplicaciones Web con tecnologías Microsoft, y principalmente, según parece, al desarrollador novel o procedente de otras plataformas.

WebMatrix se puede descargar de forma gratuita desde este enlace, y la instalación se realiza en unos minutos. Una vez completado el proceso, no requiere ningún tipo de registro del usuario, ni obtención de claves, simplemente funciona.  Instalación con WebPI
¿Y qué vamos a encontrar tras la instalación? En primer lugar, hay que destacar que WebMatrix no es sólo una herramienta de desarrollo; podríamos decir que es un pack que incluye tanto las herramientas como lStack Webmatrixas plataformas necesarias para desarrollar, probar y desplegar aplicaciones para la web: IDE, repositorio de proyectos open source de partida, motor de datos, servidor web, y un nuevo framework de desarrollo sobre ASP.NET. Y todo ello integrado de forma muy elegante.

Veamos en mayor detalle cada uno de estos elementos.

El entorno WebMatrix

Una vez instalado el paquete, en nuestro menú de aplicaciones encontraremos un acceso directo a WebMatrix, que actuará como centro de control para el resto de sistemas integrados en el paquete, y como nuestro entorno de desarrollo.

Una vez iniciado, a la hora de crear proyectos, podemos hacerlo desde cero o hacerlo desde distintos puntos de partida:
  • partiendo de plantillas suministradas con WebMatrix, entre las que se encuentran un directorio de enlaces, un catálogo simple de productos o una galería fotográfica, entre otros.

    Plantilla de proyecto: Directorio de Enlaces
  • crearlas partiendo de algún software existente en una galería de software libre, la misma utilizada por Web Platform Installer. Para ello, sin salir del entorno, podremos seleccionar la plataforma deseada, y será descargada e instalada automáticamente. Es destacable que, además de la aplicación elegida, se instalarán también las dependencias requeridas (por ejemplo PHP, o el motor MySQL).

    Crear un proyecto desde la Web Gallery
Ya sobre un proyecto abierto, el uso de WebMatrix se estructura en torno a cuatro espacios de trabajo, Site, Files, Databases y Reports, que se describen a continuación:
  • Site, desde el que se pueden consultar y modificar aspectos generales sobre el proyecto, y acceder a herramientas como el gestor de datos, el generador de informes del sitio web, un visor de peticiones, o aspectos relativos al despliegue. Incluso es posible acceder a ofertas de alojamiento de nuestros sitios Web.
  • Files, que da acceso a la estructura de carpetas y a los archivos de nuestro proyecto, y desde donde es posible crear, editar y añadir contenidos. En la siguiente captura se muestran algunos tipos propuestos al añadir un nuevo fichero al proyecto:imageComo editor de código el entorno se queda bastante cortito, no tiene nada que ver con cualquiera de las ediciones de Visual Studio. De hecho, salvo el coloreado de código (disponible para HTML, CSS, Javascript, PHP, y ASP.NET), poco tiene que envidiarle el block de notas de toda la vida: nada de ayudas, autocompletado, intellisense o similares, dado que la orientación de WebMatrix es distinta, bastante más simple en este aspecto, a entornos de desarrollo profesionales. Por tanto, para desarrollar en serio debes pasar a Visual Studio, incluso en su versión Express, que superarán en mucho a esta herramienta.

    Sin embargo, puede ser suficiente para desarrolladores que simplemente deseen retocar aplicaciones basadas en las plantillas suministradas, o software libre, que puede ser descargado directamente desde la herramienta, o usuarios que estén iniciándose en esta tecnología.

  • Databases, desde donde es posible gestionar las bases de datos utilizadas por el proyecto. En este momento dispone de soporte completo para SQL Server, MySQL y, otra gran novedad en WebMatrix, la nueva edición de SQL Server Compact Edition, que comentaré un poco más adelante.image
  • Reports, una herramienta que nos permite generar informes SEO sobre el sitio Web, capaz de analizar el sitio web de la misma forma que lo hace el toolkit SEO para IIS, para indicarnos aspectos errores y aspectos mejorables vistas a la optimización en buscadores.Informes SEO

IIS Express

ScottGu anunció hace unos días la próxima disponibilidad de IIS Express, un intento de mezclar la potencia de IIS 7.5 y la facilidad de uso de los servidores de desarrollo que estamos acostumbrados a utilizar desde Visual Studio. Lo mejor de los dos mundos.

image Y aquí lo tenemos. Los sitios web abiertos desde WebMatrix son ejecutables directamente a través de este servidor, que iniciará al abrir el proyecto y quedará minimizado en el área de notificaciones de Windows.

Desde este icono podemos consultar las aplicaciones actualmente en funcionamiento en el servidor, consultar información básica sobre ellas, como la ruta desde la que se está sirviendo, resetearlas, y algunas cosas más.

El comportamiento de las aplicaciones sobre IIS Express es idéntico a como sería en los servidores de producción con el correspondiente IIS 7.5, puesto que internamente se utiliza el mismo motor, evitándonos así la necesidad de contar con permisos de administrador, tener el servicio corriendo continuamente, o el engorro de configurar cada aplicación (permisos, pool de aplicaciones, etc.).

Desde el entorno de WebMatrix también podemos iniciar, parar, o resetear el servidor Web, así como, y esto es un detalle de lo más interesante, consultar en tiempo real las peticiones que se están produciendo a nuestra aplicación, muy útil en depuración:
image

SQL Server Compact Edition 4

Otra de las grandes novedades introducidas en WebMatrix fue también presentada hace unos días por el mismo Scott Guthrie: SQL Server Compact Edition (SQL CE), una versión reducida del motor de bases de datos de Microsoft diseñada para funcionar en el interior de aplicaciones ASP.NET.

SQL CE es un motor ideado para ser la forma más fácil de incluir bases de datos en aplicaciones, eliminando los altos requisitos asociados a ello: es gratuito, y no requiere ningún servicio en el servidor, lo cual reduce los costes finales de alojamiento.

¿Y cómo es posible esto? Pues en primer lugar, haciendo que el motor sea basado en archivo; para mover datos entre un sitio y otro bastará con copiar el fichero de datos, como si se tratara de un Access. Asimismo, el motor se distribuye con la aplicación, y se ejecuta en memoria junto con ésta. De hecho, para desplegar un proyecto que use esta solución como repositorio de datos bastará con copiar unas DLLs en el directorio de binarios de la aplicación, y lo tendremos todo listo.

Como consecuencia, nada que instalar en servidor, ni se requieren privilegios especiales para ejecutarlo.

A nivel de programación es compatible con las API de acceso a datos de .NET, lo que quiere decir que no debemos encontrar problemas para utilizar tecnologías de mayor nivel como Entity Framework u otros ORMs. Sus únicas limitaciones vienen dadas por el tamaño de fichero máximo admitido (en estos momentos 4GB, aunque se prevé subir esta cifra) y por la ausencia de determinadas características como los procedimientos almacenados, o triggers, entre otros.

Y aunque está claro que el rendimiento no será comparable al de otras ediciones de SQL Server, y que no podrá aguantar una gran carga de usuarios, es posible upgradearla (a Express, Server o incluso Azure) sin tocar una línea de código. De hecho, desde el propio entorno de WebMatrix se dispone de herramientas para realizar la migración:

Migración de una base de datos SQL CE a SQL Server
En WebMatrix existe una integración total con este nuevo motor de datos. Sin salir del entorno es posible agregar bases de datos al proyecto, editar su estructura, acceder a los datos, o manipular su diseño y propiedades:

SQL Server CE en WebMatrix

ASP.NET Web Pages & Razor

ASP.NET Web Pages es un nuevo framework de desarrollo, presentado con WebMatrix, destinado a la creación de aplicaciones sencillas para la Web. Y con “framework nuevo”, me refiero a eso precisamente… es diferente a WebForms, y también diferente a la alternativa ASP.NET MVC:
  • no soporta controles de servidor
  • no mantiene el estado de la vista (ViewState)
  • no hay eventos
  • no hay code-behind
  • no hay separación de capas arquitectural, como en MVC
  • no hay convenciones de nombrado o localización
  • no hay tabla de rutas...
Lo único que hay es la página, como en los viejos tiempos.

De hecho, al echarle un vistazo, no se puede evitar la sensación de estar ante algo con cierto aire retro, muy parecido a la programación con ASP clásico (sin .NET), PHP, JSP u otros lenguajes basados en el concepto de “todo está en la página”, aunque, eso sí, apoyado en el framework .NET, con las ventajas que ello conlleva.

Programación con ASP.NET Web Pages
ASP.NET Web Pages Dispone de un API propio (todavía algo escaso de documentación, estamos en Beta), con un gran número de funciones y helpers, algunos de ellos muy potentes, para facilitarnos el desarrollo. Por citar sólo algunos ejemplos, tendremos acceso a funcionalidades de alto nivel de Twitter o Facebook, inclusión directa de vídeos, validaciones con ReCaptcha, o manipulación de imágenes, utilizando helpers dentro de la propia página.

Por defecto utiliza el motor de vistas Razor, uno de los previsibles grandes cambios del próximo ASP.NET MVC 3, donde también será el ViewEngine por defecto.

Razor está diseñado para integrarse de forma más natural en el código de las páginas, siendo más conciso y expresivo que el utilizado hasta ahora. Pero sin duda, lo más destacable de este motor de vistas es que cambia la forma en la que incluimos código en el interior del marcado de una página: los clásicos bloques <%%> que usamos desde hace muchos años y que contribuyen a dificultar la lectura son sustituidos por una nueva estructura, que se apoya en un parser mucho más inteligente y sensible al contexto, y que nos permite introducir código como el siguiente:

Código fuente Razor
Estas dos tecnologías, ASP.NET Web Pages y Razor, aunque pueda parecer lo contrario, son totalmente independientes entre sí, aunque se combinen por defecto en WebMatrix. De hecho, existirán otros motores de vistas para Web Pages, y Razor podrá ser utilizado en otros contextos, como el framework MVC.

Destaca también el hecho de que Razor ni siquiera depende del contexto Web para funcionar, lo que deja la puerta abierta a su inclusión en otros tipo de aplicaciones, o incluso a la realización de pruebas unitarias sobre la vista.

¿Conclusiones?

El concepto WebMatrix, como suma de plataformas y herramientas que ofrecen una vía rápida para la creación o personalización de aplicaciones, sobre todo si están basadas en paquetes existentes como software libre, me parece muy interesante.

Como entorno de codificación es obvio que se queda muy corto. Pero claro, tampoco habría tenido sentido para Microsoft crear un nuevo IDE, que dispone ya de Visual Studio y su magnífica versión Express, que también es gratuita. Como comentaba anteriormente, este entorno sirve para los casos en los que también te podría valer el Notepad, poco más o menos.

Sin embargo, sí me ha parecido muy correcta la integración en el entorno de las herramientas de gestión de bases de datos, el servidor web integrado, el sistema de deployment y el analizador SEO, y la pasmosa facilidad de instalación y uso del conjunto. Realmente, en sólo unos minutos puedes descargar un software open source, probarlo en local y subirlo a tu ISP, casi sin conocer lo que hay por detrás.

Para noveles o ajenos a tecnologías de Microsoft es una vía interesante para acceder a ella, aunque sea a través de un camino que no existía hasta ahora, y con un destino distinto a los conocidos hasta el momento, y que tendrá que demostrar su validez en la práctica. Lo que es seguro es que la sencillez de la propuesta hará que la curva de aprendizaje sea relativamente suave.

También lo considero interesante para los que ya llevamos algunos años en esto, pues materializa la posibilidad de dar un vistazo a varias novedades de calado que ya se venían comentando desde hace algún tiempo, como Razor, IIS Express, o SQL CE, y que seguro que entrarán en breve a formar parte de nuestras herramientas de uso habitual.

Respecto a ASP.NET Web Pages, en cierto sentido puede entenderse como un paso atrás… siempre que estés delante, claro ;-). Hay muchos desarrolladores que todavía luchan a diario con ASP clásico o cualquier otra plataforma de las mismas características, a los que saltar a esta tecnología seguro que costará menos trabajo que pasar a Webforms, pues las diferencias son mucho menores.

Enlaces:
Publicado en: Variable not found.