基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET平台开发指南 - 分布式应用

分布式系统

        分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统。透明性是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。在分布式数据库系统中,用户感觉不到数据是分布的,即用户不须知道关系是否分割、有无复本、数据存于哪个站点以及事务在哪个站点上执行等。

        在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像是一个系统似的。系统拥有多种通用的物理和逻辑资源,可以动态的分配任务,分散的物理和逻辑资源通过计算机网络实现信息交换。系统中存在一个以全局的方式管理计算机资源的分布式操作系统。通常,对用户来说,分布式系统只有一个模型或范型。在操作系统之上有一层软件中间件(middleware)负责实现这个模型。一个著名的分布式系统的例子是万维网(World Wide Web),在万维网中,所有的一切看起来就好像是一个文档(Web 页面)一样。

        上面的两端是摘抄自网络中的对分布式系统的介绍,按照上面的含义,C/S、B/S结构的应用也应该是分布式的应用,这也许是广义上的分布式应用。而在我们日常的应用开发中,是指对应用的数据层、业务层使用比如DCOM、CORBA、JAVA RMI、WebServices等技术的应用并且数据库、业务逻辑、界面都运行在不同的机器上的应用,这也许是在狭义上的分布式应用。

AgileEAS.NET平台的实现

        Microsoft .Net平台时下为我们提供了.NET WebServices、.NET Remoting、WCF三种优秀的技术,当然了如果有可能,你可以直接通过Socket技术实现自己的分布式通信技术。

        目前AgileEAS.NET平台实现了基于.NET WebServices和.NET Remoting技术的分布式应用场景。

        AgileEAS.NET在实践基于接口驱动的分布式应用访问,对于开发好的系统,在部署时可以根据应用环境选择使用那一种技术,只需要修改配置文件即可。

        AgileEAS.NET在分布式应用技术中提供了如下的程序集:

        EAS.Distributed.Interface:分布式系统接口定义

        EAS.Distributed.Message:分布式通信消息定义

        EAS.Distributed.RemotingClient:基于.NET Remoting技术的AgileEAS.NET分布式实现。

        EAS.Distributed.WebServiceClient:基于WebService技术的AgileEAS.NET分布式实现。

        我们来看一下AgileEAS.NET平台的分布式定义:

wps_clip_image-26900

        我们在分布式应用定义了如下接口:

        IDistributedDataAccessor

        分布式数据访问接口,上面的类库可以看到他直接继承自数据访问接口IDataAccessor,本身并没有定义任何的方法定义,从本质上讲,这个接口实现的是分工式环境下为应用提供和普通应用一样的数据访问功能。

        IDistributedOrmAccessor

分布式ORM访问器接口,继承自数据访问接口IORMAccessor,本身并没有定义任何的方法定义,从本质上讲,这个接口实现的是分工式环境下为应用提供和普通应用一样的ORM操作功能。

       IDistributedFileTransfer

分布式文件传输接口,提供了文件存在检查、文件上传、下载等功能。

       IRMIAccessor

        分布式ORM访问器接口,继承自对象方法访问对象IMethodInvoker,本身并没有定义任何的方法定义,从本质上讲,这个接口实现的是分工式环境下为应用提供和普通应用一样的对像方法功能,这个类似于JAVA RMI的实现思想,在AgileEAS.NET平台中主要用于业务代理层访问业务逻辑层的功能。

分布式与本地的统一和切换

我们再来回顾一下第AgileEAS.NET平台开发指南-实现业务一文中提及的分层架构图:

wps_clip_image-5632

        并且提到如下内容:

        对于涉及到的通信/传输服务,或者说通信/传输服务层,在分布式应用中,她是一个事实存在的通道,客户端部署着界面层、业务代理层,应用程序服务器刚部署着业务逻辑层和数据访问层;但是在非分布式应用中,比如客户端联想着所有组件,那么就通信/传输服务,为了统一这种分层架构,我在AgileEAS.NET平台中,对于访问本地业务组件的这种服务搞了一个虚拟的通信/传输服务。

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

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

        AgileEAS.NET平台上下文为应用开发提供了上下文会话,一个会话包含着若干的会话资源(比如数据连接、N种访问器)、而IOrmAccessor、IDataAccessor、IMethodInvoker本身就是会话资源,在运行期的容器根据系统配置文件决定加载何种访问器:

        普通应用:

wps_clip_image-30815

        基于WebService的分布式环境:

wps_clip_image-971

        基于Remoting的分布式环境:

wps_clip_image-16415

 

链接

     AgileEAS.NET平台开发指南-系列目录

     AgileEAS.NET应用开发平台介绍-文章索引

     AgileEAS.NET官方网站

     敏捷软件工程实验室

 

QQ群:116773358

posted @ 2010-09-15 09:22  魏琼东  阅读(2418)  评论(8编辑  收藏  举报