In part one of our series we'll begin by analyzing the current state of our application. I've chosen the ASP.NET MVC Music Store as my example as it has a very small feature set. What we have is a very simple store front application where you can browse and purchase albums. The application is your atypical web application that is entirely dependent on a Request/Response architecture. There are a few places within the application where Request/Response may pose some challenges.
The Shopping Cart
Currently the application pushes a record to the database for each item in your cart. As a user you really don't know this is happening until something goes wrong. If for some reason the supporting database was no longer available, the user would not be able to add items to the cart. Some may say that you have larger issues in that if the database is down, the whole site is down. For our purposes let's pretend we cache all our static content on a CDN somewhere and we can still browse albums. To keep our users filling there carts, we'll push a message to the server and update the database in a separate process altogether.
This feature works the same as the Shopping Cart, the user enters their information and their order is pushed to the database. We have the same potential issue here, if we cannot accept orders our music store is not making us money. We'd also hate to make a user who has a large order submit it all over again. We're really concerned with 2 things here, making the customer happy and making sure the store is taking orders. We'll take the same approach as above and push messages to the server and subsequently update the database. Now the customers will be happy and we won't lose orders.
To accomplish all of this we'll use NServiceBus to move messages to the server and process them. We'll device a way to plug NSB into the ASP.NET runtime so we can send messages from the web application. Next we'll create a NSB host on our server to handle the carts and the orders.
We'll found a couple of soft spots in our application where we can apply messaging to make the customer happy and keep the store running. Next time we'll start to apply NSB to our solution and walk through the basics of configuring the web application to send messages.