NET Remoting 在醫(yī)療保險采集系統(tǒng)中的應(yīng)用與研究
以往北京醫(yī)療保險采集系統(tǒng)遠程訪問采用DCOM(分布式組件對象模型)技術(shù)。隨著系統(tǒng)版本的更新,采用DCOM技術(shù)的系統(tǒng)暴露出了大量的缺陷,如部署困難以及新舊版本更新時容易產(chǎn)生DLL地獄問題。.NET Remoting是DCOM的一種升級。它提供了一種允許對象通過應(yīng)用程序域與另一對象進行交互的框架,并擴展了通過遠程訪問對象實現(xiàn)分布式應(yīng)用程序的模型。
1 .NET Remoting結(jié)構(gòu)及原理 1.1 本地過程調(diào)用原理
本地過程調(diào)用是通過棧實現(xiàn)的。系統(tǒng)調(diào)用過程前首先將過程的參數(shù)壓入到棧中,在過程被執(zhí)行時將棧中的參數(shù)取出作為過程的本地變量,并將其返回的結(jié)果壓入棧中,這樣就完成了一次過程的調(diào)用。如圖1所示。
1.2 遠程過程調(diào)用原理
不同的應(yīng)用程序是無法共享同一個線程棧的,因此不同的應(yīng)用程序之間的過程調(diào)用應(yīng)當采用基于消息的調(diào)用機制。在客戶端通過代理對象將過程調(diào)用信息封裝到一個消息對象中,再根據(jù)需要將這些消息對象轉(zhuǎn)化成某個格式的數(shù)據(jù)流發(fā)送到遠程對象所在的應(yīng)用程序域中。當經(jīng)過格式化的消息到達服務(wù)器后,首先從消息中還原出對象,之后在遠程對象所在的應(yīng)用程序域中構(gòu)建出相應(yīng)的過程調(diào)用棧,此時就可以按照傳統(tǒng)的基于棧的過程調(diào)用機制完成過程的調(diào)用,返回結(jié)果的傳遞則按照之前的方法反向重復(fù)一遍。如圖2所示。
1.3 .NET Remoting 體系結(jié)構(gòu)
.NET Remoting 服務(wù)器應(yīng)用程序域由傳輸通道、序列化格式器,服務(wù)端對象組成,客戶端應(yīng)用程序域由客戶端對象、代理、傳輸信道、序列化格式器組成??蛻舳舜碡撠熢诳蛻舳颂幚砘跅5膮?shù)傳遞模式到基于消息的參數(shù)傳遞模式的轉(zhuǎn)換。格式化器負責將消息對象轉(zhuǎn)換成可在網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)流,并將其發(fā)送到服務(wù)器。透明代理是遠程對象的精確副本,真實代理接受透明代理創(chuàng)建的消息并將其通過信道傳遞到遠程對象。.NET Remoting 體系結(jié)構(gòu)如圖3所示。
2 應(yīng)用.NET Remoting 開發(fā)分布式系統(tǒng)模型
分布式程序由若干個可以獨立執(zhí)行的程序模塊組成,它們分布于一個分布式處理系統(tǒng)的多臺計算機上被同時執(zhí)行。它有兩個特點:分布性和通信性。開發(fā)分布式系統(tǒng)首先是系統(tǒng)應(yīng)用層次的劃分,N層應(yīng)用程序?qū)?shù)據(jù)庫服務(wù)、業(yè)務(wù)邏輯與用戶界面分開。這樣不僅實現(xiàn)了不同功能模塊的分布式執(zhí)行從而提高了系統(tǒng)得可擴展性同時也在保證客戶端功能的前提下,為用戶提供一個簡潔的界面因此在應(yīng)用程序修改時只需要對應(yīng)用服務(wù)器進行修改,而不用修改客戶端應(yīng)用程序,從而簡化了應(yīng)用系統(tǒng)的開發(fā)、更新和升級工作。應(yīng)用.NET Remoting 開發(fā)N層分布式系統(tǒng)模型如圖4所示。
圖4 .NET Remoting開發(fā)分布式系統(tǒng)模式
3 北京醫(yī)療保險數(shù)據(jù)采集系統(tǒng)的開發(fā) 3.1 北京醫(yī)療保險數(shù)據(jù)采集系統(tǒng)體系結(jié)構(gòu)
醫(yī)療保險數(shù)據(jù)采集系統(tǒng)主要實現(xiàn)各區(qū)、街道及公司的參加醫(yī)療保險人員的信息采集。系統(tǒng)由數(shù)據(jù)采集客戶端、數(shù)據(jù)處理服務(wù)器、數(shù)據(jù)存儲服務(wù)器及安全服務(wù)器四部分組成如圖5所示。系統(tǒng)各部分的功能如下:
(1) 數(shù)據(jù)采集客戶端:各街道、區(qū)的主要負責人通過數(shù)據(jù)采集客戶端匯總本地區(qū)的參加醫(yī)療保險人員的基本信息。
(2) 業(yè)務(wù)處理服務(wù)器:匯總的人員信息通過業(yè)務(wù)處理服務(wù)器完成數(shù)據(jù)的處理。如在人員信息修改時完成數(shù)據(jù)的更新、報盤。
(3) 數(shù)據(jù)存儲服務(wù)器:完成數(shù)據(jù)的存儲與一致性校驗。
(4) 系統(tǒng)安全服務(wù)器:保障數(shù)據(jù)采集系統(tǒng)的安全。
圖5 醫(yī)療保險數(shù)據(jù)采集系統(tǒng)體系結(jié)構(gòu)
3.2 .NET Remoting在數(shù)據(jù)采集系統(tǒng)中的應(yīng)用
3.2.1 異構(gòu)數(shù)據(jù)庫訪問
圖6 數(shù)據(jù)訪問結(jié)構(gòu)
異構(gòu)數(shù)據(jù)庫訪問包括兩個層:訪問邏輯層、數(shù)據(jù)庫訪問層。訪問邏輯層負責完成數(shù)據(jù)訪問時用到的標準SQL語句的編碼并調(diào)用數(shù)據(jù)訪問層中的方法及通過應(yīng)用.NET Remoting 技術(shù)對外提供遠程對象。數(shù)據(jù)訪問層負責完成異構(gòu)數(shù)據(jù)庫的訪問。這樣的設(shè)計結(jié)構(gòu)在很大程度上實現(xiàn)了異構(gòu)數(shù)據(jù)庫的統(tǒng)一管理與訪問。如圖6所示。
3.2.2 實現(xiàn)遠程對象
訪問邏輯層中的對象通過.NET Remoting技術(shù)實現(xiàn)為遠程對象。實現(xiàn)方法如下:
namespace Capinfo.Bjmedicare.DataCollection.SqlService
{
public class ParamService :MarshalByRefObject,IParamService
{ //實現(xiàn)數(shù)據(jù)訪問邏輯的方法
public DataSet GetParameterDataSet(string tableName)
{…
配置文件:
<service>
<wellknown mode="SingleCall" type="Capinfo.Bjmedicare.DataCollection.SqlService" objectUri="CommonService.rem"/>
</service>…
3.2.3 客戶端訪問
客戶端訪問遠程對象通過兩個層訪問。ServiceFactory 層實現(xiàn)遠程對象的激活,并返回遠程對象的引用。Facade層采用界面模式包裝ServiceFactory層返回的遠程對象并通過自身定義的方法統(tǒng)一調(diào)用遠程對象的方法訪問數(shù)據(jù)庫從而為業(yè)務(wù)邏輯層提供服務(wù)。如圖7所示。
圖7 客戶端訪問遠程對象結(jié)構(gòu)
4 結(jié)束語
通過本文的介紹可以看出.NET Remoting 技術(shù)具有很強的靈活性和可擴展性。它提供新的解決分布式系統(tǒng)的方法。在實現(xiàn)醫(yī)療保險數(shù)據(jù)采集系統(tǒng)中,應(yīng)用.NET Remoting 避免了應(yīng)用DCOM帶來的部署及版本更新時遇到的問題,提高了系統(tǒng)得可靠性、可擴展性及易于維護??傮w上取得了較好的效果。
參考文獻
[1]譚政,蔡明.基于XML 與.NET Remoting的分布式異構(gòu)數(shù)據(jù)庫轉(zhuǎn)化.微計算機信息,2006,22(7-3):230
[2] 李玉凱,朱有產(chǎn),秦金磊..NET Remoting 及其在SCADA主站系統(tǒng)中的應(yīng)用.計算機工程,2006,32(19):246
[3]李東升..NET Remoting 在分布式數(shù)據(jù)庫查詢中的應(yīng)用.蘇州市職業(yè)大學(xué)學(xué)報,2006,17(2):70
[4]蔡躍進,王美清.基于.NET Remoting 的通用分布計算模型,福州大學(xué)學(xué)報,2006,34(5):652
更多醫(yī)療電子信息請關(guān)注:21ic醫(yī)療電子頻道