SOA自己就是一种面向企业级服务的系统架构,简单来讲,SOA就是一种进行系统开发的新的体系架构,在基于SOA架构的系统中,具体应用程序的功能是由 一些松耦合而且具备统一接口定义方式的组件(也就是service)组合构建起来的。所以,基于SOA的架构也必定是从企业的具体需求开始构建的。可是,SOA和其它企业架构的不一样之处就在于SOA提供的业务灵活性。业务灵活性是指企业能对业务变动快速和有效地进行响应、而且利用业务变动来获得竞争优点的能力。对企业级架构设计师来讲,建立一个业务灵活的架构意味着建立一个能够知足当前还未知的业务需求的IT架构。使用WCF实现SOA,正好能够利用WCF的灵活性,把业务层封装,发布为Web服务。这样能够下降系统的耦合度,加大对未知业务的扩展性。编程
Web服务原本就是没有区分代码的,在这个例子里在下多开发了一个Service Interface目的是为了使系统更易于管理。在开发期间,Service是不断更改的,若是在UI层上直接调用服务层,那更改将会是频密的,因此在这里在下开发一个Service Interface层目的是为了把WSDL集成在同一个DLL程序集里面,进行统一修改。最后UI层只要直接调用Service Interface,就能够对系统直接进行操做。要以不一样开发工具来实现Service Interface,这个的代价并不大,开销是能够承担的。下面附上最简单的例子,但愿有经验的高手给予点评,有不妥的地方请多加指教。安全
代码
//实现Ucsmy.Portal.BLL层
namespace Ucsmy.Portal.BLL
{
publicclass ExampleManager
{
public IList<Example> GetList(int workers)
{
IExampleDAL examleDAL = DataAccess.CreateExampleDAL();
return examleDAL.GetList(workers);
}
}
}
//在Ucsmy.Portal.Service层里使用WCF直接调用BLL层里面的方法
namespace Ucsmy.Portal.Service
{
[ServiceContract(Namespace="Ucsmy.Portal.Service")]
publicinterface IExampleService
{
[OperationContract]
IList<Example> GetData(int workers);
// TODO: 在此添加您的服务操做
}
publicclass ExampleService : IExampleService
{
public ExampleManager exampleManager;
public ExampleService()
{
exampleManager =new ExampleManager();
}
public IList<Example> GetData(int workers)
{
IList<Example> exampleList = exampleManager.GetList(workers);
if (exampleList !=null)
return exampleList;
else
returnnew List<Example>();
}
}
}服务器
在原代码中,在下以Ucsmy.Portal.ServiceFactory实现Service Interface层,其实这个ServiceFactory没有太多工做,只是对WCF添加服务引用,而后直接生成DLL便可。固然这只是初步的作法,在往后完善代码的时候,这一层还须要对WCF的生命流程进行管理。架构
最后在UI层只要直接添加对Service.Portal.ServiceFactory的引用就能够直接运行,无需再理会BLL,DAL.......等复杂的逻辑转换。在实现多功能分布式开发的时候,以WCF实现的SOA的开发方式更能展现其优点。在现代的大型企业系统开发过程当中,系统每每会使用B/S,C/S混合的开发模式。在以往的开发过程,开发人员每每把B/S,C/S分开来实现。在使用WCF技术后,开发人员能够把功能模块统一发布为WCF,而后绑定不一样的endpoint进行发布,将B/S和C/S方式的业务逻辑层真正地融合在一块儿,从而下降开发难度。
使用WCF实现SOA,能够对事务、安全、编码等进行统一管理,协调了各服务器之间的系统操做。它涵盖了以前微软推出的全部用于分布式开发的技术,包括Remoting、Web Services、WSE、MSMQ等,并以一种统一的编程模式来实现。WCF既支持具备互操做性的Web服务,也可以实现.NET客户端 与.NET服务端的通讯,提供了分布式事务的支持,同时在安全性上,它彻底遵循了WS-*的标准,此外,它还支持队列服务,能够很是方便地利用消息队列完 成异步操做与脱机调用。在众多优势的支持下,使用WCF实现SOA面向服务开发不失为一种理想地选择。异步