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

简介: 本文转载:http://kb.cnblogs.com/page/96479/ SOA本身就是一种面向企业级服务的系统架构,简单来说,SOA就是一种进行系统开发的新的体系架构,在基于SOA架构的系统中,具体应用程序的功 能是由 一些松耦合并且具有统一接口定义方式的组件(也就是service)组合构建起来的。
本文转载: http://kb.cnblogs.com/page/96479/

 

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

  下载原代码

 

 


 

目录
相关文章
|
6月前
|
消息中间件 负载均衡 中间件
⚡ 构建真正的高性能即时通讯服务:基于 Netty 集群的架构设计与实现
本文介绍了如何基于 Netty 构建分布式即时通讯集群。随着用户量增长,单体架构面临性能瓶颈,文章对比了三种集群方案:Nginx 负载均衡、注册中心服务发现与基于 ZooKeeper 的消息路由架构。最终选择第三种方案,通过 ZooKeeper 实现服务注册发现与消息路由,并结合 RabbitMQ 支持跨服务器消息广播。文中还详细讲解了 ZooKeeper 搭建、Netty 集群改造、动态端口分配、服务注册、负载均衡及消息广播的实现,构建了一个高可用、可水平扩展的即时通讯系统。
696 0
|
6月前
|
文字识别 运维 监控
架构解密|一步步打造高可用的 JOCR OCR 识别服务
本文深入解析了JOCR OCR识别服务的高可用架构设计,涵盖从用户上传、智能调度、核心识别到容错监控的完整链路,助力打造高性能、低成本的工业级OCR服务。
281 0
架构解密|一步步打造高可用的 JOCR OCR 识别服务
|
运维 监控 负载均衡
探索微服务架构下的服务治理:动态服务管理平台深度解析
探索微服务架构下的服务治理:动态服务管理平台深度解析
|
10月前
|
消息中间件 人工智能 监控
文生图架构设计原来如此简单之分布式服务
想象一下,当成千上万的用户同时要求AI画图,如何公平高效地处理这些请求?文生图/图生图大模型的架构设计看似复杂,实则遵循简单而有效的原则:合理排队、分工明确、防患未然。
404 14
文生图架构设计原来如此简单之分布式服务
|
9月前
|
存储 人工智能 自然语言处理
Cursor这类编程Agent软件的模型架构与工作流程
编程Agent的核心是一个强大的大语言模型,负责理解用户意图并生成相应的代码和解决方案。这些模型通过海量文本和代码数据的训练,掌握了广泛的编程知识和语言理解能力。
942 1
|
10月前
|
设计模式 机器学习/深度学习 前端开发
Python 高级编程与实战:深入理解设计模式与软件架构
本文深入探讨了Python中的设计模式与软件架构,涵盖单例、工厂、观察者模式及MVC、微服务架构,并通过实战项目如插件系统和Web应用帮助读者掌握这些技术。文章提供了代码示例,便于理解和实践。最后推荐了进一步学习的资源,助力提升Python编程技能。
|
10月前
|
机器学习/深度学习 设计模式 API
Python 高级编程与实战:构建微服务架构
本文深入探讨了 Python 中的微服务架构,介绍了 Flask、FastAPI 和 Nameko 三个常用框架,并通过实战项目帮助读者掌握这些技术。每个框架都提供了构建微服务的示例代码,包括简单的 API 接口实现。通过学习本文,读者将能够使用 Python 构建高效、独立的微服务。
|
存储 JavaScript 开发工具
基于HarmonyOS 5.0(NEXT)与SpringCloud架构的跨平台应用开发与服务集成研究【实战】
本次的.HarmonyOS Next ,ArkTS语言,HarmonyOS的元服务和DevEco Studio 开发工具,为开发者提供了构建现代化、轻量化、高性能应用的便捷方式。这些技术和工具将帮助开发者更好地适应未来的智能设备和服务提供方式。
基于HarmonyOS 5.0(NEXT)与SpringCloud架构的跨平台应用开发与服务集成研究【实战】
|
消息中间件 存储 安全
分布式系统架构3:服务容错
分布式系统因其复杂性,故障几乎是必然的。那么如何让系统在不可避免的故障中依然保持稳定?本文详细介绍了分布式架构中7种核心的服务容错策略,包括故障转移、快速失败、安全失败等,以及它们在实际业务场景中的应用。无论是支付场景的快速失败,还是日志采集的安全失败,每种策略都有自己的适用领域和优缺点。此外,文章还为技术面试提供了解题思路,助你在关键时刻脱颖而出。掌握这些策略,不仅能提升系统健壮性,还能让你的技术栈更上一层楼!快来深入学习,走向架构师之路吧!
348 12
|
Kubernetes Cloud Native Docker
云原生之旅:从传统架构到容器化服务的演变
随着技术的快速发展,云计算已经从简单的虚拟化服务演进到了更加灵活和高效的云原生时代。本文将带你了解云原生的概念、优势以及如何通过容器化技术实现应用的快速部署和扩展。我们将以一个简单的Python Web应用为例,展示如何利用Docker容器进行打包和部署,进而探索Kubernetes如何管理这些容器,确保服务的高可用性和弹性伸缩。