Lo mejor de 2009

Como cada año, este post hace un repaso de lo más leído de 2009. La verdad que ha sido un año de altibajos, con pocas entradas pero en mi opinión de mejor calidad y más específicos y útiles (para el que le sirvan) que los publicados anteriormente. Además he introducido algunos posts más en inglés con temas que creo que no estaban explicados en ningún sitio.

El más leido de 2009, NHibernate Burrow and NHibernate Search, explicando la integración de estas dos estupendas librerías. Burrow permite manejar sencillamente las sesiones de NHibernate en entornos web y Search permite integrar con Lucene. También escribí la versión en español del artículo.

Más de NHibernate: NHibernate Validator custom messages, o cómo conseguí personalizar los mensajes del validator mediante extensibilidad de un modo muy sencillo y potente. Supongo que con el tiempo Validator soportará esto nativamente.

Después otro más en inglés, ASP.NET MVC and ReturnUrl, quejándome de que muchos ejemplos de autenticación con MVC no respetan el parámetro ReturnUrl correctamente, lo que es un error a la hora de hacer un mecanismo útil de autenticación.

Y por último, los Principios básicos de OOP: SOLID que siempre deberíamos tener todos presentes a la hora de diseñar una aplicación y mantener la coherencia, la facilidad de uso y la mantenibilidad.

Y dado que este año no he escrito mucho, lo voy a dejar aquí. En 2010, más ASP.NET MVC, más NHibernate y más de todo.

¡Feliz 2010!

Mis feeds sobre NHibernate y ASP.NET MVC

Hace tiempo que tengo un par de feeds en Google Reader que me gustaría compartir con todo el mundo que le puedan interesar.

El primero es sobre NHibernate y el segundo sobre ASP.NET MVC, dos temas que sigo de cerca porque los uso diariamente en mi trabajo, recogiendo noticias que van apareciendo en los blogs a los que estoy suscrito. Por supuesto hay muchas en inglés porque la mayoría de la información se publica en este idioma aunque intento poner cosas en español también:

Espero que resulten de utilidad.

Getting MIME type in .NET from file extension

After some research, I posted a question at stackoverflow.com without much success, but the problem was that the answer was already there.
I you are working on any application that needs to serve files on it’s own, for example for encrypted storage or a rich ACL that needs to be enforced, you will need to provide the most correct Content-Type possible or MIME type from a given file extension to the reponse in order to achieve the best user experience.
For example, if you serve a PDF and use a generic MIME like application/octet-stream, the user may not se a PDF reader to open it, depending on the browser and platform.
Then, in .NET there are 4 alternatives to do this, with their pros and their cons:

  1. Use the Windows registry – This may be a good solution for desktop applications but depends on the software installed on the machine and typically web servers don’t have Acrobat or Office.
  2. Use urlmon.dll’s FindMimeFromData – I don’t know exactly the efectiveness of this method, but it’s used internally by Windows. It should give good and reliable information but you have to read the file and give the method up to 256 bytes of the file header.
  3. Use IIS information – Maybe the most obscure mechanism, based on Directory Services and COM stuff. It’s based on the same mechanism IIS uses, so it should be quite reliable, but complex and may not be the fastest.
  4. Use your own dictionary – Maybe not the most elegant but even .NET uses this internally (see System.Web.MimeMapping… you know how). You get a bunch of types from somewhere and add them to a dictionary with the associated extension. Easy.

So, the optiones are clear. Finally in my case, I used a simple dictionary to ensure compatibility between platforms and homogeneity. Using other mechanisms could lead to strange errors on some platforms that I wanted to avoid over other benefits. But there are much more elaborate mechanisms that can be done.