作者:王景敏 , 劉彩玲 , 尚丙蘭
隨著工業(yè)控制技術(shù)、計算機網(wǎng)絡(luò)和數(shù)字通信技術(shù)的快速發(fā)展,分布式測量、分布式計算和網(wǎng)絡(luò)控制在工業(yè)生產(chǎn)中將越來越多地被使用。Remoting技術(shù)是在.NET環(huán)境下,在應(yīng)用程序內(nèi)部或應(yīng)用程序域之間傳輸數(shù)據(jù)的方案。它有多種可以在數(shù)據(jù)傳輸中使用的通道,并且,在一個封閉的網(wǎng)絡(luò)環(huán)境中,選擇TCP通道將獲得更好的連接性能。因此,把.NET Remoting技術(shù)運用到工業(yè)生產(chǎn)測控通信之中,達到及時通信、實時控制的目的,具有一定的應(yīng)用價值。
1 Remoting
1.1 Remoting技術(shù)簡介
Microsoft.NET Remoting提供了一種允許對象通過應(yīng)用程序域與另一對象進行交互的框架。這種框架提供了多種服務(wù),包括激活和生存期支持,以及負責與遠程應(yīng)用程序進行消息傳輸?shù)耐ㄐ磐ǖ馈?梢酝ㄟ^使用Remoting來進行不同應(yīng)用程序之間的通信,不管這些程序是在同一臺計算機上,還是在局域網(wǎng)內(nèi)的不同計算機上,甚至在Internet的不同操作系統(tǒng)上(當然相應(yīng)的操作系統(tǒng)也必須實現(xiàn).Net Framework)。Remoting將取代DCOM成為應(yīng)用更為廣泛的一種技術(shù)。
1.2 Remoting的體系結(jié)鉤
.NET Remoting為分布式對象提供了一個基礎(chǔ)結(jié)構(gòu)。它使用既靈活又可擴展的管線向遠程進程提供.NET的完全對象語義。Remoting體系結(jié)構(gòu)主要包括以下元素:遠程對象、通道、消息、格式化標志符、代理對象、RemotingConfiguration類、ChannelServices類。
圖1簡單地描述了.NET Remoting的結(jié)構(gòu),客戶端的對象通過公共接口(代理)訪問遠程服務(wù)器對象的方法(或結(jié)果);對象訪問和結(jié)果的傳輸以格式化的形式通過定義的通道進行。
圖1 .NET Remoting體系結(jié)構(gòu)圖
1.3 Remoting技術(shù)的優(yōu)缺點
Remoting技術(shù)的優(yōu)點:能進行分布式開發(fā);TCP通道的Remoting速度非常快;雖然是遠程的,但是非常接近于本地調(diào)用對象;可以做到保持對象的狀態(tài);不受應(yīng)用程序限制,可以是控制臺、winform、IIS、windows服務(wù)承載遠程對象等。
Remoting技術(shù)的缺點大體有兩點:非標準的應(yīng)用,因此,有平臺限制;當脫離IIS時需要有自己的安全機制。
2 工業(yè)通信系統(tǒng)中Remoting技術(shù)的實現(xiàn)
在PCLevel工業(yè)生產(chǎn)遠程測控系統(tǒng)的設(shè)計實現(xiàn)中,采用分布式三層結(jié)構(gòu)的程序設(shè)計使得企業(yè)內(nèi)部生產(chǎn)控制整體管理軟件的集成得以方便實現(xiàn)。采用Remoting技術(shù)在業(yè)務(wù)處理層與用戶層建立多個通信管道傳輸數(shù)據(jù),較好地解決了企業(yè)生產(chǎn)的遠程實時監(jiān)測和控制問題,為建立企業(yè)級的快速網(wǎng)絡(luò)進行有效的探索。
應(yīng)用Remofing技術(shù)的分布式處理程序,通常包括三部分:遠程對象、服務(wù)端、客戶端。圖2給出了PCLevel系統(tǒng)的數(shù)據(jù)流程。客戶端通過發(fā)布命令、請求數(shù)據(jù)來調(diào)用服務(wù)器端的對象,完成各種操作。發(fā)布命令、請求數(shù)據(jù)實質(zhì)上就是服務(wù)端訂閱客戶端事件,即由客戶端發(fā)送消息,服務(wù)端捕捉該消息,然后響應(yīng)該事件。
圖2 PCLevel系統(tǒng)數(shù)據(jù)流程示意圖
2.1 建立遠程對象類(PCLClassLibrary.dll)
把遠程對象集中編寫成一個類,便于服務(wù)端和客戶端的引用,同時也便于整個系統(tǒng)的修改升級。下面是建立遠程公用類的一個例子:
[Serializable]
public class SendOrderClass:MarshalByRefObject,SendOrderIntedace
{
pubhc static event SendOrderEventHandler SendOrderEvent;
#region Send actoin to control equIPMent
pubic void SendAction(string equipmentIDTemp,
string actionTemp,string userlDTemp,int userLoginGradeTemp)
{
if(SendOrderEvent!=null) {
SendOnterEvent(equipmentIDTemp,actionTemp,userlDTemp,userLnginGradeTemp);
}
}
#endregion
//遠程對象的生命周期設(shè)為無窮大
public override object InitializeLifetimeService()
{
retum null;
}
}
2.2 定義遠程對象公共接口
為了方便系統(tǒng)的部署和修改升級,對遠程對象類的引用定義一個公共接口。以后修改遠程對象時,只需要修改或更新遠程對象類即可。遠程對象的公共接口(PCLCommon.d11)定義如下:
public delegate void SendOrderEventHandhr(string equipmentlIYremp,
string acfionTemp,string userIDTemp,
int userLoginGradeTemp);
public interface SendOrderInterface
{
void SendAction(string equipmentlDTemp,string actionTemp,
string userlDTemp,int userIJ09inGradeTemp);
}
2.3 服務(wù)器端的設(shè)置
在服務(wù)器端引用PCLCommon.dll和PCLCIassLi.brary.dll,定義和設(shè)置TCP通信通道,添加接收事件處理方法:
TcpChannel tcpChannelTemp 2 new TcpChannel(8090);
ChannelServices.RegisterChannel(tcpChannelTemp);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(SendOrderClass),”PCLServer—SendOrder”.Well.
KnownObjectMode.sillglecall);
///Remofing事件的定義
SendOrderClass.SendOrderEvent+’=new SendOrderEventHandler(OnAcceptedClientOrder);
當服務(wù)器端啟動后,程序就偵聽端口8090上的信號,一旦偵聽到就立即引發(fā)事件SendOrderEvent,進而執(zhí)行方法函數(shù)OnAcceptedClientOrder,分析命令內(nèi)容后,調(diào)用不同的函數(shù)完成相應(yīng)的操作。
2.4 客戶端的設(shè)置
在客戶端只需引用PCLCommon.dll即可。定義和設(shè)置TCP通信通道語句如下:
TcpChannel tcpChannelTemp 2 new TcpChannel(0);
ChannelServices.RegisterChannel(tcpChannelTemp);
sendOrder=(SendOrderInterface)Activator.GetObject(typeof(SendOrderInterface),”top://localhost:8090/PCLServerSendOrder”);
就像調(diào)用本機服務(wù)一樣,客戶端運行后,能夠獲得比較滿意的傳輸速度。
此外,在遠程服務(wù)器端和客戶端分別使用配置文件,配置通信信道的建立和注冊,以及遠程對象的注冊,方便將來重新修改信道、發(fā)布的類型或升級服務(wù)器端遠程處理對象。
3 結(jié)束語
在PCLevel系統(tǒng)中,采用.Net Framework的成熟技術(shù).Net Remoting實現(xiàn)了業(yè)務(wù)規(guī)則層和用戶界面層通信,通過抽象類和接口在遠程處理使得客戶端和服務(wù)器端實現(xiàn)有效的對象信息傳遞。這樣不僅方便系統(tǒng)的部署,對應(yīng)用程序的升級也相當方便,不需要修改任何客戶端代碼,只需要在服務(wù)器端重新部署新版本的組件即可。同時,不僅保證了數(shù)據(jù)讀取的速度,而且保證了數(shù)據(jù)讀取的安全性,在工業(yè)生產(chǎn)遠程數(shù)據(jù)通信實際應(yīng)用中取得了極大的成功。
責任編輯:gt
-
計算機
+關(guān)注
關(guān)注
19文章
7544瀏覽量
88664 -
通信系統(tǒng)
+關(guān)注
關(guān)注
6文章
1204瀏覽量
53465 -
工業(yè)控制
+關(guān)注
關(guān)注
38文章
1469瀏覽量
86037
發(fā)布評論請先 登錄
相關(guān)推薦
評論