使用WCF实现SOA面向服务编程—— 架构设计

简介:

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,这个的代价并不大,开销是可以承担的。下面附上最简单的例子,希望有经验的高手给予点评,有不妥的地方请多加指教。

 

 
  1. //实现Ucsmy.Portal.BLL层 
  2.   namespace Ucsmy.Portal.BLL 
  3.   { 
  4.   public class ExampleManager 
  5.      { 
  6.   public IList<Example> GetList(int workers) 
  7.          { 
  8.              IExampleDAL examleDAL = DataAccess.CreateExampleDAL(); 
  9.  return examleDAL.GetList(workers); 
  10.          } 
  11.      } 
  12.   } 
  13.   
  14.   //在Ucsmy.Portal.Service层里使用WCF直接调用BLL层里面的方法 
  15.   namespace Ucsmy.Portal.Service 
  16.   { 
  17.      [ServiceContract(Namespace="Ucsmy.Portal.Service")] 
  18.   publicinterface IExampleService 
  19.       { 
  20.          [OperationContract] 
  21.          IList<Example> GetData(int workers); 
  22.  // TODO: 在此添加您的服务操作 
  23.    
  24.       } 
  25.   
  26.      public class ExampleService : IExampleService 
  27.      { 
  28.   public  ExampleManager exampleManager; 
  29.   
  30.   public ExampleService() 
  31.          { 
  32.              exampleManager =new ExampleManager(); 
  33.          } 
  34.   
  35.  public IList<Example> GetData(int workers) 
  36.          {    
  37.              IList<Example> exampleList = exampleManager.GetList(workers); 
  38.   if (exampleList !=null
  39.  return exampleList; 
  40.   else 
  41.   return new List<Example>(); 
  42.          } 
  43.      } 
  44.  } 

在原代码中,在下以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面向服务开发不失为一种理想地选择。

 

相关文章

SOA的概念

SOA基本架构

结合领域驱动设计的SOA分布式软件架构


本文转自 leslies2  51CTO博客,原文链接:http://blog.51cto.com/79100812/844803


相关文章
|
5天前
|
消息中间件 API 开发者
深入理解微服务架构中的服务通信与数据一致性
【7月更文挑战第15天】在微服务架构中,各个独立部署的服务之间如何高效、可靠地通信以及保持数据一致性是设计时必须考虑的关键问题。本文将探讨微服务间的通信机制和数据一致性策略,包括同步与异步通信方式的比较、事件驱动架构的应用以及CAP定理对数据一致性的影响。文章旨在为后端开发者提供实现微服务间高效通信和数据一致性的实用指导。
|
4天前
|
消息中间件 负载均衡 网络协议
探索微服务架构中的服务通信模式
【7月更文挑战第16天】在微服务架构的海洋中,服务间的通信宛如细丝相连,维系着整个系统的协同与和谐。本文将深入探讨微服务之间如何通过同步与异步通信模式进行交互,并剖析这些模式背后的技术原理及其对系统性能和可扩展性的影响。我们将从理论到实践,一探究竟。
18 6
|
4天前
|
负载均衡 监控 Kubernetes
Service Mesh 是一种用于处理服务间通信的基础设施层,它通常与微服务架构一起使用,以提供诸如服务发现、负载均衡、熔断、监控、追踪和安全性等功能。
Service Mesh 是一种用于处理服务间通信的基础设施层,它通常与微服务架构一起使用,以提供诸如服务发现、负载均衡、熔断、监控、追踪和安全性等功能。
|
25天前
|
消息中间件 传感器 Cloud Native
事件驱动作为分布式异步服务架构
【6月更文挑战第25天】本文介绍事件驱动架构(EDA)是异步分布式设计的关键模式,适用于高扩展性需求。EDA提升服务韧性,支持CQRS、数据通知、开放式接口和事件流处理。然而,其脆弱性包括组件控制、数据交换、逻辑关系复杂性、潜在死循环和高并发挑战。EDA在云原生环境,如Serverless,中尤其适用。
43 2
事件驱动作为分布式异步服务架构
|
4天前
|
消息中间件 API 数据库
在微服务架构中,每个服务通常都是一个独立运行、独立部署、独立扩展的组件,它们之间通过轻量级的通信机制(如HTTP/RESTful API、gRPC等)进行通信。
在微服务架构中,每个服务通常都是一个独立运行、独立部署、独立扩展的组件,它们之间通过轻量级的通信机制(如HTTP/RESTful API、gRPC等)进行通信。
|
8天前
|
消息中间件 API 开发者
探索微服务架构中的服务通信模式
【7月更文挑战第11天】在微服务架构的世界中,服务的通信是构建高效、可维护系统的关键。本文将深入探讨微服务架构中常见的服务通信模式,包括同步通信与异步通信机制,并比较它们在不同场景下的适用性及优缺点。文章旨在为后端开发者提供一份实用的指南,帮助他们在选择适合自己项目需求的通信模式时做出明智的决策。
|
10天前
编程之路:从代码到架构的心路历程
【7月更文挑战第9天】在数字世界的迷宫中,每一行代码都承载着创造者的梦想与挑战。本文将通过个人技术感悟的镜头,探索编程实践的深层次价值,从最初的代码编写到复杂的系统架构设计,揭示技术成长的内在逻辑和情感变迁。我们将一同穿梭在技术的森林里,寻找那些让代码生动起来的秘密。
14 2
|
11天前
|
运维 监控 负载均衡
云原生架构的演进:从微服务到服务的网格
【7月更文挑战第8天】云原生技术正以惊人的速度不断进化,其核心理念是构建可扩展、灵活且高度可靠的应用程序。本文将深入探讨云原生架构的关键组成部分,特别是微服务和服务网格,以及它们如何共同推动现代软件的发展。我们将通过一个具体的案例分析,揭示这些技术如何在现实世界中被应用来提升业务敏捷性和操作效率。
|
1月前
|
存储 前端开发 关系型数据库
在服务的数据驱动中使用三层架构
【6月更文挑战第17天】 三层架构是软件设计中的一种经典模式,将应用分为表示层(UI)、应用层(BLL)和数据层(DAL)。相比于双层架构,三层架构提供了更好的模块化和安全性。多层架构虽少见,但三层架构在现代云原生技术中依然重要,常与微服务结合使用。
31 2
在服务的数据驱动中使用三层架构
|
19天前
|
消息中间件 存储 运维
微服务架构中的服务通信与数据一致性策略
【6月更文挑战第29天】本文深入探讨了微服务架构下的服务间通信和数据一致性问题,提出了一系列解决方案。文章首先分析了微服务环境下面临的主要挑战,随后详细介绍了同步和异步通信模式,并对比了它们在不同场景下的适用性。接着,文章讨论了实现数据一致性的几种策略,包括两阶段提交、补偿事务以及最终一致性,每种策略都配以实际案例分析。最后,结合当前技术趋势,展望了微服务通信和数据一致性处理的未来发展方向。