Project Description
This project is an SOA application server for HTTP. It can execute Database SPs, MSMQ, Assemblies, IronPython script and generates JSON, Web Service, Text, Excel or RSS file through HTTP. The system has authentication, caching, compression and logging support.

Everything came to my mind, when I saw the "SQLXML and IIS support", which lets you execute Stored Procedures and generate XML as response on the Web. But it had some restrictions for the database, authentication/authorization and format of the generated output.

This project lets you create URLs like below very easily (without writing a single line of code) which can be used on AJAX Web applications or as Web Services;
  • http://www.domain.com/<VPath>/<ServiceName>.<AtomName>.<Ext>?<Param1>=<Value1>&...&<ParamN>=<ValueN>
  • eg. http://localhost/Web/Northwind.GetCustomerOrders.ws?CustomerID=ALFKI
Where;
  • <VPath> is the Virtual Path of the application,
  • <ServiceName> is the name of the web service,
  • <AtomName> is the name of the method to execute,
  • <Ext> is the name of the file extension, which can be (ws -for web service, txt -for text file, json -for Javascript output, xls -for excel files)
  • <Param1>=<Value1>&<Param2>=<Value2> are the names and values of the parameters to pass to the Atom

The request above executes on the server-side and generates an output of the specified extension. Before executing the "Atom", it checks the credentials, authorization, validates the parameters and validates the relationship between parameters. It also Logs, Caches and Compresses the results.

If you are using Enterprise Library, it is very easy to configure the application.

Everything starts with "MS Services Application Block" and under that block you can define "Services" and "Shields". Shields are used to protect Services. A Service is very similiar to a Web Service with some exceptions. Services have executables named "Atoms" and "Categories" to categorize Atoms. Atoms have an "Executor" and "Generators". Atoms also have "Parameters", "Shields" and "Caching Options". Parameters have "Validators" to be validated before executing. There are two special Atoms named "User" which is used for authentication and "Exception" that reports exceptions occured during executing.

There are many "Wizards" that help you to generate Services and Atoms.

With these concepts mentioned above, you can easily create "Web Services" that connects to server-side data and returns the result. For example, when you select the "Wizard: Create Atoms from SQL Server Database" wizard under "New" command by right-clicking a Service node in "Enterprise Library Configuration Tool", you select the database connection and select Stored Procedures, then they are available as Atoms with parameters that generates Excel documents, Web Services or Text Files.

Recently added

"File Executor".
This executor, reads a local file, caches it in memory (if necessary) and writes output depending on extension, but it also have a "WriteRaw" property that lets program to ignore extension. This executor can be used if you want authentication, logging, etc. You can also select file names depending on parameters passed.

"SQL Executor"
To execute SQL statements directly from databases.

More database support
MS.Services now supports SQLite, MySql and PostgreSQL. Actually, adding this feature was very easy, thanks to the design of Enterprise Library.

Support for Adobe Flex and AIR
With asdl extension, MS.Services generates ActionScript file for use with Flex. This support is on beta now.

Currently I keep improving the project. It definitely needs a good installer and a documentation. So if you need any help or questions about the project, please don't hesitate to contact me at mertsakarya@hotmail.com

I have finally added the original source code to "Source Code" tab. Now you can use SVN. But use it at your own risk. Also note that I recommend checking out to some folder on root i.e. "C:\MSRoot" - this is where it is on my development environment.

Last edited Apr 22, 2009 at 2:39 PM by mertsakarya, version 22