Signum Framework

De Viquipèdia
Dreceres ràpides: navegació, cerca
Signum Framework
Autor original Signum Software
Desenvolupador(s) Signum Software
Versió inicial 9 de març de 2009 (2009-03-09)
Versió estable

1.0.0

/ 9 Març 2009; fa 5 anys (2009-03-09)
Estat de desenvolupament En desenvolupament / amb suport
Escrit en Llenguatge C#
Sistema operatiu Multiplataforma
Disponible en Anglès, Castellà
Tipus Framework / ORM
Llicència LGPL
Lloc web http://www.signumframework.com

Signum Framework és un framework ORM open source escrit en C# orientat al desenvolupament d'aplicacions sobre la tecnologia .Net de Microsoft, amb una visió centrada en les entitats, de manera que és el model de dades el qual determina l'esquema de la base de dades. Com base de dades només està suportat MS SQL Server. Signum Framework es distribuïx sota llicència LGPL.

Elements de Signum Framework[modifica | modifica el codi]

Signum Framework està compost pels següents ensamblats:

  • Signum.Entities - Les classes base necessàries per a generar les entitats de dades.
  • Signum.Engine - El motor ORM amb un proveïdor LINQ complet.
  • Signum.Utilities - Conjunt d'utilitats i eines.
  • Signum.Services - Interfícies base del servei WCF.
  • Signum.Windows - Controls base per a manipular entitats.

Entitats primer[modifica | modifica el codi]

La filosofia centrada en les entitats propícia que l'esquema de dades es generi automàticament a partir dels objectes de codi, evitant mapear els camps entre la base de dades i les entitats a través d'arxius de configuració. D'aquesta manera es tracta que es detectin les possibles incidències en temps de compilació per a totes les classes (tant de dades com de lògica).

D'altra banda, això mateix impedeix que Signum Framework s'adapti bé a projectes en els quals existeix una base de dades anterior que s'ha de preservar, ja que, a diferència d'altres frameworks, la base de dades es genera a partir del codi i no al revés.

Donada la importància que es concedeix a les entitats com nucli de les aplicacions, Signum Framework proveeix un petit grup de classes base i primitives que permeten modelar els objectes d'una manera modular i reusable, evitant la redundància i assegurant la integritat dels objectes, tant en lògica com una vegada persistits en base de dades. Això mateix (a l'haver d'heretar les entitats des d'alguna d'aquestes classes base) fa que Signum Framework no suporti POCO (Plain Old C# Object).

Generació de l'esquema[modifica | modifica el codi]

La base de dades relacional es genera automàticament a partir de les entitats utilitzant un mapeig 1 a 1 des de les entitats a les taules, de manera que cada entitat independent té la seva pròpia taula i cada camp de l'entitat la seva pròpia columna. Les entitats que són embegudes (EmbeddedEntity) no tenen una taula pròpia, sinó que els seus camps es guarden com columnes en la taula de l'entitat a la qual pertanyen. S'utilitzen taules relacionales per a les col·leccions, el que permet les relacions N a N.

Per a permetre realitzar modificacions sobre les dades sense haver de regenerar la base de dades cada vegada, es pot realitzar una sincronització entre les entitats i la base de dades existent, en la qual el motor generarà un arxiu de script SQL amb les modificacions necessàries per a actualitzar l'esquema.

Herència d'entitats[modifica | modifica el codi]

Encara que Signum Framework utilitza un sistema de "taula per classe concreta", en el qual es crea una taula una per cadascun dels tipus concrets, permet implementar el concepte d'herència utilitzant relacions polimòrfiques, amb una clau externa que admet valors nuls per cada possible implementació.

Interfície d'usuari i WCF[modifica | modifica el codi]

Signum.Windows oferix controls WPF bàsics que aprofiten l'homogeneïtat de les entitats per a implementar un comportament automàtic. Aquests controls simplifiquen el desenvolupament de les vistes de les entitats d'una aplicació.

Per a la comunicació entre els clients i el servidor s'utilitzen contractes WCF que permeten la compartició de tipus. Això facilita reutilitzar les regles de validació de les entitats en el client, eliminant la redundància.

La utilització d'objectes lazy permet treballar amb "petjades" d'una entitat, coneixent el seu ToString i el seu identificador, però sense recuperar l'entitat completa fins que sigui necessari, minimitzant així la càrrega de treball i la transferència de dades, augmentant considerablement el rendiment de les aplicacions.

LINQ[modifica | modifica el codi]

Signum Framework té un proveïdor LINQ complet, de manera que totes les operacions s'executen en LINQ, i internament el motor les traduïx a SQL. Algunes de les característiques del proveïdor de LINQ són les següents:

  • Suporta joins.
  • Suporta valors booleans arreu de la consulta.
  • Suporta GroupJoin i DefaultIfEmpty.
  • Suporta Group By en C# i VB.NET amb agregats múltiples.
  • Suporta l'ús de let en les consultes.
  • Maneja la construcció d'objectes en memòria dintre de consultes, així com cridades a mètodes en memòria.
  • Suporta tipus nulables i conversions implícites.
  • Oferix emulació nadiva de funcions SQL.
  • Suporta operacions de tipus SelectMany.

A causa d'algunes de les funcionalitats que suporta (en concret les funcions CROSS APPLY / OUTER APPLY), actualment les bases de dades suportades per Signum Framework es limiten a SQL Server 2005 i SQL Server 2008 (tant en les versions Express com en les versions de pagament). La principal diferència entre el proveïdor de LINQ de Signum Framework i altres proveïdors és que no depèn d'un context explícit que depèn de l'esquema actual de la base de dades, el que permet escriure lògica de negoci reutilizable.

Història[modifica | modifica el codi]

  • 2004 - Primera versió d'un motor ORM basat en els principis de reutilización i centrat en entitats.
  • 2007 - Segona versió del motor ORM, incloent el Gestor d'Operacions i Processos.
  • 2008 - Signum Framework 1.0 Beta 1, incloent les funcionalitats de ORM, WPF i LINQ.
  • 2009 - Release de Signum Framework 1.0 en Codeplex.
  • 2010 - Signum Framework 2.0 Beta 1, amb suport per a .Net Framework 4 i ASP.Net MVC 2.0 (versió interna).
  • 2011 - Signum Framework 2.0 Beta 2, amb suport per a ASP.Net MVC 3.0 (versió interna).

Enllaços externs[modifica | modifica el codi]