多模块分布式系统的简单服务访问 - OSGI原形(.NET)
多模块分布式系统的简单服务访问 - 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。。。。这样事务就一下子集成了。
心怀远大理想。
为了家庭幸福而努力。
A2D科技,服务社会。
A2D Framework(Alpha)
- 1. Cache System(本地缓存与分布式缓存共存、支持Memcache和Redis、支持贴标签形式(类似Spring 3.x的Cache形式))
- 2. Event System(本地事件与分布式事件分发)
- 3. IoC(自动匹配功能,实例数量限制功能)
- 4. Sql Dispatcher System(基于Sql server的读写分离系统)
- 5. Session System(分布式Session系统)
- 6. 分布式Command Bus(MSMQ实现,解决4M限制,支持Session的读取)
- 7. 规则引擎
多模块分布式系统的简单服务访问 - OSGI原形(.NET)的更多相关文章
- 多模块后带来的问题解决方法 - OSGI原形(.NET)
目前只做了基础的功能,比如: 各个模块单独的AppDomain容器 Activator激活 导出的服务检查 不过,虽说这样,但目前的这个版本已经能实现模块分离.互相依赖调用等功能了,对模块划分已经有很 ...
- 分布式系统的消息&服务模式简单总结
分布式系统的消息&服务模式简单总结 在一个分布式系统中,有各种消息的处理,有各种服务模式,有同步异步,有高并发问题甚至应对高并发问题的Actor编程模型,本文尝试对这些问题做一个简单思考和总结 ...
- Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题
现互联网公司后端架构常用到Spring+SpringMVC+MyBatis,通过Maven来构建.通过学习,我已经掌握了基本的搭建过程,写下基础文章为而后的深入学习奠定基础. 首先说一下这篇文章的主要 ...
- Ubuntu中使用Nginx+rtmp模块搭建流媒体视频点播服务
1. 背景 不知不觉笔者来到流媒体部门已经一年半多了,积攒了不少的流媒体知识,但平时工作也比较忙,很少进行总结性的梳理,最近准备花几个周末时间写一个流媒体系列的实践文章,也算是给自己做总结的同时帮助有 ...
- Node学习(二) --使用http和fs模块实现一个简单的服务器
1.创建一个www目录,存储静态文件1.html.1.jpg. * html文件内容如下: 12345678910111213 <html lang="en">< ...
- 浅淡Webservice、WSDL三种服务访问的方式(附案例)
Webservice Webservice是使应用程序以与平台和编程语言无关的方式进行相互通信技术. eg:站点提供访问的数据接口:新浪微博.淘宝. 官方解释:它是一种构建应用程序的普遍模型,可以在任 ...
- PHPCMS v9构建模块 - 实例之企业服务模块
下面开始第一个实例,企业服务模块,这是个比较简单的模块,做一个抛砖的作用. 模块功能分析:企业服务,企业填写招聘申请表,管理审核之后,展示作为招聘通知的功能. ■1.文件分布 modules文 ...
- 前端用node+mysql实现简单服务端
node express + mysql实现简单服务端前端新人想写服务端不想学PHP等后端语言怎么办,那就用js写后台吧!这也是我这个前端新人的学习成果分享,如有那些地方不对,请给我指出. 1.准备工 ...
- SELECTORS模块实现并发简单版FTP
环境:windows, python 3.5功能:使用SELECTORS模块实现并发简单版FTP允许多用户并发上传下载文件 结构:ftp_client ---| bin ---| start_clie ...
随机推荐
- 代码走查工具StyleCop建议采用的规则总结
代码走查工具StyleCop建议采用的规则总结 续接上篇:代码走查工具篇SytleCop的规则总结与翻译,本篇主要是以我个人的观点总结的一份建议使用的Rule点. 建议使用的Rule点 1.公共的接口 ...
- Dom中的nodeName、nodeValue 、nodeType
nodeName.nodeValue 以及 nodeType 包含有关于节点的信息. nodeName 属性含有某个节点的名称. 元素节点的 nodeName 是标签名称 属性节点的 nodeName ...
- Android基础之——MacOSX下elipse开发环境的配置
前不久换了台macbook,然后自己就把开发环境给配好了,本来这事就这么过去了,今天有位博友留言让我写一篇关于配置的文章,考虑到这个东西确实以后可能还会用,那就写下来,分享给大家,正好自己也再次回想一 ...
- Utility Classes Are Evil
原文地址:http://alphawang.com/blog/2014/09/utility-classes-are-evil/ This post is a summary of this arti ...
- s性能优化方面的小知识
总结的js性能优化方面的小知识 前言 一直在学习javascript,也有看过<犀利开发Jquery内核详解与实践>,对这本书的评价只有两个字犀利,可能是对javascript理解的还不够 ...
- windows系统下c语言暂停程序
原文:windows系统下c语言暂停程序 windows系统下,很多C语言初学者的调试时,往往没看到结果程序就退出了,据我所知的方法主要有以下几种 方法一: #include int main() { ...
- Webservice中使用Session、Application
原文:Webservice中使用Session.Application 在Asp.Net 2.0里,已经能够在WebMethod里使用 Session . Application 这种服务器变量了.一 ...
- Nagios监控lvs服务
1在lvs server上安装nrpe客户端: 1.1,rpm方式安装nrpe客户端 下载地址:http://download.csdn.net/detail/mchdba/7493875 [root ...
- linux监控命令全覆盖(图文说明)
1.1 top 1.1.1 命令说明 Top 命令能够实时监控系统的运行状态,并且可以按照cpu.内存和执行时间进行排序 1.1.2 参数说明 命令行启动参数: 用法: top -hv | -bcis ...
- Oracle SqlPlus 方向键的方法和解决的退格键失效
SqlPlus中退格键和方向键的设置 在刚装好的Oracle中,我们使用SqlPlus会发现很的蹩脚,不仅退格键不好用,方向键也不行调出history.以下有几种解决方法. 1.能够使用ctrl+Ba ...