Historias
Slashboxes
Comentarios
 

Login Barrapunto

Login

[ Crear nueva cuenta ]

Signum Framework: Un 'django' con LINQ para .NET

editada por rvr el 15 de Abril 2009, 07:00h   Printer-friendly   Email story
desde el dept. tinyurl.com/django-ironpython
Olmo del Corral nos cuenta: «Acabamos de lanzar Signum Framework, un Framework Open Source sobre tecnologías Microsoft para el desarrollo de aplicaciones. Desarrollado en España, es bastante puntero en las tecnologías que utiliza (tiene un LINQ Provider, integrado con WPF...). La principal diferencia con las alternativas de Microsoft es que con Signum Framework programas las entidades (en C#) y se te genera la base de datos, no al revés, como es lo habitual. Este cambio tiene muchas implicaciones en el proceso de desarrollo, como validación, integración de módulos... y facilita enormemente la reutilización de código, a nivel de interface de usuario por ejemplo».

Este hilo ha sido archivado. No pueden publicarse nuevos comentarios.
Mostrar opciones Umbral:
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.
  • Muy interesante

    (Puntos:2)
    por Julio_sao (29798) el Miércoles, 15 Abril de 2009, 07:33h (#1139464)
    ( Última bitácora: Miércoles, 19 Mayo de 2010, 18:32h )
    Interesante eso de generar la base de datos a partir de los objetos, si señor a ver si le echo una ojeada por que creo que es lo que llevaba buscando mucho tiempo
    --
    JulioSAO xD.
  • Interesante

    (Puntos:2, Interesante)
    por pobrecito hablador el Miércoles, 15 Abril de 2009, 08:31h (#1139471)
    Le he echado un vistazo por encima y tiene muy buena pinta. Lástima que esta noticia será pasto muy rápido para trolls, integristas y varios tipos más de idiotas. He visto un montón de cosas curiosas -como el patrón Scope, que no conocía-, pero en especial quería preguntar al creador (que seguro que anda por aquí) un par de cosas
    • ¿Por qué en inglés? Está claro que amplía el mercado, pero se echa de menos un poco de documentación en español. Y lo que es más importante, luchar entre los frameworks ingleses es una pelea encarnizada, pero haz un framework de .NET con una documentación decente en castellano y tienes a un montón de desarrolladores ganados
    • ¿"Lazyness" explícita? Estoy seguro de que ha sido una decisión muy meditada, y lo habéis hecho en plan "opinionated software", pero personalmente me parece un paso atrás. Otros frameworks lo hacen de manera transparente, y si bien es cierto que crea una cierta dependencia sobre el ORM, forzar al desarrollador a que tenga en mente cada vez que necesita carga perezosa me parece una solución mala. Quizá tener carga perezosa por defecto y incluir un mecanismo para forzar la carga me hubiera gustado más -en Rails y Hibernate (años ha al menos) se hacía un count de la colección para obligar a su carga, pero era una chapuza-. En fin, que los tipos parametrizados son útiles cuando no abusas de ellos, pero tener un monton de por el código apesta, y la carga perezosa es esencial en la mayoría de casos para garantizar un poco de rendimiento.
    • No he tenido mucho tiempo a mirarlo, pero no lo he visto respondido al menos en el FAQ... ¿Como lidiáis con el problema de las N+1 consultas? Muchos ORM pasan del tema y delegan en el desarrollador, y creo que hoy en día en un FW nuevo es esencial hacerle la vida más fácil al programador :-)
    • Y por último ya, para la "upcoming" capa web... Vais a lanzaros a ofrecer "helpers" -a la django/rails- para silverlight, o vais a tirar de AJAX como todo hijo de vecino?
    • Re:Interesante

      (Puntos:4, Informativo)
      por Olmo (10998) el Miércoles, 15 Abril de 2009, 14:44h (#1139521)
      Muchas gracias por tu apoyo, y buena previsión con los trolls, ya he visto alguno por ahí ;)

      El patrón Scope nos ha resultado muy útil a la hora de hacer el código más simple y legible. Si te interesa hay más cosas parecidas en Signum.Utilities: Sync [signumframework.com], CSV [signumframework.com], DirectedGraph [signumframework.com]

      Tus preguntas:
      • Queríamos mantenernos flexibles para hacer cambios el código si lo consideráramos necesario, y tener la documentación en varios idiomas hace eso más complicado. Elegimos inglés por la audiencia. Posiblemente este verano comencemos a traducir al español la documentación. Evidentemente el código seguirá en ingles.
      • La decisión de usar Lazy ha sido difícil, pero creo que acertada. La principal diferencia con otros motores es que nuestras entidades están diseñadas para ser serializadas y enviadas a un cliente desconectado de la base de datos, en ese escenario necesitas saber qué cosas tienes disponibles y cuáles no. Lazy es aplicable también en otras situaciones, como en queries Linq o para pasarlos como parámetro.
        Además, permite tener un control explícito sobre cuando está habiendo comunicación con la BBDD, o la identidad de los objetos (ObjectCache).
        Los EntityControls saben tratar con Lazy de manera transparente asi que realmente sólo genera un pequeño estorbo cuando estás escribiendo lógica de negocio personalizada (poco a menudo) y en ese caso sólo tienes que hacer '.Retrieve()' sobre el Lazy y ya tienes la entidad.
      • No conocía el problema por ese nombre. Imagino que te refieres a http://www.pbell.com/index.cfm/2006/9/17/Understan ding-the-n1-query-problem [pbell.com]. Nuestro proveedor de LINQ es bastante potente, una query como la expresada en ese link podría expresarse fácilmente así:

        from c in Dabase.Query<ProductDN>()
        group c by c.Category into g
        select new<br>
        {
        CategoryTitle = g.Key.Title,
        ProductCount = g.Count()
        }
        Y sería traducida a una sola query, siendo bastante eficiente. En general la mayoría de las consultas que devuelven una sola tabla de datos se pueden hacer de esta manera, generando 1 sola query SQL.
        Cuando lo que se necesitan son datos jerarquizados (maestro detalle por ejemplo) entonces sí que aparecería el problema de las N+1 queryes (aunque sería completamente transparente al programador).
        En un futuro nos gustaría quitar este problema también, si quieres ver algo duro, Matt Warren enseña cómo hacerlo en este post:
        http://blogs.msdn.com/mattwar/archive/2008/11/17/b uilding-a-linq-iqueryable-provider-part-xii.aspx [msdn.com]
        En cualquier caso, no habría ningún cambio que hacer por el programdor final, cuando haya mejorado eso el código simplemente irá más rápido :)
      • Vamos a tirar de ASP.Net MVC por ahora, utilizando llamadas AJAX para la validación y alguna cosa chula más. El objetivo es conseguir una experiencia de programación similar a la que tenemos con Signum.Windows.
        El problema con Silverlight es que no puedes compartir las entidades entre el cliente y el servidor, puesto que el cliente utilizaría el runtime silverlight y el servidor el Framework completo.
        Existen algunas ñapas posibles (como usar 'Add Link' en diferentes proyectos
      [ Padre ]
    • 1 respuesta por debajo de tu umbral de lectura actual.
  • por Olmo (10998) el Miércoles, 15 Abril de 2009, 15:35h (#1139540)
    Para quien esté interesado en Signum Framework y vivar por Madrid, daremos una charla el próximo Jueves 23 en el Mad.Nug:

    http://msevents.microsoft.com/CUI/EventDetail.aspx ?EventID=1032414148&Culture=es-ES [microsoft.com]

    Nos vemos allí!!
  • Re:Yo debo ser el Troll

    (Puntos:1, Interesante)
    por pobrecito hablador el Jueves, 16 Abril de 2009, 12:53h (#1139695)
    Desde cuando las posturas "religiosas" requieren explicacion.

    Hay que ser anti-MS "a tiempo y a destiempo". Y ya'ta. No hay mas.

    Ya pueden crear mañana un programa para "curar el Cancer" que... si corre bajo Windows... hay que banearlo. ;-)
    [ Padre ]
  • 2 respuestas por debajo de tu umbral de lectura actual.