El software libre no es solo una panda de pirados, que no van mas alla de tirar lineas de comandos, si no comunidades de mentes inquietas, y al ser .NET «el primer gran framework» y ser un buen producto, la comunidad se ha creado alrededor. Ahora vamos algo mas alla del framework, entrando en la vida que nace cerca de el.
Dada la potencia que nos da .NET nacen herramientas a su alrededor para seguir complementandolo, de las cuales tembien deberiamos ser grandes conocedores (al menos de algunas).
- NHibernate, un ORM, nos permite obtener una capa de abstraccion de la BDD, basicamente lo que hace es de cada tabla de la BBDD creamos un objeto con las funciones que vamos a usar contra el, insert, update, delete, dameTodosLosImpares, ……. y en vez de tener que tratar directamente con la BDD, nos olvidamos de tener que abrir, cerrar conexiones, la sentencia SQL,. ….. y todo se hace como si fuera un objeto mas.
Podriamos decir que es «un paso para humanizar las BBDD relacionales».
- Nvelocity, Para la generacion de codigo en base a plantillas, en muchos casos la generacion de codigo es la misma cambiado unos nombre, por lo tanto con herramientas como estas nos podemos quitar muchas horas de trabajo.
VelocityEngine engine = new VelocityEngine();
ExtendedProperties properties = new ExtendedProperties();
properties.AddProperty("resource.loader", "assembly");
properties.AddProperty("assembly.resource.loader.class", "NVelocity.Runtime.Resource.Loader.AssemblyResourceLoader, NVelocity");
properties.AddProperty("assembly.resource.loader.assembly", "StencilFormatter");
engine.Init(properties);
- NUnit,
es un framework para la realizacion de pruebas unitarias, altamente
recomendadas, ya que para algo estan los ordenadores no?? para que
trabajen ellos en vez de nosotros.
Port de JUnit
(para Java) y posee internamete el NUnit.Forms para realizarlas contra
aplicaciones Windows Forms y NUnit.ASP en el testeo de paginas web.
using NUnit.Framework;
[TestFixture]
public class EjemplodeWikipediadeNUnit
{
[Test]
public void TestMultiplication()
{
Assert.AreEqual(4, 2*2, «Multiplication»);
}
}
- NAnt, es un automatizador de compilaciones, para poder domir mientras que se compila ese macroproyecto. Gran herramienta en el pasado, aunque de capa caida por culpa de su principal rival, la herramienta ofical para esto de Microsoft: MSBuild, la cual tiene una excelente integracion con Visual Studio.
Auguro un renacer de la mima, eso si, mas cercano de los proyectos Mono que de los de .NET.
No me gustaria cerrar este post sin mencionar otros proyectos como Log4NET y Castle Project, que aunque no pertenezcan al grupo de las N* son potentisimas, y con la necesidad de dedicarles un articulo individual a cada una.
Excelente post!. Trabajar con NHibernate, al inicio fue un rollo!, pero la cosa me anda bien, ya que ahora podemos contar con su última versión que permite trabajar facilmente con SQL Server 2005, cosa que antes teniamos que hacer maravillas, ya que estaba contábamos para SQL Server 2000, y no SQL Server 2005.
Saludos,
NHibernate es realmente un proyecto muy interesante, pero con la llegada de linq, lo veo poco util usarlo.
Que os parece?
LINQ no ha conseguido desacoplar el acceso de datos de lo que es el interfaz a los motores que hay debajo de ello. Además, la implementación de clases que utiliza no es de lo mejor, teniendo en cuenta que todo lo plasma en un mismo objeto de acceso a la base de datos.
No estoy de acuerdo con este tipo de herramientas que aumentan el codigo sin conocimiento y haciendo de un proyecto un macroproyecto por el simple hecho de hacer mas facil el trabajo a los desarrovagodores, olvidandose de la eficiencia de las aplicaciones y utilizando sql dinamico como unico recurso, incluido ese no tan maravilloso invento de LinQ para bases de datos.
Hola. Uso Hibernate y Velocity (en su versión original y para .NET :-)) hace ya unos tres años. He estado muy satisfecho con su desempeño. Ahora, tengo un problema bien gordo, a ver si alguien me ayuda.
Resulta que trabajo en un proyecto que usa ambas tecnologías simultaneamente pero parece que no pueden convivir. NHibernate depende de log4net 1.2.9 y NVelocity depende de log4net 1.2.0. Al incluir referencias en mi proyecto hacia NH y NV me encuentro con el lío de que al ejecutar la aplicación: si uso log4net 1.2.9, NV da error; y si uso log4net 1.2.0, NH me da error. Esto radica en que tanto NV como NH «buscan» sus versiones específicas, son strong-named assemblies.
la grandeza de hibernate es que a partir de una utilidad de codigo abierto, sun ha creado un standard que ahora esta implementado en hibernate, toplink y otros cuantos, y por supuesto se puede utilizar en varios ides, es decir puedes utilizar el que quieras. linq es la copia de esto pero siguiendo con el rollo microsoft, por ejemplo para sql server funciona pero y para mysql? y solo funciona en visual studio por supuesto…
en cuanto al que habla de la eficiencia, por supuesto es desaconsejable utilizar sql dinamico y por supuesto en ningún libro de hibernate lo verás recomendado, pero eso te permite cambiar de base de datos, y un prototipado más rápido.
en cuanto a lo las strong-named assemblies, seguro que hay una forma de generar mediante el fuente sin el snk, ahora mismo no recuerdo como pero seguro que en los foros de ambas librerías te lo explican mejor.