專利名稱:一種不可靠網(wǎng)絡(luò)連接下的可靠數(shù)據(jù)傳送方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計算機應(yīng)用技術(shù),具體說是提供了一種不可靠網(wǎng)絡(luò)連接下的可靠
數(shù)據(jù)傳送方法,解決了當網(wǎng)絡(luò)連接時斷時續(xù)或偶爾連接的情況下,如何在網(wǎng)絡(luò)間完整、可靠 的傳送數(shù)據(jù)的問題。
背景技術(shù):
采用多層架構(gòu)的信息化系統(tǒng)往往要求網(wǎng)絡(luò)持續(xù)聯(lián)接且有足夠的帶寬,因此對網(wǎng)絡(luò)
依賴程度也越來越高,然而在現(xiàn)實中,網(wǎng)絡(luò)連接又無法保證隨時隨地的可用性。 某些行業(yè)或者企業(yè)的用戶可能會因為出差而暫時失去網(wǎng)絡(luò)連接,或者可能有網(wǎng)絡(luò)
連接但存在延遲或帶寬問題,或者可能需要拆卸網(wǎng)絡(luò)的某些部分進行維護,或者有意通過
網(wǎng)閘自動間隔聯(lián)通內(nèi)外網(wǎng)。但業(yè)務(wù)卻不能由于網(wǎng)絡(luò)的不可靠而暫停,對于部分業(yè)務(wù),比如制
單,可以通過自動在本機緩存單據(jù)數(shù)據(jù),再由一個后臺服務(wù)自動輪詢網(wǎng)絡(luò)狀態(tài),當網(wǎng)絡(luò)聯(lián)通
時自動把數(shù)據(jù)傳送到信息化系統(tǒng)中去。這樣就可以有效地提高工作效率。
發(fā)明內(nèi)容
本發(fā)明提供了 一種不可靠網(wǎng)絡(luò)連接下的可靠數(shù)據(jù)傳送方法。 1.信息化系統(tǒng)不直接訪問網(wǎng)絡(luò)服務(wù),而是通過網(wǎng)絡(luò)訪問代理進行訪問;網(wǎng)絡(luò)訪問 代理把信息化系統(tǒng)的訪問請求包括數(shù)據(jù)自動保存在客戶端;網(wǎng)絡(luò)訪問代理自動檢測網(wǎng)絡(luò)狀 態(tài),當網(wǎng)絡(luò)聯(lián)通時自動上傳下載數(shù)據(jù)。 2.網(wǎng)絡(luò)訪問代理的定義代碼為 class WebServiceProxy {void AddReuest(Request request);
bool DoWhenOnLine ();
bool IsCo皿ected(get ;} } 其中,請求類Request的定義代碼為 public class Request { public object[]CallParameters{get ;set ;} public string Endpoint{get ;set public string MethodName{get ;set ;} public Guid Requestld{get ;set ;} Type ProxyType {get ;set ;} } 3.信息化系統(tǒng)訪問網(wǎng)絡(luò)服務(wù)時,首先根據(jù)訪問的網(wǎng)絡(luò)服務(wù)的定義,構(gòu)建一個Request類的實例,然后調(diào)用WebServiceProxy類的AddReuest (Requestrequest)方法增力口 一個網(wǎng)絡(luò)訪問請求。 4.信息化系統(tǒng)調(diào)用AddReuest (Request request)方法時,該方法內(nèi)部通過如下
代碼把請求保存到本地的數(shù)據(jù)庫中去。 public void AddReuest(Request request)
DBClient client = DBFactory. OpenClient() client.Set (request); client. Close 0 ;
5.網(wǎng)絡(luò)訪問代理從本地的數(shù)據(jù)庫中讀出緩存的網(wǎng)絡(luò)服務(wù)請求,構(gòu)建Request類 實例,根據(jù)Request類的EndPoint屬性構(gòu)建URL,然后發(fā)送HTTP請求,根據(jù)請求返回狀態(tài) 碼判斷網(wǎng)絡(luò)是否聯(lián)通。當網(wǎng)絡(luò)聯(lián)通時,網(wǎng)絡(luò)訪問代理根據(jù)Request類實例的ProxyType、 MethodName、CallParameters屬性,完成網(wǎng)絡(luò)服務(wù)的訪問。實現(xiàn)代碼為
public bool DoWhen0nLine ()
{
} 本發(fā)明的優(yōu)異效果是不僅能讓用戶在離線時使用其應(yīng)用程序進行富有成效地工 作,并且能夠在網(wǎng)絡(luò)聯(lián)通時及時上傳離線數(shù)據(jù),有效地提高用戶生產(chǎn)率和工作效率。該發(fā)明 使得信息化系統(tǒng)的離線應(yīng)用得到良好支持,具有很高的推廣和經(jīng)濟價值。
if ( ! IsCo皿ected)return false ;
IList〈Request〉rqs = null ;
DBClien db = DBFactory. OpenClient0 ;
rqs = db. Query〈Request〉(typeof(Request));
foreach(Request rq in rqs)
Object proxy = Activator. Createlnstance(rq. ProxyType); proxy. Url = EndPoint ;
Methodlnfo method = rq. ProxyType. GetMethod(rq. MethodName) object result = method. Invoke(proxy, rq.CallParameters); db. Delete (rq);
db. Close 0 ; return true ;
具體實施例方式
本發(fā)明提供了一種不可靠網(wǎng)絡(luò)連接下的可靠數(shù)據(jù)傳送方法,包括網(wǎng)絡(luò)訪問代理; 網(wǎng)絡(luò)狀態(tài)判斷;數(shù)據(jù)自動傳送;數(shù)據(jù)自動緩存。網(wǎng)絡(luò)訪問代理將數(shù)據(jù)自動緩存到本機,然后 當網(wǎng)絡(luò)連通時,自動把數(shù)據(jù)上傳到服務(wù)器端或從服務(wù)器端下載到本機,這樣就可以在網(wǎng)絡(luò)
5不穩(wěn)定的狀態(tài)下使用系統(tǒng)了。 為使本發(fā)明的優(yōu)點、目的更容易理解、易懂,下面就具體的實施方式做一個詳細說 明。 1.在信息化系統(tǒng)中凡是需要訪問網(wǎng)絡(luò)服務(wù)的地方,WebServiceProxy類的 AddReuest (Request request)方法。
2.在操作系統(tǒng)啟動時,自動啟動網(wǎng)絡(luò)訪問代理程序。例如把網(wǎng)絡(luò)訪問代理程序 放到"c:\Documents and Settings\All Users\ 「開始」菜單\程序\啟動"目錄下。
該系統(tǒng)具有輕便小巧、易于部署的特點,能解決因失去網(wǎng)絡(luò)連接造成的信息化系 統(tǒng)無法使用的問題。 目前本發(fā)明大量應(yīng)用在政府行業(yè)以及大型綜合型集團企業(yè)中,不僅能讓用戶在離 線時使用其應(yīng)用程序進行富有成效地工作,并且能夠在網(wǎng)絡(luò)聯(lián)通時及時上傳離線數(shù)據(jù),有 效地提高用戶生產(chǎn)率和工作效率。該發(fā)明使得信息化系統(tǒng)的離線應(yīng)用得到良好支持,具有 很高的推廣和經(jīng)濟價值。
權(quán)利要求
一種不可靠網(wǎng)絡(luò)連接下的可靠數(shù)據(jù)傳送方法,其特征在于,包括網(wǎng)絡(luò)訪問代理;網(wǎng)絡(luò)狀態(tài)判斷;數(shù)據(jù)自動傳送;數(shù)據(jù)自動緩存,網(wǎng)絡(luò)訪問代理將數(shù)據(jù)自動緩存到本機,然后當網(wǎng)絡(luò)連通時,自動把數(shù)據(jù)上傳到服務(wù)器端或從服務(wù)器端下載到本機,實現(xiàn)在網(wǎng)絡(luò)不穩(wěn)定的狀態(tài)下使用系統(tǒng),包括以下步驟1)信息化系統(tǒng)不直接訪問網(wǎng)絡(luò)服務(wù),而是通過網(wǎng)絡(luò)訪問代理進行訪問;網(wǎng)絡(luò)訪問代理其定義代碼為class WebServiceProxy { void AddReuest(Request request); bool DoWhenOnLine(); bool IsConnected{get;} } 其中,請求類Request的定義代碼為 public class Request {public object[]CallParameters{get;set;}public string Endpoint{get;set;}public string MethodName{get;set;}public Guid RequestId{get;set;}Type ProxyType{get;set;} };2)網(wǎng)絡(luò)訪問代理把信息化系統(tǒng)的訪問請求包括數(shù)據(jù)自動保存在客戶端;3)網(wǎng)絡(luò)訪問代理自動檢測網(wǎng)絡(luò)狀態(tài),當網(wǎng)絡(luò)聯(lián)通時自動上傳下載數(shù)據(jù)”,具體步驟如下網(wǎng)絡(luò)訪問代理從本地的數(shù)據(jù)庫中讀出緩存的網(wǎng)絡(luò)服務(wù)請求,構(gòu)建Request類實例,根據(jù)Request類的EndPoint屬性構(gòu)建URL,然后發(fā)送HTTP請求,根據(jù)請求返回狀態(tài)碼判斷網(wǎng)絡(luò)是否聯(lián)通,當網(wǎng)絡(luò)聯(lián)通時,網(wǎng)絡(luò)訪問代理根據(jù)Request類實例的ProxyType、MethodName、CallParameters屬性,完成網(wǎng)絡(luò)服務(wù)的訪問,實現(xiàn)代碼為 public bool DoWhenOnLine(){if(!IsConnected)return false; IList<Request>rqs=null; DBClien db=DBFactory.OpenClient(); rqs=db.Query<Request>(typeof(Request)); foreach(Request rq in rqs) { Object proxy=Activator.CreateInstance(rq.ProxyType); proxy.Url=EndPoint; MethodInfo method=rq.ProxyType.GetMethod(rq.MethodName); object result=method.Invoke(proxy,rq.Cal lParameters); db.Delete(rq);}db.Close();return true;}
2. 根據(jù)權(quán)利要求l所述方法,其特征在于,信息化系統(tǒng)訪問網(wǎng)絡(luò)服務(wù)時,首先根據(jù) 訪問的網(wǎng)絡(luò)服務(wù)的定義,構(gòu)建一個Request類的實例,然后調(diào)用WebServiceProxy類的 AddReuest (Request request)方法增力口一個網(wǎng)絡(luò)訪問請求。
3. 根據(jù)權(quán)利要求2所述方法,其特征在于,信息化系統(tǒng)調(diào)用AddReuest (Request request)方法時,該方法內(nèi)部通過如下代碼把請求保存到本地的數(shù)據(jù)庫中去;public void AddReuest(Request request)DBClient client = DBFactory. OpenClient();client.Set (request) client.Close 0 ;
全文摘要
本發(fā)明提供了一種不可靠網(wǎng)絡(luò)連接下的可靠數(shù)據(jù)傳送方法,解決了當網(wǎng)絡(luò)連接時斷時續(xù)或偶爾連接的情況下,如何在網(wǎng)絡(luò)間完整、可靠的傳送數(shù)據(jù)的問題。所述方法包括網(wǎng)絡(luò)訪問代理;網(wǎng)絡(luò)狀態(tài)判斷;數(shù)據(jù)自動傳送;數(shù)據(jù)自動緩存。本發(fā)明大量應(yīng)用在政府行業(yè)以及大型集團企業(yè)中,在只通過撥號短暫上網(wǎng)或網(wǎng)閘自動間隔聯(lián)通內(nèi)外網(wǎng)的情況下,用戶離線制單或提交數(shù)據(jù),待網(wǎng)絡(luò)聯(lián)通時由本發(fā)明自動把數(shù)據(jù)傳送出去。由于具有操作簡單,上傳數(shù)據(jù)安全有效的特點,具有很好的推廣使用價值。
文檔編號H04L29/06GK101729562SQ20091022999
公開日2010年6月9日 申請日期2009年11月30日 優(yōu)先權(quán)日2009年11月30日
發(fā)明者王濤威, 高樂光 申請人:浪潮集團山東通用軟件有限公司