RDIFramework.NET框架SOA解决方案(集Windows服务、WinForm形式与IIS形式发布)-分布式应用算法
RDIFramework.NET,基于.NET的快速信息化系统开发、整合框架,给用户和开发者最佳的.Net框架部署方案。该框架以SOA范式做为指导思想,做为异质系统整合与互操做性、分布式应用提供了可行的解决方案。编程
SOA(service-oriented architecture,也叫面向服务的体系结构或面向服务架构)是指为了解决在Internet环境下业务集成的须要,经过链接能完成特定任务的独立功能实体实现的一种软件系统架构。SOA是一个组件模型,它将应用程序的不一样功能单元(称为服务)经过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操做系统和编程语言。这使得构建在各类这样的系统中的服务能够以一种统一和通用的方式进行交互。浏览器
传统的Web(HTML/HTTP)技术有效的解决了人与信息系统的交互和沟通问题,极大的促进了B2C模式的发展。WEB服务(XML/SOAP/WSDL)技术则是要有效的解决信息系统之间的交互和沟通问题,促进B2B/EAI/CB2C的发展。SOA(面向服务的体系)则是采用面向服务的商业建模技术和WEB服务技术,实现系统之间的松耦合,实现系统之间的整合与协同。WEB服务和SOA的本质思路在于使得信息系统个体在可以沟通的基础上造成协同工做。安全
对于面向同步和异步应用的,基于请求/响应模式的分布式计算来讲,SOA是一场革命。一个应用程序的业务逻辑(business logic)或某些单独的功能被模块化并做为服务呈现给消费者或客户端。这些服务的关键是他们的松耦合特性。例如,服务的接口和实现相独立。应用开发人员或者系统集成者能够经过组合一个或多个服务来构建应用,而无须理解服务的底层实现。举例来讲,一个服务能够用。NET或J2EE来实现,而使用该服务的应用程序能够在不一样的平台之上,使用的语言也能够不一样。微信
SOA的实施具备几个鲜明的基本特征。实施SOA的关键目标是实现企业IT资产的最大化做用。要实现这一目标,就要在实施SOA的过程当中牢记如下特征:微信开发
可从企业外部访问架构
随时可用并发
粗粒度的服务接口分级app
松散耦合框架
可重用的服务
服务接口设计管理
标准化的服务接口
支持各类消息模式
精肯定义的服务契约
不一样种类的操做系统,应用软件,系统软件和应用基础结构(application infrastructure)相互交织,这即是IT企业的现状。一些现存的应用程序被用来处理当前的业务流程(business processes),所以从头创建一个新的基础环境是不可能的。企业应该能对业务的变化作出快速的反应,利用对现有的应用程序和应用基础结构(application infrastructure)的投资来解决新的业务需求,为客户,商业伙伴以及供应商提供新的互动渠道,并呈现一个能够支持有机业务(organic business)的构架。SOA凭借其松耦合的特性,使得企业能够按照模块化的方式来添加新服务或更新现有服务,以解决新的业务须要,提供选择从而能够经过不一样的渠道提供服务,并能够把企业现有的或已有的应用做为服务, 从而保护了现有的IT基础建设投资。
关于SOA平台服务的定义,目前来讲通常有两种形式,一种是定义标准接口的形式,一种是以标准的WebService的形式来下定义服务的实现。
在上图中是以接口的形式来定义SOA平台服务的,RDIFramework.NET的SOA实现也是采用这种方式。具体的实现是以.NET技术的WCF来实现的,服务能够以如下几种方式寄存(发布):Windows服务模式(经常使用)、WinForm界面模式、IIS服务模式等等。在后面的文章咱们会分别介绍。
1、SOA要求一致性
有不少可用于建立、发布、发现和调用服务的候选技术。SOA 应提供一个参考体系结构,以指定服务提供者和使用者将使用的特定机制;咱们应以在 SAO 全部参与者间实现一致性为目标。此类一致性能够减小开发、集成和维护工做。
若是须要使用参考体系结构以外的元素,咱们推荐使用补充性方法。例如,假如咱们为服务发布和发现选择的机制是 UDDI,但某个特定的开发团队已在使用一个基于其余存储库技术的开发流程,此时该如何处理呢?咱们将选择投入精力将该团队的服务同时发布到两个存储库。这样,现有的服务使用者就可使用其熟悉(但可能并不标准)的存储库了。而运行于公共 SOA 基础结构上的使用者则能够为全部服务使用标准存储库——例如 UDDI。
2、SOA 简化开发
咱们但愿任何企业级的 SOA 基础结构都具备可伸缩性和弹性;还应包含行业级的企业服务总线(Enterprise Service Bus,ESB)和安全技术。或者,换种说法,以 SOA 为目标的服务和流程的开发人员可利用成熟的中间件,依赖 SOA 基础结构提供问题的解决方案,如身份验证、消息转换和可靠消息交付。
这些中间件功能的提供应以一个重要的原则为基础:服务和流程开发人员应远离中间件实现的复杂细节。咱们的理想目标是,在咱们的 SOA 环境中工做的开发人员应只须要业务领域的相关知识和基本的编程技巧。
服务具备标准的、通过正式定义的可由计算机处理的接口
了解了工具和代码生成在 SOA 实现中可扮演重要角色以后,咱们如今要强调使用可由计算机处理的接口的重要性。当使用定义良好的可由计算机处理的语言描述了接口时,实际上就为各类工具支持功能提供了支持。咱们但愿改善分离情况,所以咱们强烈建议使用 WSDL 之类正式定义的开放标准语言,而不要使用专用格式。
可由计算机处理的方法的概念应该从服务接口描述(如 WSDL)扩展到全部其余形式的声明信息或元数据。只有同时强调声明技术和可由计算机处理的元数据,才能将其相关的复杂性从业务应用程序开发人员转移到基于标准的中间件中。新兴的 WS-Policy 之类的技术在支持此方法方面充当着重要的角色。
3、服务应设计为可重用
服务设计人员应该记住,他们所开发的任何服务均可能成为可重用资产。设计人员不该只关注服务的最初使用者的需求,而应该进行更为普遍的业务分析,以肯定更全面的需求。咱们建议,设计人员应考虑服务可能的发展方向:
设计必须能适应不断增长的吞吐量;若是服务在使用服务的数量增长的状况下仍可成功运行,那么使用率也会成级数递增。
若是使用服务的数量增长,则数据量和并发数据访问模式可能会与最初投入使用时的状况大为不一样。
咱们必须对服务请求的将来增加进行预计;新使用者可能须要其余的功能,或者须要对现有功能进行更改
4、服务应具备精心选择的粒度
在选择服务粒度时,咱们可能须要在多个因素间进行折衷,如可维护性、可操做性和易用性。任何给定的 SOA 都应向服务设计人员提供指南,以便肯定此类折衷方案。
5、服务应是内聚而完整的
既然认识到了在肯定服务粒度时须要考虑周全,那么在肯定哪些操做应组成服务时有什么注意事项呢?咱们认为有两个对象设计概念颇有用:内聚性和完整性。
6、服务应对实现细节进行封装
咱们封装服务实现的细节——所用的算法和资源——的动机在于增长服务使用者和提供者之间的分离,从而为未来扩展提供灵活性。
7、操做设计应考虑并发性
RDIFramework.NET框架的SOA(WCF服务端)能够经过如下几种方式进行寄存(发布): 以Windows服务方式寄存,以WinForm形式寄存和以IIS形式寄存。
要想框架以WCF模式运行,首先必须配置RDIFramework.NET框架可运行文件所在文件夹的“Config.xml”文件,找到“软件服务提供程序”项,其取值有两种:RDIFramework.ServiceAdapter与RDIFramework.ServiceClient
系统默认为“RDIFramework.ServiceAdapter”,即传统数据访问方式(逻辑上的三层结构),要想系统以WCF模式运行,必须设置其值为:RDIFramework.ServiceClient
经过这样的设置,再简单部署一下,便可以WCF模式运行本程序。WCF模式运行Config.xml文件配置以下图所示。
固然了,对于WCF模式的客户端与服务端的正确配置以及绑定的方法,能够参考相关文章,在咱们框架的配置文件中也进行了详细的说明。
要想咱们的框架以Windows服务寄存,必须部署框架的WCF服务“RDIFramework.WinService”目录包含的内容即为咱们的框架以Windows服务进行寄存所必须的文件,如图7.3.1所示。图中含有两个批处理文件能够很好的帮助咱们安装与卸载框架的Windows服务,他们分别是:
Install RDIFrameworkService.bat:用于安装框架的WCF服务以寄存到Windows服务上。
Uninstall RDIFrameworkService.bat:用于卸载已经安装好框架WCF服务。
以下图:RDIFramework.NET以Windows服务进行寄存所需文件所示。
双击Install RDIFrameworkService.bat文件进行服务的安装,如图7.3.2所示,输入:y,便可对服务进行安装。以下图所示:
安装成功会出现下图所示的字样。
到Windows服务管理器中,能够看到咱们框架的服务已经安装成功,首次安装成功默认没有启动,就请手动启动便可,以下图所示。
对于安装成功的服务,咱们也能够对他进行卸载,卸载服务使用Uninstall RDIFrameworkService.bat文件,双击此文件,输入”y”便可对已成功安装的框架服务进行卸载,以下图所示。
或者用InstallUtil.exe命令卸载框架服务也能够,以下图所示:
框架以WCF模式运行的效果以下图所示,能够看到其与传统的方式运行效果彻底同样。
由于咱们开启了WCF的日志功能,咱们能够经过VS2010自带的“服务跟踪查看器”查看WCF的调用过程,固然建议在系统投入正常使用后,关闭WCF的日志记录功能,以避免影响整个框架的效率,在此仅作测试使用,要打开VS的服务跟踪查看器,到开始菜单VS的安装菜单名下,找到“服务跟踪查看器”,便可打开,以下图所示。
经过“服务跟踪查看器”咱们能够很清楚的看到咱们框架是如何调用WCF服务的,整个过程都详细的进行了记录,以下图所示。对于“服务跟踪查看器”的使用方法能够参考相关文档,也能够查看其自带的帮助文件。
以上就是咱们框架的分布式架构部署方案(以Windows服务为寄存宿主)。
咱们的框架不只能够寄存在Windows服务程序中,还能够以WinForm形式寄存,使用方式与Windows服务寄存相似。以Winform形式寄存意思是说,服务端以窗体界面形式来启动,这种方式比较简单易懂,用户能够把启动框架服务的窗体主程序放在Windows自启动菜单,让开机时自动启动咱们的框架服务。RDIFramework.NET服务端以WinForm形式寄存运行目录:Bin\FrameworkService\RDIFramework.ServiceHost.exe便可,开启后的效果以下图所示:
服务端已经开启,如今运行RDIFrmework.NET客户端,效果与Windows服务方式一至。要测试咱们启动的服务,咱们可使用“WCF测试客户端”来进行测试。wcftestclient.exe是一个GUI的工具用于测试WCF,只需在Visual studio command line 窗口中键入wcftestclient,就启动这个程序。以下图:
能够右键“个人服务项目”选择“添加服务(A)…”来添加WCF服务,在上图中,咱们输入“net.tcp://127.0.0.1:8888/RDIFramework.ServiceAdapter/UserService/mex”添加了对用户服务的测试调用。
咱们的框架不只能够Windows服务、WinForm界面形式寄存,还可使用IIS的Web服务形式来寄存。
要以IIS方式来寄存框架的WCF服务,首先咱们须要把“RDIFramework.WCFService”项目发布到IIS下,发布的方法与常规的Web发布方式同样,能够参照相关的文章,RDIFramework.WCFService项目以下图所示:
发布到IIS后的效果以下图所示:
在这儿须要说明的时,框架的服务发布到IIS下后,对应的应用程序池的.NET Framework版本要选择.NET Framework V4.0以上版本。以下图所示:
至此,咱们能够用浏览器来浏览咱们发布的服务,测试发布的服务是否成功,以下图所示,咱们测试StaffService服务。
咱们也能够用“WCF测试客户端”来测试咱们发布到IIS下的WCF服务,以下图所示:
以上面三种方式发布WCF服务端,来进行分布式应用的部署,均可以成功运行咱们框架的客户端,用户在使用过程当中,能够根据实际状况作出本身的选择。
欢迎关注RDIFramework.net框架官方公众微信(微信号:guosisoft),及时了解最新动态。
扫描二维码当即关注