基于AgileEAS.NET企业应用开发平台的分布式解决方案

开篇 分布式应用

       AgileEAS.NET基于Microsoft .Net构件技术而构建,Microsoft .Net最吸引人的莫过于分布式应用技术,基已经提供了XML WebService、 .Net Remoting、WCF等技

术。AgileEAS.NET平台所实现的分布式包含两层一次,一次是广义的分成式应用,其意义是应用服务定位器提供本地服务组件及不同分布式服务的发现、定位与集

成;狭义的分布式系统是基于信息系统类应用场景所实现的分布式数据访问、分布式ORM、远程方法调用这样的分布式这实现,满足以数据库驱动为主的信息系统开

发的分布式组件。

AgileEAS.NET平台的分布式提供了二种桥接器,通过桥接器实现本地访问与分布式访问的自由切换,只需要通过配置文件更改即可完成,这大大的提高了开发人员的

开发效率,让开发人员更专注业务功能,而尽量少的因为约束而投入过多的开发成本与时间。

分布式应用概述

        分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之

间的区别更多的在于高层软件(特别是操作系统),而不是硬件。内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统。透明性是指每一个数据库

分布节点对用户的应用来说都是透明的,看不出是本地还是远程。在分布式数据库系统中,用户感觉不到数据是分布的,即用户不须知道关系是否分割、有无复本、

数据存于哪个站点以及事务在哪个站点上执行等。

        在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像是一个系统似的。系统拥有多种通用的物理和逻辑资源,可以动态的分配任

务,分散的物理和逻辑资源通过计算机网络实现信息交换。系统中存在一个以全局的方式管理计算机资源的分布式操作系统。通常,对用户来说,分布式系统只有一

个模型或范型。在操作系统之上有一层软件中间件(middleware)负责实现这个模型。一个著名的分布式系统的例子是万维网(World Wide Web),在万维网中,所

有的一切看起来就好像是一个文档(Web 页面)一样。

        上面的两端是摘抄自网络中的对分布式系统的介绍,按照上面的含义,C/S、B/S结构的应用也应该是分布式的应用,这也许是广义上的分布式应用。而在我们日

常的应用开发中,是指对应用的数据层、业务层使用比如DCOM、CORBA、JAVA RMI、WebServices、Remoting等技术的应用并且数据库、业务逻辑、界面都运行在不同的机器

上的应用,这也许是在狭义上的分布式应用。

EAS.NET平台的分布式

Ø 典型的应用场景

         我们知道,在信息系统(Information System)或者管理信息系统(MIS)是基于数据驱动的应用,应用系统中90%以上的业务都是基于数据库的操作,一个分布式的IS

或MIS应用也是遵循此种特性的,基于快速开发的原则,我们实现对分布式的数据访问器、分布式的ORM访问器,则我们已经实现了分布式的90%,在AgileEAS.NET

平台中,我们提出了这么一个应用场景,即MIS系统在开发时只基于标准的数据访问器、ORM访问器、远程方法调用器(本地方法调用器)开发与环境无法的信息系

统,至于信息系统是本地方式运行还是以分布式方法运行取决于部署环境,部署成分布式即分布式运行,部署成本地方式即以本地方式运行。

        分布式系统的典型应用场景应该是,当我们的系统需要部署在不同的物理范围内时,这时候普通的方法方式已经无法满足要求,这时候就必须要使用分布式访问

方式了,当然如果系统是B/S的时候,可能对这个分布式方式的影响并不大,然后分布式的方式更多强调的物理上的位置的不同区域。关于分布式的应用场景可简单

的总结如下:

         clip_image002

Ø 分布式应用系统拓扑结构

        目前、平台的分布式应用主要是在医疗的区域卫生平台整合与HIS系统中,通过分布式的部署方式实现了相关的远程系统访问与本地访问一样简单,并且集成了

强大的智能升级与一键部署功能,让我们更方便的使用系统。

         目前AgileEAS.NET平台的分布式应用结构图:

 

         image

        上图是医疗行业的比较通用的分布式系统的物理结构图,下面我们来看看分布式应用的其他的方式。

        由于AgileEAS.NET的分布式组件与SAAS引擎及ESB组件相互集成,所以平台的分布式基础中间件可以说是功能非常的强大,而且配置起来极其的灵活,只需要

通过配置文件可实现自由的灵活配置,下面我们就来看看通用的分布式应用系统的结构。

        image

        从上图,我们看到AgileEAS.NET平台提供了强大的基础组件,来完成一些任务分发与任务路由等提高性能的并发与系统的可响应性等系统的质量属性方面有了很

大的灵活性与策略,通过配置相关的策略,来达到系统的设计目标。

当然、关于分布式的定义也是比较的模糊,让人有点迷糊,因为有时候可以理解成所有的系统,都可看作广义的分布式系统。

         clip_image007

         这是一般的C/S的应用部署,包括CAS部署方式。通过应用服务器来处理具体的业务,这时候的客户端是瘦客户端。

然后我们再发散下,应用在广域网上的应用。

         clip_image008

         这就是很简单的结构图,与之前我们画的拓扑图相比是很容易理解了。

         关于服务器端的业务拆分与业务的协作,包括数据库的数据拆分与数据的同步问题,就属于平台内部处理的问题,平台会提供相关的组件来处理这方面的内

容。

Ø AgileEAS.NET平台的服务桥接器

         AgileEAS.NET平台对于分布式这块的设计思路,通过提供本地服务桥接器与分布式服务桥接器来实现本地服务与远程服务调用方式的无缝切换。通过配置文件

的配置节信息,在自动的判定是分布式访问还是本地访问的方式。

        服务桥接器是目前平台的核心,平台提供了三种分布式访问的支持,Remoting、Webservice、WCF框架的集成。由于WCF本身已经集成了MSMQ消息服务,所以我

这里就不会详细的阐述了。

        我们就来看看服务桥接器的思路与原理。

        image

        下面我们就来看看客户端容器内部的具体处理,因为业务客户端容器内部不管是不是分布式访问的访问,都会创建业务处理对象代理,只不过分布式访问的方式

时,代理对象通过服务桥接器,实现客户端代理对象与服务器端业务对象完成通信。本地客户端的时候,则直接通过代理对象与数据库交互或者是缓存服务器等。

        image

       通过上图我们可以了解平台的关于分布式与本地切换时的具体的思想和设计体系。

EAS.NET平台的统一

        我们再来回顾一下平台的一般情况的分层架构图:

        clip_image016

        并且提到如下内容:

        对于涉及到的通信/传输服务,或者说通信/传输服务层,在分布式应用中,她是一个事实存在的通道,客户端部署着界面层、业务代理层,应用程序服务器刚部

署着业务逻辑层和数据访问层;但是在非分布式应用中,比如客户端联想着所有组件,那么就通信/传输服务,为了统一这种分层架构,我在AgileEAS.NET平台中,

对于访问本地业务组件的这种服务搞了一个虚拟的通信/传输服务。

        AgileEAS.NET平台自2004年发展到今天,我信提出一个概念,那就在开发过程中,我们可以不考虑应用的部属,开发出的一个可以可以运行在普通环境下,也可

以运行在普通环境,也可以运行在分工式环境中。

        我们如果实现这种普通应用于分工式应用的统一呢,答案是我们使用了会话、资源和基于接口驱动的访问器技术。

        AgileEAS.NET平台上下文为应用开发提供了上下文会话,一个会话包含着若干的会话资源(比如数据连接、N种访问器)、而IOrmAccessor、IDataAccessor、IMet

hodInvoker本身就是会话资源,在运行期的容器根据系统配置文件决定加载何种访问器:

        普通应用:

        clip_image018

       基于分布式环境:

       clip_image020

       基于WebService与Remoting、WCF的分布式访问配置:

       clip_image022

EAS.NET平台的分布式应用的优势

Ø 概述

        AgileEAS.NET平台提供了普通访问方式与分布式访问方式的无缝切换,对系统的开发只需要在业务逻辑层的每个业务对象实现既定的接口或者是继承自平台规定

的对象,那么就可以完成相关的应用服务。这样可以大大的缩短开发人员开发分布式系统的开发难度,并且能够让开发原因更专注具体的业务开发,并且目前平台提

供的插件开发模式下,开发分布式应用与开发普通的应用方式上是一摸一样的,唯一的区别是在系统的应用部署环节上。

Ø 分布式系统与传统系统相比的优势

        î 分布式系统的优势:

        clip_image023

        高性能:分布式架构降低了由于单个服务器的处理压力及访问数据的规模。通过本地缓存及内存缓存的方式来最大程度的降低由于I/O造成的系统瓶颈的影响。

多服务器的并行处理,提供了系统的处理能力与性能。

        高可用性:服务器之间可采用交叉备份方式,主从服务器之间实现数据同步。实施监控服务器的运行状态,监测服务器的可用性状态。当某个主服务器无法使用

时,通过任务分发路由,将任务路由到可用的服务器上。实现任务处理的不间断。

        负载均衡:通过检测每个服务器目前的运行状态与负载情况,根据介入与路由服务器的负载情况,来选择合适的处理服务器介入,根据数据服务器的存储规模及

负载情况,来动态的调整路由规则。

        线性扩展:基于数据分割及应用路由实现的分布式架构,随着业务量的增长,通过增加服务器,调整分割与路由规则,来实现平台容量的线性扩充。通过路由的

状态控制,可实现数据的动态迁移。跳转路由规则即可。

         î 分布式系统的劣势:

         image

        分布式系统还包括一些成本上的投入较传统方式的投入成本大,开发起来相比传统方式复杂的多。所以我们在采用普通的开发方式还是分布式应用时,方方面面

我们都需要考虑,分布式系统的扩展性等各方面都更好,当然复杂度也会提供,同事性能上肯定会比普通方式会有所下降。因为质量因素上的扩展性与高性能本身就

是有冒险的质量属性。

Ø AgileEAS.NET平台的优势

        通过上面的简单的对比,我们能够看出来很多信息,AgileEAS.NET平台集合了分布式系统的有点,同时最大限度的弥补分布式系统的缺点或劣势,通过平台提供

的一些设计机制和思想,让开发人员在开发系统时与普通的开发方式相同。

        关于具体的AgileEAS.NET平台的优势罗列如下:

       clip_image027

       关于平台的分布式应用更多优势,尽在降低开发成本与人员成本上。

      平台使分布式系统的开发方式与普通的系统的开发方式达到一致性,让开发人员不会因为分布式系统的复杂性而无从下手。所以开发人员的成本只是在学习平台

的使用如何开发插件上的学习成本,还不会有其他的更多的成本投入。

更多

         上面说了那么多,下面我们来说说我们目前的平台AgileEAS.NET平台,首先我们所有的东西,不管是产品还是解决方案,都是基于AgileEAS.NET平台之上构建的

产品或解决方案,所以我们所有的技术指导等方面都是基于AgileEAS.NET敏捷快速开发平台之上来说的,一是平台的构建是基于软件工程的思想为指导来构建的,所

以我们的平台是融合了软件工程的思想在其中。

         image_thumb37_thumb

        上图是基本的软件开发过程,当然可能部分现在是走敏捷开发,我们提供的是一样的开发模式,一个模块是一个插件,可以进行独立的插件开发,并且实现真正

的并行开发,来提供开发速度,降低开发成本。

        上图中的产品部署,目前也是已经有了,但是没有提供可视化的管理,后续会提供可视化的管理,将软件打包,统一发布和部署。

       

       上图是平台最终的开发管理解决方案,平台提供丰富的开发工具,并且集成软件工程的思想为指导,帮助企业提高开发效率,帮助开发人员提高开发速度,但是

又不是降低开发人员的水平,让其无用武之地。我们提供的平台不是让开发人员当码农,而是让其自身不断的提升自己对软件的理解和技术的提升。

例如,帮助企业提高开发效率体现如下:

        image_thumb39_thumb

        统一企业的产品线,并且能够更好的对人员进行管理,同时开发上通过平台提供的PM工具,更好的来进行项目的资源的分配与进度的跟踪和调整。对开发人员

来说,通过使用平台,我们能学习到如下:

        image_thumb41_thumb

       关于更多的使用平台后成本的对比和相关的数据信息,我们可以在后面的客户案例中,来进行一一的说明和分析,得出相关的结论。

 

相关信息

       关于更多的系统架构方面的知识,我已建立了交流群,相关资料会第一时间在群里分享,欢迎大家入群互相学习交流:

       微信群:(扫码入群-名额有限)                                                                                              

       

posted @ 2011-08-26 10:15  hotdefans  阅读(5291)  评论(50编辑  收藏  举报