En estos días, en el desarrollo de aplicaciones, es muy común usar frameworks que nos ayuda a resolver un problema en particular. Inclusive existen frameworks que resuelven necesidades similares entre sí. Estas piezas de software quizás a parte de solucionar problemas, cubren alguna carencia en el “foundation”, lease: el framework base (.Net Framework 2.0, J2SE, entre otros). Esta carencia por lo general se transforman en alguna clase o un conjunto de clases que funcionan orquestadas con un fin.

Una de las ventajas que el open-source nos brinda es la posibilidad de tener el control sobre el código. Usamos el código que miles de programadores en el mundo lo dejan a nuestra disposición.

Hablando de .Net ó Java, enumeremos algunos frameworks open source, sin orden particular, solamente son los que estoy recordando en este momento: NUnit, Moq, NHibernate, Castle Project: Monorail, Windsor, Microkernel, ActiveRecord, log4net, Db4o, XUnit, Enterprise Library, SeamFramework, NakedObjects, Spring entre otros.

Seguro que estarán familiarizados con muchos de ellos, seguramente muchos de ellos son usados por Uds. todos los días.

Alguna vez se pusieron a ver el código de ellos? Les recomiendo que lo hagan, es un buen ejercicio. Mirar código realizado por otro programador puede ayudar a aprender, ordenar ideas, obtener otros puntos de vista, entre otras virtudes.

Vamos a un ejemplo, de una librería que uso y conozco como para poder opinar: NHibernate. Que podríamos obtener de NHibernate y que lo podemos llevar a nuestro código?

Nombremos algunas clases o conjunto de clases útiles que podemos usar en nuestro código (solamente enumeraré algunas):

  • StringTokenizer: port del StringTokenizer de Java.
  • ReflectorOptimizer (bajo namespace NHibernate.Bytecode).
  • SimpleMRUCache: Caché que mantenida por un algoritmo Most Recently Used.
  • ReflectHelper: servicios de reflection.
  • ThreadSafeDictionary (los muchachos que hicieron el .Net Framework 2.0 se durmieron al no incluir una clase similar, por suerte se dieron cuenta en el 3.0 hay collections, dictionaries thread-safe).

Estos items son solamente para tentarlos a que investiguen más y vean que pueden encontrar. Un punto a considerar, es que NHibernate se trata de un port (con features propias) de Hibernate -Java-, entonces quizás encuentren clases que se necesitaron portar por no estar presentes (con algún substituto) en .Net Framework. Si analizan Spring.Net desde adentro, se van a encontrar con sorpresas: no solamente fueron portadas clases, sino frameworks completos de J2SE.

En otros post analizaremos algunas consideraciones de diseño, o quizás algunos patrones de algún framework en particular, siempre hay algo para aprender.

 

3 Responses to Aprendiendo a usar frameworks, desde adentro

  1. Oscar R. Onorato says:

    “En otros post analizaremos algunas consideraciones de diseño, o quizás algunos patrones de algún framework en particular, siempre hay algo para aprender.”

    Sería buenísimo ver cómo abordar el análisis de un framework en particular. Si te parece bien quizás estaría bueno comenzar por alguno simple como para después encarar otros más complejos. No sé, por ejemplo para mi NHibernate me resulta complejo. Pero muy interesante para las capacidades que tiene.

    Saludos Dario y felicitaciones por el Blog.

    Oscar R. Onorato

  2. Lizzette C.V. says:

    Hola dario, muy interesante tu post yo creo que si nos serviria mucho que llevaramos esa practica de vez en cuando me ha tocado meterme a codigos de frameworks(principalmente de java) y si me topo con cosas que no he manejado o que podia tomar de ejemplo su implementacion.

    Saludos.

  3. [...] public links >> microkernel Aprendiendo a usar frameworks, desde adentro First saved by danielcosta | 1 days ago Re: SuS?? – SuSE: Neues Geld und Entlassungen First [...]

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>