惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
Blog — PlanetScale
Blog — PlanetScale
GbyAI
GbyAI
C
Check Point Blog
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The GitHub Blog
The GitHub Blog
A
About on SuperTechFans
Recent Announcements
Recent Announcements
L
LangChain Blog
Microsoft Azure Blog
Microsoft Azure Blog
小众软件
小众软件
J
Java Code Geeks
博客园_首页
Jina AI
Jina AI
美团技术团队
H
Help Net Security
MyScale Blog
MyScale Blog
Engineering at Meta
Engineering at Meta
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
人人都是产品经理
人人都是产品经理
Y
Y Combinator Blog
S
SegmentFault 最新的问题

博客园 - Xt Idt

ASP.NET MVC 4 RC的JS/CSS打包压缩功能 自定义WCF的配置文件 C#综合揭秘——分部类和分部方法 结合领域驱动设计的SOA分布式软件架构 SOA面向服务架构——SOA的概念 选择HttpHandler还是HttpModule? MVP解读 揭秘Amazon反应速度超快的下拉菜单 jQuery-menu-aim.js SQL注入攻防入门详解 Visual Studio 2010 如何改用 Beyond Compare 作为 TFS 的比较工具 jquery post get 跨域 提交数据 使用HttpContext的User属性来实现用户验证-.NET教程 在Web Service中使用Windows验证的方式 对于表列数据类型选择的一点思考 (转发)有关T-SQL的10个好习惯 jQuery.extend 函数详解 跟我一起学写jQuery插件(附完整实例及下载) 分析URL Routing和URL Rewriting两者之间的不同
使用WCF实现SOA面向服务编程—— 架构设计
Xt Idt · 2013-07-01 · via 博客园 - Xt Idt

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面向服务开发不失为一种理想地选择。