博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用WCF实现SOA面向服务编程—— 架构设计
阅读量:5234 次
发布时间:2019-06-14

本文共 2248 字,大约阅读时间需要 7 分钟。

 

作者:   来源:   发布时间: 2011-04-12 11:07  阅读: 9833 次  推荐: 1                                                    

  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<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")] public interface IExampleService { [OperationContract] IList<Example> GetData(int workers); // TODO: 在此添加您的服务操作 }
public class 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 return new 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面向服务开发不失为一种理想地选择。

  

转载于:https://www.cnblogs.com/qq260250932/p/5346905.html

你可能感兴趣的文章
select 的选中问题
查看>>
java Pattern类
查看>>
基本算法-0/1背包问题
查看>>
广商14级软件工程团队第二次冲刺相关问题
查看>>
测试经理/组长职责
查看>>
cocos2d-x中描述精灵帧图片的plist和json文件各个key的含义
查看>>
Java垃圾回收机制
查看>>
排球比赛规则
查看>>
远程WebService方法
查看>>
【转】HashMap 和 HashTable 到底哪不同 ?
查看>>
软件工程课程-课程作业安排
查看>>
第三次作业
查看>>
loadxml Data at the root level is invalid. Line 1, position 1.
查看>>
springMVC-自定义数据类型转换器
查看>>
使用 VS2015 编译并调试 ffmpeg
查看>>
正则匹配原理之——逆序环视深入
查看>>
统计数字
查看>>
Eclipse build时间太长,无法忍受,完美解决方案,Eclipse 编译太卡,耗时太长
查看>>
solr整合spring
查看>>
linux基础命令
查看>>