I just came across this and had to chime in. :)
I perceive a lot of value in service orientation and WCF specifically (which absolutely is NOT just about web services).
Now, before I get flamed, I absolutely don't see a need to break Orchard itself into more tiers, it's a fantastic system and I love the architecture. For any amount of scalability you just deploy to a web farm - from what I have seen in the code, if you
run into performance issues they absolutely won't be caused by Orchard. If the single database behind Orchard is a bottleneck then there are ways to fix that as well with or without service orienting the data layer.
Tiers and scalability are IMO only a very small part of why the choice of service orientation should be made (specifically WCF).
Study Juval Lowy's book "Programming WCF Services" and you'll get the idea - WCF isn't about web services, it IS the new .NET.
Should mean a LOT to say that part of the CORE of the next Windows OS is built ON WCF (though I don't think it's being called WCF in that context).
Also, most develorers don't realize that almost ALL "3-tier" architectures are really just one fat tier split across multiple assemblies. :) If your database has a User table with FirstName and LastName and your data access layer exposes
a single method named GetUser that returns a user dto with FirstName and LastName and your UI has a form with a "Get User" button that displays the labels FirstName and LastName well, argue as much as you'd like but you really have only 1 tier. Go change FirstName
in your database to FName and tell me how well your application runs without refactoring the other two "tiers". ;)
Or even better, remove FirstName from the database completely, because you no longer need it. Consider it a litmus test. If you get an error in yor UI, you probably don't have a true n-tier architecture. The whole point about tiers to to allow each
the chance to interpret the data AS THEY WANT TO, not just funnel the data up to the next tier. If all you are doing is piping the data verbatim from the database through the DAL to the UI then you really don't need the DAL - it's not serving you any real