zoukankan      html  css  js  c++  java
  • 多模块分布式系统的简单服务访问

    先描述一下本篇描述的适用场景(3台server, 各个模块分布在各个Server上,分布式模块互相依赖、交互的场景):

     多个OSIG引擎交互上,使用的是.net remoting实现的,原理:

    1. 当请求某个接口时(也就是要获取某Service Instance时),OSGI通过remoting连接到提供这个服务的url上,如:tcp://localhost:8888/OSGI
    2. 连接成功后,源OSGI发送OpenService命令,让目标OSGI注册TCP Channel
    3. 根据接口type、dll路径、appdomain name,在某个AppDomain中执行解析接口,然后连接到目标OSGI新开的服务上(AppDomain.DoCallBack)
    4. 在配置上,除了上篇文章中的模块配置信息外,在Manifests.xml文件中也加入了分布式服务配置,如下:
    5. Manifests.xml
    6. <?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>//这个代表:当前宿主没有模块承载,但是能和其他宿主通信,达到转发的目的

      既有本地模块,又有远程服务依赖时的配置文件

    7. <?xml version="1.0" encoding="utf-8" ?>
      <Manifests>
        <ServicePort>2000</ServicePort>
        <Manifest>D:documentsvisual studio 2010ProjectsOSGIDemoOrderModuleinDebugManifest.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。。。。这样事务就一下子集成了。

     代码下载

  • 相关阅读:
    打造基于CentOS7的xfce最简工作环境
    Linux下C程序的编辑,编译和运行以及调试
    修正 XE6 TListView 上方 SearchBok 右边的清除钮显示
    TabControl 显示彩色的图示 (XE6 Firemonkey)
    TSwitch 中文简繁显示支持(XE6 Android)
    改变 TMemo 的背景颜色 (Firemonkey)
    修正 XE5 Android 键盘三个问题
    Delphi 收藏
    展示 Popup 的使用方法
    ListView 下拉更新 (支持 Android)
  • 原文地址:https://www.cnblogs.com/aarond/p/OSGI2.html
Copyright © 2011-2022 走看看