Spludlow Web Header

Description of the Spludlow Framework


Who is it for?. 1

What problem does it solve?. 1

How does it solve this problem?. 1

How does it work?. 1

Some Feature Lists. 1

Sub Systems. 1

Code Execution. 1

Diagram.. 1


A Framework to simplify development and running of Enterprise/Distributed/Bespoke software systems using .net on Windows.

Providing a complete eco-system including all the plumbing to write, deploy and run code using distributed techniques like web services and message queues, with little prior experience of them.

Suitable for developers of all experience levels including hobbyists.

Included are several sub-systems to help with development, deployment, and monitoring.

Open source and Distributed under the terms of the GNU General Public License v3.

Who is it for?

Aimed at all coders from seasoned developers to novice programmers.

It can be used to build solutions for; business, science, education, and personal projects.

What problem does it solve?

The difficulty of building, deploying, and managing distributed applications on the Microsoft .net platform. Not just large distributed systems but also single hosts where out-of-process functionality is required (like message queueing for long running processes)

Developers of all experiences are able solve business problems, from a simple report that queries an existing system, to a full blown order processing system, the difficulty is converting that ability to code something into running it in the real world.

How does it solve this problem?

By suppling an easy to learn and use complete Eco-System for building, deploying, and managing distributed applications.

It aims to provide the plumbing that a typical business and real world solutions require.

Many sub-systems and wrappers to third party components are also provided to solve day to day business problems.

Everything is provided in one package to get real world applications up and running.

How does it work?

Behind the scenes are 3 generic applications; a Windows Service, a Web Service, and a Console Application. These general purpose hosts can be orchestrated to execute your code any way you like.

A high level of agility (ability to change things quickly) is achieved by using “loosely coupled” references to execute your code. More on this later but in essence it means you don’t have to compile your code libraries into anything to run them.

At the front end is a simple to use Intranet that is used to; view system wide logs, view real time system status, deploy application components, configure applications, search and execute methods, and some other things useful for building applications.

You can install the framework on many hosts and across many networks. Messages (method calls, instructions to run code) are automatically routed across queues and web services to get to where they need to execute. Parameters to methods and results back (data) are all automatically serialized (made able to travel) and compressed, if necessary, all transparently in the background.

Some Feature Lists

Several sub-systems, classes, and optional wrappers to third party software components are available to get the job done (in no particular order):

Sub Systems

·         Logging – System wide logging, view from an Internet page. The system logs anything important like errors. You can use logging to log data as well as text, use the “Spludlow.Log” class to log DataSets makes it very easy to dump out data and view it in live systems as well as during development.

·         System Status – A single Intranet page shows what is running on all hosts; web sites, web services, windows services, the individual tasks that the windows services are running. Not only do you get a real-time view (has anything fallen over) you also get a list of everything that it configured (if you forget). You can start and stop services and individual threads running on a service, as well as web application pools.

·         Release – Easy to use deployment from the Intranet release page to push out from your development host a single application to a single host or publish everything to everywhere (maybe you made a big change). All applications are automatically stopped and started.

·         Configuration – An Intranet page is used to manage configuration at the organization, network, and host level this is then pushed out to each host and automatically restarts the applications.

·         DAL (Data Access Layer) – Write code that can target many database types, functionality is provided for porting schemas and data between different database products.

·         Printing – Print and draw from the server to printers, PDFs, and bitmaps using a common interface. An Internet page is provided to view and reprint anything printed from the Framework.

·         Credentials – Keep secrets, things can be encrypted to files using the stranded .net Cryptography methods.

·         Thumbnails – Having to display images on a web? Provided is a ready to go thumb-nailing system.

·         File Store – Simple class for storing files away against an id and providing file system and web paths.

·         Backup – A class is included for basic backup of directories and databases configured through a text file, call it from the scheduler. Compresses everything using 7-Zip and then can copy it to other directories, FTP servers, or using HTTP though the Framework to a remote directory.

·         HTTP file transfer – Methods for the simple transfer of files between hosts.

Code Execution

·         Call Page – On the Intranet Call page you select a host then you can search for class and method names that are available to run. Once found you can enter the parameters and constructor arguments and run the method on a web service or message queue. Run code without creating any front end and without having to remember the exact spelling or parameters.

·         Web Services – Run your code as a web service without defining interfaces or having to create web references.

·         Message Queueing – Built in are; system, logging, and a run (for you to use) queues, you can add more if you like. No need to worry about defining message queue contacts or message formats just start using them. From the Intranet Status page you can view (see what’s queued) and delete (poisoned) individual messages.

·         Method Threads – Create simple servers that consist of a single method that runs indefinitely (never returns).

·         WCF TCP Servers (.net Remoting) Made easy – Just like the “Method” example above you can also configure a “Server” providing a remote server that you can interact with (call it’s methods). Traditionally this can be quiet a chore dealing with the XML configuration files on the client and server, with the Framework just add another line to a text file.

·         Scheduler – Simple text file, each line contains a when to run definition and a loosely coupled reference to what to run, and where to run; web service or queue.

·         Console Application – Call code in process, queue, or call a web service from the command line. Also useful for spawning a process that will perform some task like updating the system.

·         Parameter passing – Passing data to queues and web services as well as returning results is all taken care of automatically in a robust manor. All large parameter data is serialized and compressed at the point of sending. When a message to execute a method arrives at its destination the parameters are pulled from the sender, nothing is ever lost from network outages the data will be available when the network returns.

·         Serial Calls – Chain a series of method calls together passing results to the parameters of the next call.

·         Parallel Calls – Execute method calls on separate hosts at the same time and provide a method call that will process the combined result array.


Here is an example of how the framework may be deployed. Only one host on each network needs the web service be accessible from the Internet. All messages are automatically routed.

Spludlow Web Footer