Project Samana

From Frederick Chapleau Wiki

Jump to: navigation, search

Contents

Background

The need of central management of application is in great demand these days. Everyone want to minimize application deployment, so that they can have a more releases, like the Agile methodology philosophy is enforcing.

With new technologies, such as ClickOnce, it is easy to publish new versions. But what is happening when you want to deploy services, when you want to deploy applications on every workstation in a company, or simply you want to have a no-touch deployment (compared to the Click Once framework)? Yes, you can redeploy an MSI that will replace the old one, and upgrade functionnality. This is great when you have a long development cycle, and when department politics let you re-distribute component for a little fix everytime.

So, there is an other concept that you should enable in this context: a really, really stable host, with the minimum of functionnality to dynamically load, execute and unload, applications. This is the only part of application that will be "hardly" distributed on remote machine.

This is the base concept of the Samana Framework. Distribute and install a "Host" on all required machines, that will automatically connect to the central server, and that will get, execute, and remove the required plugins, on-demand.

Base Requirement

  • The distribution should be done with a MSI (Microsoft System Installer) thru an Active Directory group policy.
  • The host should use standard network protocol (such as DNS) to discover the framework service's endpoint.
  • The host should negociate System State thru the Message Bus, between the host and the server
  • The distribution of a plugin should be done centrally, thru a Web Interface
  • The host should be capable of offline message handling thru an host-based storage

Technology

  • .NET 3.5
  • ASP.Net 3.5
  • WCF
  • Linq
  • SQL Server 2005

Concepts

todo.

Message Bus

The message bus is the core of the communication of the Samana Framework. It is based on WCF, and use standard pull technologies, such as web services, to communicate to the server from the client.

All the messages are standard to the framework, but only System messages are understanded by the host and the server. Other type of message, such as the Plugin Type are only understanded by the target plugin.

Messages can be sent without knowing explicitly the target host. When broadcasted, the server is responsible of managing the distribution, using message subscription. When tagged as unique, the server dispatch the message to one of the nodes. When typed to be processed by every host, the server is queuing the message to all the subscribers.

Plugin Framework

In the Samana Framework, a plugin is a .NET assembly that contains classes that are implementing a predefined plugin interface. Those plugin are distributed thru the Message Bus to the hosts. When a new plugin is received, an App Domain is created, and the plugin in unwrapped inside this new, independant app domain.

The plugins are independant from each other, and can be loaded, unloaded, executed on the host via System Message. Thoses messages are system commands received on the message bus and processed by the host. Command include Stop, Start, Load, Unload and Execute.

Heartbeats are sent from the hosts to the Samana Server. The same kind of heartbeat can be sent from the plugins itself, to centrally know if the plugin are running. Heartbeat are more than just 'beat', they are continous, typed feedback from each of the framework elements.

Because plugins are a independant implementation, and completely abstracted from the framework, feedback from the plugin and execution options (data) are sent encoded in XML, and are compressed by the framework.

Components

todo.

Server

todo.

Service

todo.

Host

todo.

API

todo.

Plugin

todo.

Download

License

Because this project is currently in development, I did not think of the License Requirement. If you are interested in participating in the project, or want to get the source, maybe I will distribute it under an OSI based license.

Location

No download location is available for now.

Personal tools