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

简介: 分布式系统         分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。

分布式系统

        分布式系统(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

目录
相关文章
|
2月前
|
缓存 NoSQL PHP
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
57 5
|
2月前
|
开发框架 安全 .NET
在数字化时代,.NET 技术凭借跨平台兼容性、丰富的开发工具和框架、高效的性能及强大的安全稳定性,成为软件开发的重要支柱
在数字化时代,.NET 技术凭借跨平台兼容性、丰富的开发工具和框架、高效的性能及强大的安全稳定性,成为软件开发的重要支柱。它不仅加速了应用开发进程,提升了开发质量和可靠性,还促进了创新和业务发展,培养了专业人才和技术社区,为软件开发和数字化转型做出了重要贡献。
47 5
|
2月前
|
开发框架 .NET C#
.NET 技术凭借高效开发环境、强大框架支持及跨平台特性,在软件开发中占据重要地位
.NET 技术凭借高效开发环境、强大框架支持及跨平台特性,在软件开发中占据重要地位。从企业应用到电子商务,再到移动开发,.NET 均展现出卓越性能,助力开发者提升效率与项目质量,推动行业持续发展。
45 4
|
2月前
|
机器学习/深度学习 人工智能 Cloud Native
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台。本文深入解析 .NET 的核心优势,探讨其在企业级应用、Web 开发及移动应用等领域的应用案例,并展望未来在人工智能、云原生等方面的发展趋势。
49 3
|
2月前
|
开发框架 安全 Java
.NET技术的独特魅力与优势,涵盖高效的开发体验、强大的性能表现、高度的可扩展性及丰富的生态系统等方面,展示了其在软件开发领域的核心竞争力
本文深入探讨了.NET技术的独特魅力与优势,涵盖高效的开发体验、强大的性能表现、高度的可扩展性及丰富的生态系统等方面,展示了其在软件开发领域的核心竞争力。.NET不仅支持跨平台开发,具备出色的安全性和稳定性,还能与多种技术无缝集成,为企业级应用提供全面支持。
46 3
|
3月前
|
人工智能 文字识别 Java
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
尼恩,一位拥有20年架构经验的老架构师,通过其深厚的架构功力,成功指导了一位9年经验的网易工程师转型为大模型架构师,薪资逆涨50%,年薪近80W。尼恩的指导不仅帮助这位工程师在一年内成为大模型架构师,还让他管理起了10人团队,产品成功应用于多家大中型企业。尼恩因此决定编写《LLM大模型学习圣经》系列,帮助更多人掌握大模型架构,实现职业跃迁。该系列包括《从0到1吃透Transformer技术底座》、《从0到1精通RAG架构》等,旨在系统化、体系化地讲解大模型技术,助力读者实现“offer直提”。此外,尼恩还分享了多个技术圣经,如《NIO圣经》、《Docker圣经》等,帮助读者深入理解核心技术。
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
|
4月前
|
存储 NoSQL Java
分布式session-SpringSession的应用
Spring Session 提供了一种创建和管理 Servlet HttpSession 的方案,默认使用外置 Redis 存储 Session 数据,解决了 Session 共享问题。其特性包括:API 及实现用于管理用户会话、以应用容器中性方式替换 HttpSession、简化集群会话支持、管理单个浏览器实例中的多个用户会话以及通过 headers 提供会话 ID 以使用 RESTful API。Spring Session 通过 SessionRepositoryFilter 实现,拦截请求并转换 request 和 response 对象,从而实现 Session 的创建与管理。
115 0
分布式session-SpringSession的应用
|
3月前
|
缓存 网络协议 API
分布式系统应用之服务发现!
分布式系统应用之服务发现!
|
3月前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
|
1月前
|
存储 NoSQL Java
使用lock4j-redis-template-spring-boot-starter实现redis分布式锁
通过使用 `lock4j-redis-template-spring-boot-starter`,我们可以轻松实现 Redis 分布式锁,从而解决分布式系统中多个实例并发访问共享资源的问题。合理配置和使用分布式锁,可以有效提高系统的稳定性和数据的一致性。希望本文对你在实际项目中使用 Redis 分布式锁有所帮助。
168 5