Tuesday, September 04, 2012

ARB (A Request Broker)

So, I'm working on an idea for a new project that I will likely host on CodePlex...I'm not sure how useful it will be general, but mostly it's an excuse to mess around with various .NET technologies and figure out how to do a bunch of potentially useful things, using C# 5.0 and the .NET Framework 4.5.

The idea is something like a Request Broker, but with some additional functionality, such as:

  • Hosting 3rd-party add-ins, which will most likely run as their own applications (a discussion of the reasoning behind this to come eventually)
  • Serving up a unified method of communication for external processes to call methods in the add-ins, and otherwise communication with them (as well as for the add-ins to communicate with each other)
  • Running/monitoring arbitrary external processes, with the ability to monitor (and notify about)...
    • Database connectivity
    • File system availability
    • Network availability
    • Memory usage
    • etc.
  • Running in tandem on multiple servers, and successfully negotiating operations
  • Load balancing tasks between multiple servers
  • Gracefully handling clustered environments, such as NLB/ACE, and a methodology to easily extend to other methods of clustering
  • Provide a tiered caching mechanism for 3rd-party add-ins
  • Task scheduling
  • etc.?
I'm thinking it would be great to implement this in such a way that it can be run as a Windows service, or as a "normal" executable.

Things to hash out before proceeding:

  • Where will we store persistent information (database, file, configurable?)
  • How will our processes communicate with each other (.NET Remoting, WCF, other?)
  • How will we handle database access, and what databases can/will we support?
  • How will we handle logging?
  • What will the 3rd party add-ins look like?

No comments: