程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> .NET中多模塊分布式系統的簡單服務訪問: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.IOrderProce

ssor</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</Required

Service>      //此處的配置沒有什麼特別的
  

<ProvidedService>OrderModule.PublicInterfaces.IOrderProcessor<

/ProvidedService>
</Module>

查看本欄目

我的demo(裡面有3個Host,宿主):

運行效果:

很好很強大,哈哈,相信以後會更加好。等我把這個重構下,再換上wcf。。 。。這樣事務就一下子集成了。

代碼下載:http://files.cnblogs.com/aarond/OSGIDemo2.rar

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved