locked
What do you think about this architecture RRS feed

  • Question

  • Hi,

    This is my first project in which I’m an ARCHIECT Smile So I would like to consult my design with more experienced architects, and most of you surely are.

     

    First, the requirements:

    We have to build a somehow strange application, in which there is a central server and clients connected to it. This server has to accept mini-applications that will execute on the remote clients. The same application will execute on the client's machine, but each machine will have different inputs.

     

    Secondly, my design:

    1. These mini-applications will be dlls that inherit from an abstract class (NetworkThread) which is part of the exposed api of the server.
    2. The clients have a wcf service called (AssemblyInstaller) that will accept dll files from a component in my system that is called (AssemblyPublisher). The publisher's job is to publish these dlls between the clients. This mechanism is based on the Publish-Subscribe pattern.
    3. Whenever an execution request comes, there is a component called (ExecutorsLocator) that will locate available executor machines and return a proxy for every executor.
    4. The proxy is a Client for a WCF service that exposes an operation that accepts as arguments, the assembly to use, the arguments, and a unique Guid that will reference that execution process.
    5. There also is a monitoring component called ExecutionMonitor, which will receive the Guid of the execution and will monitor the status of the clients.
    6. Whenever the execution of all operations is finished, the results are collected in a (ResultSet) and the server then does the rest of the job.

     

    What I’m asking you, dear architects, is to tell me if this model of distributing the work over clients is a good one or not.

     

    Let me just tell you about my software configuration. It’s a .NET environment and the exposed services are WCF services. I cannot us Remoting, because I need to integrate this system with the rest of the systems.

     

    It may help you: I’ve googled for this problem and found that it’s somehow close to a Grid Computing system.

     

    Thank you in advance.

    Saturday, May 19, 2007 3:42 PM

Answers

  • You are right,  it does sound like a Grid solution - which brings the questions of why do you want to reinvent the wheel and implement one yourself? There are a few perfectly good .NET grid implementations out there like Alchemi and Digipede that already did solved the problems you probably still don't know about

    Arnon
    Sunday, May 20, 2007 10:35 PM

All replies

  • You are right,  it does sound like a Grid solution - which brings the questions of why do you want to reinvent the wheel and implement one yourself? There are a few perfectly good .NET grid implementations out there like Alchemi and Digipede that already did solved the problems you probably still don't know about

    Arnon
    Sunday, May 20, 2007 10:35 PM
  • Arnon,

    Yes, Couple of hours after posting this question, I've took a look at the sources of Alchemi, and found that with little modifications, it does what I need.

    It really saved me alot of time.

    And thanks for your answer

    Monday, May 21, 2007 8:38 AM