基于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平台的分布式定义:

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

IDistributedDataAccessor

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

IDistributedOrmAccessor

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

IDistributedFileTransfer

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

  IRMIAccessor

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

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

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

        并且提到如下内容:

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

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

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

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

         普通应用:

        基于WebService的分布式环境:

        基于Remoting的分布式环境:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏叁金大数据

存储是怎样炼成的?

什么FAT,NTFS,NFS,DAS,SAN,NAS,OSD这些名词我一个都不认识。

1693
来自专栏SEO

SEOer必学网站分析神器(二)

昨晚发布“SEOer必学网站分析神器(全新解析一)”后,突然发现,里面少讲了一点内容,在这里给大家补上。 移动适配:除了上次讲的一些内容外,还是可以加快移动端...

3416
来自专栏云计算-私有云

Windows Server 2019前瞻

十一假期马上就过完了,不知道各位小伙伴玩的怎么样啊,是否有遇到“人在囧途”或者是否看到了处处大海。微软于2018年9月24日-28日在美国召开了Ignite 2...

1.4K0
来自专栏服务端技术杂谈

动手撸一个规则引擎

最开始听说过规则引擎可能是一个类似于OA的系统中,通过规则配置,让一个审批流程得到配置化和规则化。

1794
来自专栏FreeBuf

设计缺陷将导致亚马逊Echo变身成为监听设备

MWR的安全研究专家发现亚马逊Echo存在一个物理攻击漏洞,该漏洞将允许攻击者获得设备的root shell(设备底层为Linux操作系统),然后安装恶意软件,...

37815
来自专栏顾宇的研习笔记

AWS 上的生产环境架构优化案例

在AWS 上的生产环境性能分析案例一文中,记录了我对客户应用生产环境的一次性能分析。接下来,我们要根据所发现的性能问题进行架构优化,以提升可用性和性能。同时,这...

1551
来自专栏美团技术团队

消息队列设计精要

消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。 当今市面上...

8335
来自专栏刘望舒

知乎 Android 客户端组件化实践

知乎 Android 客户端最早使用的是最常见的单工程 MVC 架构,所有业务逻辑都放在了主工程 Module 里,网络层和一些公共代码分别被抽成了一个 Mod...

4174
来自专栏后端技术探索

纯干货--秒杀系统架构分析与实战

(1)查询商品;(2)创建订单;(3)扣减库存;(4)更新订单;(5)付款;(6)卖家发货

3234
来自专栏恰童鞋骚年

《大型网站技术架构》读书笔记四:瞬时响应之网站的高性能架构

此篇已收录至《大型网站技术架构》读书笔记系列目录贴,点击访问该目录可获取更多内容。

1032

扫码关注云+社区

领取腾讯云代金券