viernes, 3 de abril de 2009

ASP.NET MVC 1.0


Recientemente ha salido la primera release de ASP.NET MVC. Es una extesión para ASP.NET con la que se facilita de sobremanera la creación del páginas web siguiendo el patrón Modelo-Vista-Controlador, de forma similar a los populares Ruby On Rails y Django.

Esta extensión ha sido desarrollada por el propio creador de ASP.NET, Scott Guthrie y ha publicado la extensión bajo licencia de código abierto (MS-PL).

Links
NombreEnlace
TutorialIr
ASP.NET MVC 1.0Descargar
Más informaciónIr

miércoles, 1 de abril de 2009

Guerra de navegadores

Tras la salida de IE8, creé una entrada en mi blog que quería compartir, para que pudieseis opinar, ya que creo que la guerra de navegadores que existe actualmente, nos terminará afectando de una forma o de otra.


Parece que ser que, además de la típica guerra de sistemas operativos, estamos ante otra guerra de software, los navegadores web.

El hecho que Google empezase a desarrollar su propio navegador (chrome), daba un índicio de la importancia que va a tener el navegador web en un futuro no tan lejano como nos puede parecer. Y es que la tendencia de hacer todo vía web (no será descabellado decir que en algún momento veamos una S.O. web) está haciendo que las páginas web requieran navegadores web con más capacidades y con mejores implementaciones.

Un factor muy determinante para esta guerra va a ser la implementación del motor de javascript de cada uno de los navegadores, Google con V8, Mozilla con TraceMonkey, Apple con SquirrelFish y sin olvidarnos de IE8 y de Opera 10. En este aspecto, parece que Google lleva la delantera sobretodo desde que sacará la versión 2 de su motor, aunque no hay que no haya mucha ventaja con Mozilla.

Por otro lado, tras la publicación de la versión 8 de IE, se menciona en muchos análisis que IE no ha evolucionado, con tanto empeño como sus competidores, su motor de javascript, a lo que Microsoft responde que no sólo hay que mejorar y buscar la rapidez en el intérprete de javascript, sino que hay que evolucionar los motores de renderizado (en el caso de IE, puede ser la última versión con Trident), gestión de memoría, etc. Razón no les falta, pero precisamente creo que Trident no es la respuesta para el renderizado, sin embargo cierto es que para IE8.1 se va a dar la posibilidad de elegir con que motor de renderizado se quiere procesar una página pudiendo elegir Gecko y Webkit, además del propio Trident.

Además de la lucha de motores de javascript, parece que hay una nueva tendencia en la implementación de los navegadores. Mientras que hasta ahora, los navegadores eran un único proceso en el que se abrían multiples hilos (normalmente, uno por página abierta en el caso de los navegadores con pestañas), está cambiando hacía una tendencia multiproceso en el que cada página es un proceso independiente. Esto tiene un punto negativo, y es que inicialmente los recursos de memoria son mayores, pero se gana en un factor que creo que es más importante, seguridad, ya que si un proceso se compromete, no compromete al resto de procesos.

Por último, hay otros factores que son igualmente importantes, por ejemplo la capacidad de expansión mediante addons o similares, y en este sentido Mozilla tiene toda la ventaja. Sin embargo y con la salida de IE8, se ha publicado que Microsoft tiene la intención de soportar los addons de Firefox en IE8.1. Esto abre a IE8 un sin fin de software de gran utilidad, no me imagino firebug en IE8. Gran idea la de Microsoft.

Yo por mi parte sigo con mi querido Firefox esperando acontecimientos, pero sin cerrar la puerta a nada.

martes, 31 de marzo de 2009

Mono 2.4 y Monodevelop 2.0

El 30 de Marzo salió a la luz la nueva versión de Mono y de Monodevelop. En el caso de Mono ya vamos por la versión 2.4, mientras que en el caso de Monodevelop es la tan esperada versión 2.0.

Mono 2.4 trae consigo una serie de mejoras que podéis mirar aquí. Las más destacables son:
  • Nuevo JIT incluido y eliminación del anterior.
  • Soporte para ASP precompilados.
  • Soporte para SIMD.

Por su parte Monodevelop 2.0 trae nuevas funcionalidades, algunas de ellas muy esperadas. Aquí están todas, pero de todas ellas podemos destacar:
  • Debugger integrado.
  • Soporte nativo para MSBuild.
  • Soporte para autocompletado para C# 3.0.
  • Code folding.
  • Autocompletado para XML.
  • Soporte de los modos de vi.

Más información de Mono en http://mono-project.com

miércoles, 18 de marzo de 2009

Gaia Ajax 3.5

Recientemente se ha publicado la versión 3.5 de Gaia Ajax. Para los que no conozcan Gaia, es un framework que proporciona multitud de controles web para .Net haciendo uso de Ajax.

Desde mi humilde opinión, este framework mejora con creces el framework proporcionado por Microsoft. He realizado algún trabajo con este software y he de decir que me sorprendió gratamente, especialmente por la facilidad de uso, ya que lo que Gaia Ajax nos proporciona son los mismos controles web que existen en ASP.Net pero sobreescritos de forma que los postback son ejecutados mediante Ajax, haciendo que nos olvidemos de esa tarea.

Gaia Ajax se puede utilizar de forma gratuita bajo licencia GPL, es decir que nuestro proyecto debe tener licencia GPL. Para otros casos, siempre se puede adquirir una de las licencias que nos proporcionan en Gaiaware.

Para más información.
Página de Gaiaware
Ejemplos de Gaia Ajax
Descargas

lunes, 2 de marzo de 2009

.NET no es sólo Microsoft

.NET no es sólo Microsoft, sino también Mono (www.mono-project.org) que hace mucho bien por la difusión de la plataforma inicialmente desarrollada por Microsoft.

No quería empezar de otra forma el blog, ya que creo que hay una mala idea concebida de lo que es .NET, muchas veces fomentada por la asociación que se hace a Microsoft, y las críticas ejercidas desde mundo OpenSource.

.NET no es:
  • una plataforma de desarrollo para Microsoft Windows.
  • una plataforma en la que encontramos Microsoft-dependencia.
  • una plataforma cerrada en la que sólo encontramos productos de pago.


Cierto es que no existe compatiblidad 100% entre ambas plataformas, pero son pocas las incompatiblidades que nos podemos encontrar. Es más quitando las importaciones de ciertas librerías desarrolladas en exclusiva para Windows, es decir importaciones de tipo COM, que nos será imposible portar a otros sistemas, Mono y .NET son compatibles.

Recientemente Mono liberó su Release 2.0, es decir, tratamos con un producto con cierta madurez, sin llegar a los años de experiencia y vida de .NET, pero con bastante estabilidad y rendimiento, dignos de ser valorados y estudiados.

Desde aquí sólo quiero potenciar que se desarrolle código para ambas plataformas, con el fin de unificar y de no limitar un desarrollo a un entorno cerrado.

Conexión a base de datos por DbProviderFactory


El acceso a las bases de datos es una de las principales y primeras tareas a realizar por el software. Muchos de los proyecto atacan a la base de datos instanciando directamente al driver de base de datos proporcionado por el fabricante, de forma que en caso de querer cambiar de base de datos nos vemos obligados a cambiar el código de la aplicación, recompilar y volver a distribuirlo.

Para poder evitar esto, .NET ó Mono nos proporciona métodos para poder crear la conexión a base de datos mediante lo que se denomina factoría de base de datos. Consiste en que mediante una factoría, es capaz de instanciar cada uno de los posibles tipos de base de datos que estén registrados en el GAC o en el path de la aplicación.

Para la explicación, nos apoyamos en un ejemplo para una base de datos Postgresql.

Primero se necesitará editar el archivo de configuración de la aplicación, en el caso de una aplicación web, será el web.config y en el caso de una aplicación de ventanas, será el app.config.

En este caso nos vamos en un app.config.

app.config
<configuration>
<system.data>
<dbproviderfactories>
<add name="Npgsql Data Provider" invariant="Npgsql"
description=".Net Framework Data Provider for Postgresql"
type="Npgsql.NpgsqlFactory, Npgsql, Version=2.0.2.0,
Culture=neutral, PublicKeyToken=5d8b90d52f46fda7">
</add>
</dbproviderfactories>
</system.data>
</configuration>


En esta configuración estamos indicando que cuando llamemos a la factoría con el nombre Npgsql, automáticamente instanciará las clases de conexión desde el driver de Postgresl. Todas las clases instanciadas se pueden manejar o bien mediante el interfaz genérico (System.Data.IDbConnection para las conexiones) o por las clases comunes de ADO.NET (System.Data.Common.DbConnection para las conexiones).

Para crear una conexión desde la factoría de nuestro ejemplo haremos:

string sFactory = "Npgsql";
DbProviderFactory dbFactoria = DbProviderFactories.GetFactory(sFactory);
DbConnection dbConexion = dbFactoria.CreateConnection();


Con esto ya tendríamos creado nuestro objeto conexión para atacar a la base de datos.