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