使用 WCF 实现 SOA 面对效劳编程—— 架构设计作者: 风尘浪子 来源: 博客园 发布时间: 2024-04-12 11:07 阅读: 3121 次 原文链接 全屏阅读 [收藏] 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{ public class ExampleManager { public IList 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")] public interface IExampleService { [OperationContract] IList GetData(int workers); // TODO: 在此添加您的效劳操作 } public class ExampleService : IExampleService { public ExampleManager exampleManager; public Exa...