chakira

I am supposed to write a Service aggregation manager, which will be a WCF web service to handle a high volume of requests for a set of services that this aggregate service 'manages'.

The service manager is supposed to do the following :-

1) When the service manager is invoked, it needs to load into a collection, all the services that are 'children' of this manager
2) On receipt of a request, authenticate the client (i can use x.509 authentication using Service factory)
3) Authorize the client request based on membership details from a membership database
4) If the message wants to invoke a service , add it to a queue based on its priority level (indicated in the message). A Service administrator to periodically invoke the services from the queue based on priority .
5) If the message is the return of a service invoked from this manager, update the status in a collection. If the returning service itself wants to invoke another service (as per message), do so and maintain a stack for this chain
6) If the message is a query on status of any request , return the status based on the status stack

Apart from Step 2 , authentication, i am not sure if there any readily available features of WCF or the Service factory that can be used for these steps

Do any of these steps seem to be redundant

Thanks and regards.
chakra.



Re: Windows Communication Foundation (Indigo) Service aggregation

BenK

The router sample seems a good starting point - your scenario has aroused my curiosity and i was wondeirng about some of the decisions

Some questions why would you have 1 service handle all authentication This means it has to decrypt every message . Same goes for membership checks looks like this service will be a big bottle neck negating any benfit from queuing This is the main argument of ESB vs hub and spoke .

Why are services "invoked" - normally services are always running Or are all these sub services very expensive.

Routers are usefull but are normally kept very light eg i would only do encryption on the body and route on action/ headers.

Why do the queuing at the router The slower ( eg DB / legacy system) services can queue themselves . If you keep the router light you could be doing thousands of messages per seconds . This allows fast services ( where results are cached / in memory ) not to have any queing or throtteling

Your biggest problem will be routing results back to the caller so that the caller still has a simple programming model - this ok for a few requests but when a client app is waiting on multiple request managing which request in the client belongs to which response can get messy.

Regards,

Ben





Re: Windows Communication Foundation (Indigo) Service aggregation

chakira

Yes, this was supposed to be a ESB. The person who visualised this had a large volume of requests in mind and therefore planned to build our own queue and reply mechanism.

What is the router sample. Guess i will take a look at it.

Thanks.





Re: Windows Communication Foundation (Indigo) Service aggregation

BenK

This is more of a hub and spoke than an ESB , the router sample is in Windows 6.0 SDK -WCF , in scenarios samples i think..

Note all messages will be untyped and hence of type message any routing / prioritisation will needed to be added to the header.

Remember KISS.

Regards,

Ben