国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向服務(wù)的軟件架構(gòu)及其在醫(yī)用超導(dǎo)系統(tǒng)中的應(yīng)用

2015-04-02 12:31田宏宇
軟件導(dǎo)刊 2015年2期

摘要:介紹了基于面向服務(wù)的軟件架構(gòu)及其主要優(yōu)點,同時研究了其在醫(yī)用超導(dǎo)監(jiān)控系統(tǒng)中的具體應(yīng)用。重點闡述了如何使用面向服務(wù)的軟件架構(gòu)使軟件從功能上實現(xiàn)解耦,從而提高軟件的可重用性、可伸縮性、可靠性,并設(shè)計了具體方案。

關(guān)鍵詞關(guān)鍵詞:SOA;面向服務(wù);軟件架構(gòu);醫(yī)用超導(dǎo)系統(tǒng)

DOIDOI:10.11907/rjdk.143763

中圖分類號:TP319

文獻標(biāo)識碼:A文章編號文章編號:16727800(2015)002011403

作者簡介作者簡介:田宏宇(1979-),男,江蘇泰州人,碩士,江蘇美時醫(yī)療技術(shù)有限公司工程師,研究方向為通用軟件。

0引言

近年來,軟件規(guī)模在不斷擴大,其復(fù)雜程度也在不斷增加。同時,隨著業(yè)務(wù)規(guī)模的快速變化,對軟件的適應(yīng)性和可擴展性提出了更高的要求。這些需求體現(xiàn)在軟件架構(gòu)上就是要求各模塊之間充分解耦,使模塊之間的關(guān)聯(lián)度更小。同時,要求模塊更加內(nèi)聚,使每個模塊都能擔(dān)任更專一的職責(zé)。

結(jié)構(gòu)化編程使得程序結(jié)構(gòu)更加清晰,流程更易于理解。面向?qū)ο缶幊谭椒ㄍㄟ^封裝代碼與數(shù)據(jù)來管理軟件復(fù)雜度,以真實世界的對象進行建模。隨著軟件模塊數(shù)量的不斷增長,人們需要在更大的范圍內(nèi)加強內(nèi)聚性,提高軟件的復(fù)用度,由此出現(xiàn)了基于組件的開發(fā)。組件內(nèi)的模塊通過相互協(xié)作,對外提供更豐富且通用的功能,而組件之間是高內(nèi)聚、松耦合的?;诮M件的開發(fā)更關(guān)注子系統(tǒng)的邊界和子系統(tǒng)間的通訊設(shè)計。

近年來,隨著大數(shù)據(jù)時代的到來,人們需要通過全樣本的形式分析海量數(shù)據(jù),對多節(jié)點、分布式、異構(gòu)的系統(tǒng)需求迫切。這就對軟件系統(tǒng)的可靠性提出了更高的要求,因而需要重新審視軟件的系統(tǒng)架構(gòu)。

1面向服務(wù)的軟件架構(gòu)

1.1面向服務(wù)架構(gòu)

面向服務(wù)架構(gòu)(Service-Oriented Architecture,SOA)是構(gòu)造分布式計算應(yīng)用程序的方法,是將軟件設(shè)計成一組可互操作的服務(wù)的一套原則或方法論,將應(yīng)用程序功能作為服務(wù)發(fā)送給最終用戶或者其它服務(wù)。它采用開放標(biāo)準(zhǔn),與軟件資源進行交互并采用標(biāo)準(zhǔn)的表示方式。

SOA將應(yīng)用程序的不同功能單元(稱為服務(wù))通過這些服務(wù)之間定義良好的接口和契約聯(lián)系起來。接口采用中立的方式進行定義,它應(yīng)該獨立于實現(xiàn)服務(wù)的硬件平臺、操作系統(tǒng)和編程語言,這使得構(gòu)建在這種系統(tǒng)中的服務(wù)可以一種統(tǒng)一和通用的方式進行交互[1]。

1.2SOA實現(xiàn)原則

在SOA中,服務(wù)通常通過3個元素來定義:①服務(wù)實現(xiàn):服務(wù)的實現(xiàn)由實際代碼、應(yīng)用程序接口或包含(將通過此服務(wù)公開的)功能的其它技術(shù)資產(chǎn)組成;②服務(wù)接口:服務(wù)接口為服務(wù)的用戶提供一種基于標(biāo)準(zhǔn)的方法,用于根據(jù)它所提供的契約來訪問其功能;③服務(wù)契約:服務(wù)契約指定服務(wù)的目的、功能、約束和使用。契約細(xì)節(jié)的例子包括安全性需求、響應(yīng)速度、吞吐量和可用性。

1.3WCF——Dot Net中的SOA框架

Windows通信開發(fā)平臺(Windows Communication Foundation——WCF)是由微軟開發(fā)的一系列支持?jǐn)?shù)據(jù)通信的應(yīng)用程序框架,是.NET框架的一部分,從.NET Framework3.0 開始引入。它整合了.NET2.0及之前版本的.NET Remoting、Web Service以及Socket機制,并融合有Http和Ftp的相關(guān)技術(shù),是Windows平臺上開發(fā)分布式應(yīng)用的最佳實踐方式。

WCF可簡單歸結(jié)為4個部分[2]:①網(wǎng)絡(luò)服務(wù)協(xié)議,即用什么網(wǎng)絡(luò)協(xié)議開放客戶端接入;②業(yè)務(wù)服務(wù)協(xié)議,即聲明服務(wù)提供哪些業(yè)務(wù);③數(shù)據(jù)類型聲明,即對客戶端與服務(wù)器端通信的數(shù)據(jù)部分進行一致化;④傳輸安全性定義。

通信雙方的溝通方式,由合約規(guī)定;通信雙方所遵循的通信方法,由協(xié)議綁定;通信期間的安全性,由雙方約定的安全性層次規(guī)定。

WCF的三大核心概念如下:

(1)契約(Contract)。WCF 的基本概念是以契約(Contract) 來定義雙方溝通的協(xié)議,合約必須以接口的方式來體現(xiàn),而實際的服務(wù)代碼必須由這些合約接口派生并實現(xiàn)。合約分成了4種:①數(shù)據(jù)契約(Data Contract),訂定雙方溝通時的數(shù)據(jù)格式;②服務(wù)契約(Service Contract),訂定服務(wù)的定義;③操作契約(Operation Contract),訂定服務(wù)提供的方法;③消息契約(Message Contract),訂定在通信期間改寫消息內(nèi)容的規(guī)范。

(2)協(xié)議綁定 (Binding)。由于WCF支持HTTP、TCP、Named Pipe、MSMQ、PeerToPeer TCP 等協(xié)議,而HTTP 又分為基本 HTTP 支持(BasicHttpBinding)以及 WSHTTP 支持(WsHttpBinding),因而TCP亦支持 NetTcpBinding、NetPeerTcpBinding等通信方式。因此,雙方必須統(tǒng)一通信協(xié)議,并且在編碼及格式上保持一致。

WCF 的服務(wù)可以掛載于 Console Application、Windows Application、IIS (ASP. NET) Application、Windows Service以及Windows Activation Services中,但大多都會掛在 Windows Service上。

(3)安全性層次。WCF支持傳輸層次安全性以及消息層次安全性兩種:①傳輸層次安全性:在數(shù)據(jù)傳輸時期加密,例如SSL;②消息層次安全性:在數(shù)據(jù)處理時就加密,例如使用數(shù)字簽名、散列或是使用密鑰加密法等。

WCF具有如下優(yōu)勢[3]:①統(tǒng)一性。WCF是對于ASMX、.Net Remoting、Enterprise Service、WSE、MSMQ等技術(shù)的整合。給開發(fā)人員一個統(tǒng)一的開發(fā)接口,將同樣的業(yè)務(wù)邏輯通過不同的通訊協(xié)議綁定來發(fā)布,實現(xiàn)了高度的代碼重用;②互操作性。由于WCF最基本的通信機制之一是SOAP(Simple Object Access Protocol 簡易對象訪問協(xié)議),這就保證了異構(gòu)系統(tǒng)之間的互操作性;③安全與可信賴。WSSecurity、WSTrust和WSSecureConversation均被添加到SOAP消息中,以用于用戶認(rèn)證、數(shù)據(jù)完整性驗證、數(shù)據(jù)隱私等多種安全因素;④兼容性。WCF充分考慮到了與舊有系統(tǒng)的兼容性。安裝WCF并不會影響原有的技術(shù)如ASMX和.Net Remoting。

2SOA在醫(yī)用超導(dǎo)系統(tǒng)中的應(yīng)用

我國高端醫(yī)療器械領(lǐng)域一直為大型跨國公司所壟斷。隨著近年來國家的一系列政策扶持,國內(nèi)一些公司正在加緊研發(fā)自己的高端醫(yī)療器械,尤其是超導(dǎo)型磁共振成像儀吸引著眾多企業(yè)的關(guān)注。

超導(dǎo)磁體是一種電磁鐵,它由超導(dǎo)導(dǎo)線構(gòu)成,能產(chǎn)生巨大的磁場。由于超導(dǎo)導(dǎo)線在4K的低溫下沒有電阻,因此維持磁場并不會消耗能量。通常將超導(dǎo)導(dǎo)線浸泡在液氦中以產(chǎn)生4K左右的低溫。

制造超導(dǎo)磁體的一大技術(shù)難點就是如何確保液氦在磁體中不發(fā)生泄漏和蒸發(fā)。因為一旦液氦泄漏,就無法保證超導(dǎo)導(dǎo)線所需要的4K低溫,從而無法維持磁場,這一現(xiàn)象稱為“失超”。為了達到氦氣零泄漏這一理想目標(biāo),一方便要加強超導(dǎo)磁體的密閉性制造工藝,另一方面也要嚴(yán)格對其進行監(jiān)控。

我國的氦氣十分貧乏,只占全球探明資源總量的0.2%,主要依賴進口。而氮氣比氦氣便宜得多,但是液氮的最低溫度只能達到62K左右,達不到4K要求。因此往往采用先用液氮將溫度降到62K,然后再用液氦將其降溫到4K這種折衷方法,節(jié)約了成本。

需要對整個超導(dǎo)系統(tǒng)中的液氮、液氦的溫度、液位等多點多指標(biāo)進行系統(tǒng)監(jiān)測,并對壓縮機、場強等相應(yīng)設(shè)備提供反饋以增加整體系統(tǒng)的可靠性,而且在整個超導(dǎo)磁體的生命期(典型值為10年)內(nèi)不能出錯。

綜合以上考慮,將整個超導(dǎo)軟件監(jiān)控系統(tǒng)規(guī)劃為3項主要服務(wù):①Coordinator——核心服務(wù),負(fù)責(zé)將底層接收到的數(shù)據(jù)轉(zhuǎn)換為格式化的有意義的數(shù)據(jù),同時負(fù)責(zé)將數(shù)據(jù)記錄到數(shù)據(jù)庫中;②Display——顯示服務(wù),負(fù)責(zé)將Core服務(wù)提供的數(shù)據(jù)渲染成更加直觀的圖形界面,以及在系統(tǒng)出錯時進行適當(dāng)?shù)膱缶?。同時在Coordinator服務(wù)狀態(tài)出錯時重啟服務(wù);③Monitor——狀態(tài)監(jiān)控服務(wù),負(fù)責(zé)監(jiān)控整個軟件系統(tǒng)的健康狀態(tài)以及整個超導(dǎo)系統(tǒng)的健康狀態(tài)。

為了提高服務(wù)契約的可重用性,將基礎(chǔ)服務(wù)接口作為其它服務(wù)接口的父接口:

(1)基礎(chǔ)服務(wù)接口IServiceBase:

[ServiceContract]

public interface IServiceBase {

[OperationContract(IsInitiating = true, IsTerminating = false)]

WCFServiceStatus GetServiceStatus();

[OperationContract(IsInitiating = true, IsTerminating = false)]

void Stop();

[OperationContract(IsInitiating = true, IsTerminating = false)]

void Start();

}

IServiceBase接口為所有服務(wù)接口的父接口,增加了查詢服務(wù)狀態(tài)以及開始、停止服務(wù)的契約。

(2)帶回調(diào)的基礎(chǔ)服務(wù)接口ICallbackServiceBase:

[ServiceContract]

public interface ICallbackServiceBase : IServiceBase {

[OperationContract(IsInitiating = true, IsTerminating = false)]

void Register();

[OperationContract(IsInitiating = true, IsTerminating = false)]

void Unregister();

}

ICallbackServiceBase進一步擴展了IServiceBase,提供了注冊與反注冊功能。如果想要在服務(wù)狀態(tài)或數(shù)據(jù)有更新時得到通知,就需要在服務(wù)處用Register注冊。

(3)核心服務(wù)接口ICoordinator:

[ServiceContract(SessionMode = SessionMode.Required,

CallbackContract = typeof(ICoordinatorCallback))]

public interface ICoordinator: ICallbackServiceBase {

[OperationContract(IsInitiating = true, IsTerminating = false)]

bool QueryDeviceUsability(string deviceName);

[OperationContract(IsInitiating = true, IsTerminating = false)]

void ReadValue(string deviceName);

[OperationContract(IsInitiating = true, IsTerminating = false)]

void ReadChannelValue(string deviceName, int ch);

}

Coordinator服務(wù)實現(xiàn)了ICoordinator接口,提供了讀數(shù)據(jù)、持久化、通知等核心服務(wù)。

(4)服務(wù)狀態(tài)監(jiān)控IStatusMonitor

[ServiceContract(SessionMode = SessionMode.Required,

CallbackContract=typeof(IStatusMonitorCallback))]

public interface IStatusMonitor: ICallbackServiceBase {

[OperationContract(IsInitiating = true, IsTerminating = false)]

ICollection GetLastMMUStatus();

[OperationContract(IsInitiating = true, IsTerminating = false)]

void Repair(string title);

}

StatusMonitor 實現(xiàn)了IStatusMonitor接口,以便在整個系統(tǒng)狀態(tài)出現(xiàn)更改時作出正確的響應(yīng)。