views:

95

answers:

4

It's a somewhat broad question, and for that I apologise, however I am struggling to get to grips with an approach for turning an overly complex (read: poorly designed) ASP.NET WebForms application into something more maintainable. I believe it can be transformed into something which is largely event-driven.

I don't mean events as in the .NET coded event, but the conceptual business process events, such as creating a new customer or completing an order.

In principal, I would like to be able to register a piece of code to be called whenever an event of a particular nature occurs. Ideally, there would be some well-defined mechanism to filter the events, so that the code is only called for events that meet certain criteria.

At present, I haven't found any frameworks that use this approach, which makes me worry I'm on a doomed path.

Are there any frameworks, patterns or good reads available for how you can approach this sort of design?

Is there a good reason why I should or shouldn't be attempting a solution this way?

+2  A: 

The EDA Pattern seems ideal for what you are doing.

Personally I can't see past the ASP.NET MVC Framework for web applications.

James
It's the approach I'd like to take, but are there any tools which will do this, or would I "roll my own"?
Programming Hero
The EDA Pattern is something you would need to implement in your code. The MVC Framework can be installed and used within Visual Studio. It is still something you will have to implement, however, it gives you a helping hand.
James
A: 

You might check out Biztalk for a message based infrastructure and a scalable workflow implementation...

I think it might be able to help you.

Heiko Hatzfeld
+1  A: 

Do you actually mean service bus frameworks? Here are some of them - NServiceBus, Mass Transit, Rhino Service Bus

Canton
ESB sounds an good fit. I'll investigate this option further.
Programming Hero
A: 

DDD group has a lot of discussion about this. If you can pay I would get Udi Dahan or Greg Young to put you on the right path. Basically you would identify those events and make them first class citizens of your model and then use service bus to send messages when these eve ts occur.your domain or even other services could subscribe to those events nad take appropriate action.

epitka