多模块分布式系统的简单服务访问 - OSGI原形(.NET)
2013-09-12 10:15
239 查看
多模块分布式系统的简单服务访问 - OSGI原形(.NET)
先描述一下本篇描述的适用场景(3台server, 各个模块分布在各个Server上,分布式模块互相依赖、交互的场景):多个OSIG引擎交互上,使用的是.net remoting实现的,原理:
当请求某个接口时(也就是要获取某Service Instance时),OSGI通过remoting连接到提供这个服务的url上,如:tcp://localhost:8888/OSGI
连接成功后,源OSGI发送OpenService命令,让目标OSGI注册TCP Channel
根据接口type、dll路径、appdomain name,在某个AppDomain中执行解析接口,然后连接到目标OSGI新开的服务上(AppDomain.DoCallBack)
在配置上,除了上篇文章中的模块配置信息外,在Manifests.xml文件中也加入了分布式服务配置,如下:
Manifests.xml
<?xml version="1.0" encoding="utf-8" ?> <Manifests> <ServicePort>1000</ServicePort> <RemoteServiceMap> <Service TargetIP="127.0.0.1" TargetPort="2000">OrderModule.PublicInterfaces.IOrderProcessor</Service> </RemoteServiceMap> </Manifests>//这个代表:当前宿主没有模块承载,但是能和其他宿主通信,达到转发的目的
既有本地模块,又有远程服务依赖时的配置文件
<?xml version="1.0" encoding="utf-8" ?> <Manifests> <ServicePort>2000</ServicePort> <Manifest>D:\documents\visual studio 2010\Projects\OSGIDemo\OrderModule\bin\Debug\Manifest.xml</Manifest> //本地模块定义 <RemoteServiceMap> <Service TargetIP="127.0.0.1" TargetPort="3000">LoggingModule.PublicInterfaces.ILog</Service> //给ILog这个接口提供服务的真正服务在远程server上,是个远程依赖 </RemoteServiceMap> </Manifests>
<?xml version="1.0" encoding="utf-8" ?> <Module> <Name>Order Module</Name> <Version>1</Version> <Assembly>OrderModule</Assembly> <Activator>OrderModule.Activator</Activator> <RequiredService>LoggingModule.PublicInterfaces.ILog</RequiredService> //此处的配置没有什么特别的 <ProvidedService>OrderModule.PublicInterfaces.IOrderProcessor</ProvidedService> </Module>
我的demo(里面有3个Host,宿主):
运行效果:
很好很强大,哈哈,相信以后会更加好。等我把这个重构下,再换上wcf。。。。这样事务就一下子集成了。
代码下载
相关文章推荐
- 多模块分布式系统的简单服务访问 - OSGI原形(.NET)
- 分布式系统的消息&服务模式简单总结
- 纳税服务系统【用户模块之简单增删改查】
- 简单的分布式图片存储及搜索访问服务
- 纳税服务系统【用户模块之简单增删改查】
- C#.NET控制模块菜单的访问权限(走火入魔通用权限管理系统组件在信息管理系统中的用处)
- Net分布式系统之五:微服务架构
- Net分布式系统之六:微服务之API网关
- 分享在Linux下使用OSGi.NET插件框架快速实现一个分布式服务集群的方法
- 一种简单的分布式系统服务架构
- C#.NET控制模块菜单的访问权限(走火入魔通用权限管理系统组件在信息管理系统中的用处)
- Net分布式系统之:微服务架构
- 多模块后带来的问题解决方法 - OSGI原形(.NET)
- 分布式系统架构之框架化服务
- OSGI框架:模块层、生命周期层、服务层
- 分布式系统架构设计之数据访问
- 企业分布式微服务云SpringCloud SpringBoot mybatis (八)Spring Boot中使用Spring-data-jpa让数据访问更简单
- 分布式系统的自主服务
- JNDI访问LDAP服务简单应用示例
- OSGi与equinox创建高度模块化的java系统 第六章 DS模块 遇到的问题