Signum Framework
Encyclopedia
Signum Framework is an open source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...

 ORM
Object-relational mapping
Object-relational mapping in computer software is a programming technique for converting data between incompatible type systems in object-oriented programming languages. This creates, in effect, a "virtual object database" that can be used from within the programming language...

 framework
Framework
Framework may refer to:*Software framework, a reusable set of libraries or classes for a software system .**Application framework, a software framework used to implement the standard structure of an application for a specific operating system....

 to develop applications on Microsoft
Microsoft
Microsoft Corporation is an American public multinational corporation headquartered in Redmond, Washington, USA that develops, manufactures, licenses, and supports a wide range of products and services predominantly related to computing through its various product divisions...

 .NET
.NET Framework
The .NET Framework is a software framework that runs primarily on Microsoft Windows. It includes a large library and supports several programming languages which allows language interoperability...

 platform. It is focused on entities, so that the data model determines the database scheme. As database only MS SQL Server
Microsoft SQL Server
Microsoft SQL Server is a relational database server, developed by Microsoft: It is a software product whose primary function is to store and retrieve data as requested by other software applications, be it those on the same computer or those running on another computer across a network...

 is currently supported.

Signum Framework is distributed under LGPL.

Signum Framework components

Signum Framework comprises the following assemblies:
  • Signum.Entities - base classes required to generate the data entities.
  • Signum.Engine - ORM engine with a complete LINQ
    LINQ
    Linq is a word-based card game from Endless Games, introduced at the American International Toy Fair in 2005.Game play requires at least four players, two of whom are dealt cards with the same word, while the others receive blanks. The goal is to gain points by correctly naming the players with...

     provider.
  • Signum.Utilities - set of utilities and tools.
  • Signum.Services - base interfaces for WCF
    Windows Communication Foundation
    The Windows Communication Foundation , previously known as "Indigo", is an application programming interface in the .NET Framework for building connected, service-oriented applications.-The architectures:...

     service.
  • Signum.Windows - basic controls to manipulate entities.

Entities first

Being centered on entities, its philosophy encourages that database schema is automatically generated from the objects
Object (computer science)
In computer science, an object is any entity that can be manipulated by the commands of a programming language, such as a value, variable, function, or data structure...

, avoiding mapping fields between the database and the entities through configuration files. Thus it is possible that errors are detected at compile time for all classes (both data and logic).

On the other hand, this prevents Signum Framework to be well adapted to projects where there is a previous database that must be preserved, since, unlike other frameworks, the database is generated from code and not the other way.

Given the importance attached to the entities as core applications, Signum Framework provides a small group of base classes and primitives that allows modeling the objects in a modular and reusable manner, avoiding redundancy and ensuring the integrity of objects, both in logic and once persisted in database. This (having to inherit features from one of these base classes) makes Signum Framework not to support POCO
Poco
Poco is an Southern California country rock band originally formed by Richie Furay and Jim Messina following the demise of Buffalo Springfield in 1968. The title of their first album, Pickin' Up the Pieces, is a reference to the break-up of Buffalo Springfield. Highly influential and creative,...

 (Plain Old C# Object).

Generation Scheme

The relational database is automatically generated from the entities using a 1 to 1 mapping from entities to tables so that each entity has its own separate table and each entity field its own column. The entities that are embedded (EmbeddedEntity) do not have a table itself, but its fields are stored as columns in the entity table to which they belong. Relational tables are used for collections, allowing N to N relations.

To allow data changes without having to rebuild the database each time, you can synchronize between the entities and the existing database in which the engine will generate a SQL script file containing the modifications needed to update the scheme.

Entities inheritance

Although Signum Framework uses a "table for specific class", in which a table is created for each of the specific types, it allows to implement the concept of inheritance using polymorphic relations, which have a foreign key allowing null values for each possible implementation.

User Interface and WCF

Signum.Windows offers basic WPF
Windows Presentation Foundation
Developed by Microsoft, the Windows Presentation Foundation is a computer-software graphical subsystem for rendering user interfaces in Windows-based applications. WPF, previously known as "Avalon", was initially released as part of .NET Framework 3.0. Rather than relying on the older GDI...

 controls that take advantage of the homogeneity of entities to implement an automatic behavior. These controls simplify the development of the views of the entities of an application.

For communication between clients and server, WCF contracts are used, allowing the sharing of types. This facilitates reuse the validation rules of the entities on the client, eliminating redundancy.

The use of lazy
Lazy evaluation
In programming language theory, lazy evaluation or call-by-need is an evaluation strategy which delays the evaluation of an expression until the value of this is actually required and which also avoids repeated evaluations...

 objects makes possible to work with "footprints" of an entity, knowing his ToString and ID, but without retrieving the entire entity until needed, thus minimizing the workload and data transfer, greatly increasing applications performance.

LINQ

Signum Framework has a full LINQ provider so that all operations run in LINQ, and internally the engine translates them into SQL. Some features of this LINQ provider are:
  • Supports joins.
  • Supports boolean values in any part of the query.
  • Supports GroupJoin and DefaultIfEmpty.
  • Supports Group By in C# and VB.NET with multiple aggregates.
  • Supports let in queries.
  • Manages the construction of objects in memory in queries and in-memory method calls.
  • Supports nullable types and implicit conversions.
  • Provides emulation of native SQL functions.
  • Supports operations like SelectMany.


Because some of the features it supports (in particular the CROSS APPLY / OUTER APPLY functions) databases currently supported by Signum Framework are limited to SQL Server 2005 and SQL Server 2008 (both Express
Microsoft Visual Studio Express
Microsoft Visual Studio Express is a set of freeware integrated development environments developed by Microsoft that are lightweight versions of the Microsoft Visual Studio product line. Express Editions were conceived beginning with Visual Studio 2005...

 and paid
Microsoft Visual Studio
Microsoft Visual Studio is an integrated development environment from Microsoft. It is used to develop console and graphical user interface applications along with Windows Forms applications, web sites, web applications, and web services in both native code together with managed code for all...

 versions).

The main difference between Signum Framework's LINQ provider and the rest of providers is that it is not dependent on an explicit context that depends on the current scheme of the database, which allows you to write reusable business logic.

History

  • 2004 - First version of an ORM engine based on the principles of reuse and focused on entities.
  • 2007 - Second version of ORM engine, including Operations Manager and Processes.
  • 2008 - Signum Framework 1.0 Beta 1, including ORM functionality, WPF and LINQ.
  • 2009 - Signum Framework 1.0 Release on CodePlex.
  • 2010 - Signum Framework 2.0 Beta 1, with support for .NET Framework 4 and ASP.Net MVC
    ASP.NET MVC Framework
    The ASP.NET MVC Framework is a web application framework that implements the model-view-controller pattern. Based on ASP.NET, it allows software developers to build a Web application as a composition of three roles: Model, View and Controller. A model represents the state of a particular aspect of...

    2.0 (internal version).
  • 2011 - Signum Framework 2.0 Beta 2, with support for ASP.NET MVC 3.0 (internal version).

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK