SOA or Service-Oriented Architecture is a concept born in the enterprise as a way to not only abstract logic but centralize installations. Basicly what SOA is, is a methodology of placing your enterprise business logic into Services like Webservice, J2EE, Soap or some kind of RPC. As such SOA can be implemented in any platform as long as it supports some RPC (Remote Procedure Calls) technology, and as such is also a great method of extending compatibility across platforms. 

         What this allows you to do is further abstract your layers (now there is a technology layer between them) and it lets you centralize installation of logical chunks of code. Instead of having a Business application object that is installed everywhere you can wrap it in a service and have a Business application Service.  Once its a service, any other application can consume it and those developers don't have to have access to the code, settings, data, etc..

       SOA is a good thing and can be used in a bunch of diffrent ways, but don't get carried away. As a general rule I use SOA when developing code that will have multiple types of customers, where I don't know who all will be using it, or when its setup is constrained (by licensing, settings, security, etc..) and as such we can't just copy it all over the place.

       Anyways I'm going to be babbling about this stuff once I really get into work on our projects and I figured a little primor would make future posts more "understandable".