Base4
Encyclopedia
Base4 is a Free
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...

 (LGPL) application server
Application server
An application server is a software framework that provides an environment in which applications can run, no matter what the applications are or what they do...

 for generating, sharing and re-using .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...

 data layers; this is intended to allow a development team to leverage existing enterprise systems and common functionality instead starting from scratch. It shares many similarities with WinFS
WinFS
WinFS is the code name for a cancelled data storage and management system project based on relational databases, developed by Microsoft and first demonstrated in 2003 as an advanced storage subsystem for the Microsoft Windows operating system, designed for persistence and management of...

 but is significantly simpler because it doesn't need to be backward compatible with the whole of the Win32 API stack.

The latest version comes with a schema guesser to help new developers get started quickly. There is a video demonstrating this ability for setting up and writing in Base4 here.

Features

  • Server has embedded website for Creating, Guessing, Managing and Registering schemas, with no need to learn XML syntax.
  • Client/Server architecture allows many application to act as client of a Base4 Server at the same time while centralizing common business logic. Business logic is bound typically to a schema and this is the primary unit of re-use in Base4. Each client application picks which schemas it needs to work with, from those that the server makes available, and the server provides a central place which can enforce the business logic for the schema, independently of who is using it.
  • Server support new List query pattern in preparation for Language Integrated Query
    Language Integrated Query
    Language Integrated Query is a Microsoft .NET Framework component that adds native data querying capabilities to .NET languages, although ports exist for Java, PHP and JavaScript....

  • Define and generate a fully functional .NET datalayer from either by using the embedded website or by using the simple XML
    XML
    Extensible Markup Language is a set of rules for encoding documents in machine-readable form. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards....

     schema
  • Support for inter-schema references, to encourage data-layer sharing and re-use
  • Support for schemas that wrap legacy databases
  • Support for schemas that extend legacy databases
  • Support for Object SQL like queries, and for deep pre-loading of objects using what is called ObjectScoping
  • Application Server supports addins to respond to lifecycle events (some examples are BeforeSave, AfterQuery etc)
  • A core schema with builtin support for Files, Users etc, and a framework for supporting Metadata
    Metadata
    The term metadata is an ambiguous term which is used for two fundamentally different concepts . Although the expression "data about data" is often used, it does not apply to both in the same way. Structural metadata, the design and specification of data structures, cannot be about data, because at...

     promotion and demotion to and from files.
  • All generated data-layers provide extensive support for XML including XML persistence, including object Readers and Writers that work directly with XML
  • Automatic .NET Remoting configuration and custom type serialization
    Serialization
    In computer science, in the context of data storage and transmission, serialization is the process of converting a data structure or object state into a format that can be stored and "resurrected" later in the same or another computer environment...

    management

Planned features: Version 3.0

  • Port from .NET Remoting to a completely REST based architecture
  • Ability to load and save objects via a full URL, not just an object key relative to the current connection
  • Ability to load and save individual object properties via a full URL, independent of their containing Object.

Connecting to a server


using Base4.Storage;
StorageContext.SetDefault("tcp://Server:@localhost:999/default-store");

Requesting objects from a server

See the examples here: http://web.archive.org/web/20070928040717/www.base4.net/quickstarts/quickstarts.aspx

FileBase file = StorageContext.FindOne("Name='My File'");
//Above: same as StorageContext.Default.FindOne( … )

if (file != null)
{
// ID is unique across all files.
file.Name = "Updated";
TextWriter writer = file.OpenWriter;
writer.Write("Hello World");
writer.Close;
file.Save;
//Above: Because the file has Base4 will update Version and Modified automatically for the file
}
User user = StorageContext.FindOne("UserName='UserX'"); // Same as ItemContext.FindOne( … )
if (user != null)
{
// User found do something.
// Do Work
}

History

  • Project Started by Alex James and software consulting team -2004
  • Open Sourced -Feb 2005
  • Development of Version2 targeting .Net 2.0 runtime and supporting generics -September 2005
  • Entered Public Beta1 phase -March 2006
  • Entered Public Beta2 phase -April 2006
  • May CTP released - May 2006
  • August CTP released - August 2006
  • Version 2.1 released - October 2006

External links

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