Business services, EDA and asynchronous messaging

Sunday, April 12 2009 - , - 2 comments

Business services are not the same thing as web services. A business service is a high-level concept: a large-grained, cohesive set of business functionality. Everywhere you see the word "service" in this post you should think "big chunk of business functionality". Each business service is likely implemented as a set of smaller-grained components (some of which might be web services). Business service is very macro. Web service is very micro. In an event-driven architecture (EDA), business services communicate with one another through asynchronous messaging, in order to reduce the coupling between...

On Configuration

Sunday, April 12 2009 - , - 0 comments

[I recently wrote this up for work, and thought it was worth re-posting here.] These ideas come almost entirely from Udi Dahan and how he implemented nServiceBus, but unfortunately I can't find where he said it. It may have been when I attended his class in Austin last October. I define configuration as "stuff that needs to be easy to change." Udi says there are two major categories of configuration, with very different characteristics. One category has to do with operational concerns, such as: The specifics of the physical deployment environment (URLs, machine names, connection strings, etc.)...

The life and times of an ASP.NET MVC Framework request

Monday, February 16 2009 - , - 2 comments

[I recently wrote this up for some folks at work, and thought it was worth re-posting here.] In this post I'll detail what happens during a request to the default ASP.NET MVC site that you get when you create a new MVC project in Visual Studio. My goal is to list the major classes involved and how they interact. There is a lot more that goes on during a request, and I've completely skipped action filters. This is just the highlights. First, there are some steps that happen at application start: The web.config file adds System.Web.Routing.UrlRoutingModule. During initialization, UrlRoutingModule...

What is dependency injection?

Monday, February 16 2009 - - 0 comments

[I recently wrote this up for some folks at work, and thought it was worth re-posting here.] Dependency injection is a hot topic these days. You hear terms like "dependency injection", "inversion of control", "IoC container", "DI container", etc. a lot. But like with "SOA", people tend to define the terms however suits them. I'm going to do the same. :) The first thing I want to do is distinguish between dependency injection and a container. Dependency injection is a pattern. You don't need any software tools other than your favorite language and compiler to "do dependency injection." The dependency...

Follow up on Silverlight and SaaS

Sunday, December 14 2008 - , , - 0 comments

Back in May, I wrote a post speculating about using Silverlight on the server to allow tenants in a multitenant SaaS application to write and run custom code on shared servers. Silverlight provides a subset of the full .NET framework and provides a security sandbox -- both very useful in that kind of scenario. At the time I thought the idea was a little hare-brained. It had occurred to me while I was brushing my teeth one morning and it seemed interesting enough. I felt a little bit less hare-brained when Scott Hanselman posted in September about his discovery of Silverlight living outside the...

What is a service?

Sunday, October 19 2008 - - 0 comments

In last week's training , one of the biggest "Aha!" moments for me was an answer to the simple question "What is a service?" As someone who consumes a lot of guidance from Microsoft's p&p team , and looks to gurus like Nicholas Allen , Michele Leroux Bustamante and Juval Lowy for all sorts of WCF insights, my working definition of a service has been a very technical one. A service is a cohesive set of functionality described by a contract. In WCF terms, it's a .NET interface decorated with a [ServiceContract] attribute, along with one or more implementations of that interface. One of Udi 's...

Udi Dahan's distributed systems course

Sunday, October 19 2008 - - 0 comments

Last week, I had the opportunity to attend Udi Dahan 's Advanced Distributed Systems Design using SOA & DDD in Austin, TX. I learned a ton and gained a much clearer understanding of SOA and how to design systems using that architectural style. I'll be blogging more about the subject over the next couple of weeks. This post is just to say a big thanks to Udi and to Headspring for sponsoring the course. It was a great week, and I was lucky to meet a bunch of great people. In addition to Udi: Aaron Jensen , Jacob Lewallen, Jimmy Bogard , Blake Carroway , Eric Hexter , and some other very nice...

Could Silverlight be used as a server-side sandbox for SaaS?

Thursday, May 29 2008 - , - 0 comments

For the past couple of years, software-as-a-service has been in the tech headlines. Salesforce.com and Microsoft Dynamics CRM Live provide customer relationship management (CRM) functionality. Google Apps , Zoho , NetSuite and many others offer productivity and database applications. Amazon S3/EC2/SimpleDB , Google App Engine , and Microsoft Sql Server Data Services support hosting databases and custom applications in the cloud. The last of those -- full custom applications hosted on someone else's servers -- is very cool and very powerful. However, I've been especially interested in how existing...

WCF: Application Deployment Scenarios whitepaper

Monday, May 26 2008 - - 0 comments

Michele Leroux Bustamante has published a whitepaper on WCF that describes a huge number of scenarios and how you can set up WCF services to support each one. Posting here so I have it as a reference. Many of these scenarios fit quite nicely with the needs at my current job -- everything from POX and JSON endpoints, RSS and ATOM endpoints, reliable messaging with MSMQ, and high volume publish/subscribe. (More on the details in future posts.)

Balancing the information deficit

Sunday, May 25 2008 - 0 comments

Earlier this year I was listening to an episode of DotNetRocks on which Don Box and Chris Sells discussed the future of technical book publishing. Don was asked something about what blogs/books he reads, and his response -- very roughly paraphrased -- was that he's so busy producing stuff that he doesn't have a whole lot of time to be consuming stuff. If we use the analogy of the trade surplus/deficit, Don has an enormous public information surplus with the world. I, on the other hand, have had a huge public information deficit over the past couple of years -- consuming orders of magnitude more...