Contents
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.
Aimed at all coders from seasoned developers to novice
programmers.
It can be used to build solutions for; business, science,
education, and personal projects.
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.
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.
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.
Several sub-systems, classes, and optional wrappers to third
party software components are available to get the job done (in no particular
order):
·
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.
·
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.