• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于業(yè)務功能的Web應用與桌面程序交互方法研究

    2018-09-20 11:19:30張靜
    數(shù)碼設計 2018年4期
    關鍵詞:注冊表助手桌面

    張靜*

    (中國石化勝利油田分公司物探研究院,山東東營,257022)

    引言

    勝利油田經過多年的信息化建設,研制開發(fā)了上千套應用系統(tǒng),這些應用系統(tǒng)為保障油田生產、科研、經營管理做出了重大貢獻,在節(jié)約成本、減少工作強度、規(guī)范業(yè)務流程等方面產生了巨大的社會效益和經濟效益。然而,這些應用系統(tǒng)有的是基于 B/S架構開發(fā)的,有的是基于C/S架構開發(fā)的,B/S與 C/S底層有構不同,致使在Web應用上無法直接調用桌面程序,操作缺乏靈活性。同時,很多應用系統(tǒng)的研發(fā)由各單位孤立完成,多套系統(tǒng)之間無法建立消息傳遞及事件響應機制,信息不能數(shù)據(jù)共享和互通,給各部門、各單位、各專業(yè)應用業(yè)務協(xié)同帶來了巨大的障礙。目前,勝利油田信息化建設工作正處于應用系統(tǒng)集成整合階段,將在統(tǒng)一Web工作平臺上集成應用所有油田業(yè)務功能的應用系統(tǒng),并且相關聯(lián)的業(yè)務功能系統(tǒng)之間能夠互聯(lián)互通。為了達到這一目標,急需研究 Web應用與桌面程序交互方法,解決 web應用啟動桌面程序和應用之間消息通訊的問題來創(chuàng)新信息化服務模式。

    1 技術理論方法

    1.1 web應用啟動桌面程序

    目前,通過網頁鏈接來打開應用程序客戶端的常用實現(xiàn)方式有兩種。第一種方式是以修改注冊表來作為打開的方式,騰訊、迅雷和阿里旺旺就是通過這種方式實現(xiàn)的。其基本方法就是在安裝過程中或者是程序第一次啟動時在注冊表中創(chuàng)建鍵項和鍵值,當用戶點擊網頁上的鏈接或者直接通過瀏覽器輸入 tencent://或 Alitalk://這樣的 URL時,這些輸入便全部作為命令行參數(shù)傳遞給客戶端程序,客戶端程序再對這些輸入進行解析和響應就能完成啟動動作。http://、 https://、ftp:// 是常用的協(xié)議,然而tencent:// 、Alitalk://或 thunder://這些 URL就是 QQ、阿里旺旺和迅雷自定義的協(xié)議,自定義協(xié)議是需要本地計算機安裝軟件與之接應以便于實現(xiàn)相應操作的,也就是當你點擊帶有thunder://的URL連接時,瀏覽器會利用機器系統(tǒng)來通知以何種程序處理該種協(xié)議的連接,這種對應只能通過自定義注冊表信息來實現(xiàn)的;第二種方式需要使用apps(Asynchronous Pluggable Protocols,異步可插入協(xié)議,允許開發(fā)者創(chuàng)建可插協(xié)議處理器、MIME過濾器,以及命名空間處理器工作在微軟瀏覽器中),這種方式只能按照apps設定的規(guī)則編寫一個 COM 組件來啟動桌面程序,MSN就是通過這種方式實現(xiàn)的。在安裝MSN的過程中,應用系統(tǒng)首先會先注冊 dll并在注冊表注冊自定義協(xié)議scheme。當注冊成功后,用戶在瀏覽器中輸入任何的以msnim://開頭的URL請求都會通知到這個COM組件,再由DLL來處理桌面程序啟動。相較而言,這兩種啟動方式最終都能滿足 web應用啟動桌面程序的需求,要啟動油田業(yè)務功能專業(yè)應用程序必須制定自定義協(xié)議的方式進行啟動,但就目前油田專業(yè)應用程序多有化的狀況,只有兩種方式并存,才有利于適應不同應用系統(tǒng)的特殊性。

    1.2 應用之間消息通訊機制

    在Windows系統(tǒng)中,軟件間中的消息通訊猶如人身體中的神經網絡,起到連接各個模塊并相互發(fā)送指令、協(xié)調工作的的作用。同一臺機器的各個獨立進程相互之間通訊的方式各式各樣,常用的有剪切板方法、郵槽方法、動態(tài)數(shù)據(jù)交換(DDE)、文件映射、消息管道、WM_COPYDATA消息等方法,還可以通過socket套接字、配置文件和注冊表等來間接實現(xiàn)進程間數(shù)據(jù)通訊任務。從數(shù)據(jù)交換量、硬件配置要求、程序響應速度等方面來看,這幾種方法各存有不同的優(yōu)缺點:用配置文件和注冊表的方法在基于業(yè)務功能的Web應用與桌面程序進程間進行大數(shù)據(jù)量數(shù)據(jù)的快速交換問題上是無法實現(xiàn)的;管道和socket套接字的使用需要有網卡的支持;動態(tài)數(shù)據(jù)交換(DDE)通過維護全局分配內存使的應用程序間傳遞成為可能,其方式是在一塊全局內存中手工放置大量的數(shù)據(jù),然后使用窗口消息傳遞內存指針,這是16位WIN時代使用的方式,在WIN32下已經沒有全局和局部內存了,現(xiàn)在的內存只有一種就是虛存;WM_COPYDATA消息以消息緩沖區(qū)為中間介質,通信雙方的發(fā)送和接收操作均以消息為單位,在存儲器中,消息緩沖區(qū)被組織成隊列,消息隊列是獨立于生成它的進程的一段存儲區(qū),任何具有正確訪問權有的進程都可以訪問消息隊列,它非常適用于在進程間交換消息,但要求接收端必須有一個可顯示的窗口,而恰好油田業(yè)務功能需要通訊的模塊是有界面的,有Form窗體的。綜合判斷,應用之間通訊方式選擇WM_COPYDATA消息通訊機制即能獲得其窗口句柄,也就可以使用簡單而方便的窗口消息WM_COPYDATA消息進行消息傳遞,用來實現(xiàn)油田業(yè)務功能之間的互聯(lián)互通是最合適的方法。

    2 方法實施應用

    2.1 web應用啟動桌面程序

    經過 web應用啟動桌面程序方法研究,確定網頁鏈接啟動桌面程序利用網絡協(xié)議完成。http這種通用協(xié)議不能啟動油田業(yè)務特有的桌面程序,需要自定義網絡協(xié)議。自定義協(xié)議怎樣注冊到用戶的客戶機?另外,根據(jù)油田應用集成整合需求,在一個 web工作平臺怎樣啟動多個桌面端業(yè)務程序?為了滿足這兩個方面的要求,需要開發(fā)一個安裝在客戶端機器上的應用助手程序。自定義協(xié)議隨著應用助手的安裝注冊到用戶的客戶機,自定義協(xié)議在web應用上啟動應用助手程序,應用助手程序再啟動多個桌面程序。自定義協(xié)議 slkt://注冊內容為:

    圖1 自定義協(xié)議注冊內容

    由于瀏覽器種類較多,常見瀏覽器內核分為IE內核和WebKit內核,采用自協(xié)議啟動應用助手時相應的環(huán)境監(jiān)測及響應方式也不同。 IE內核瀏覽器,采用ActiveX方式進行注冊表信息檢測;Webkit內核瀏覽器,采用符合其瀏覽器特點的NPAPI插件進行檢測。因此,客戶端安裝應用助手的同時要給瀏覽器安裝插件。在web應用頁面中,不同瀏覽器檢測所支持的插件,無插件說明客戶端未安裝應用助手,彈窗提示安裝軟件;有插件說明客戶端已安裝應用助手,自定義協(xié)議啟動應用助手。web應用啟動應用助手流程如下:

    圖2 web應用啟動應用助手

    桌面程序啟動需要可執(zhí)行文件.exe運行程序。應用助手啟動桌面程序的實現(xiàn)流程是:從本地數(shù)據(jù)庫中查詢客戶機是否有桌面程序的啟動資源,有則應用助手將桌面程序啟動;無則應用助手先從存放桌面程序的服務器上下荷啟動文件,并在客戶機本地數(shù)據(jù)庫中記錄桌面程序啟動路徑、進程名稱等信息,再將應用啟動。應用助手實現(xiàn)過程中,為防止服務器端桌面程序版本發(fā)生應更與用戶安裝信息不同步,還設計實施了更新信息推送功能。實施流程如圖所示:

    圖3 應用助手啟動桌面程序

    2.2 應用之間消息通訊

    通過對進程間通訊技術的研究,設計了訂閱/發(fā)布式的進程內通訊方式,采用了使用Windows的WM_COPYDATA消息來進行消息傳遞。并且將兩種通訊方式進行了封裝,以類庫的方式提供給系統(tǒng)中所有的模塊使用。而勘探助手作為中轉,分析發(fā)布消息內容,獲取目標應用信息,通過目標應用信息判斷執(zhí)行動作。應用程序接收到消息后,根據(jù)既定的消息格式,分解消息內容并執(zhí)行。

    ECFMessage消息類:所有的消息通訊實際上是數(shù)據(jù)的傳遞,設計ECFMessage類,該類包含string類型字段“類型名稱”,string類型“命令”,SerializableDictionary類型“參數(shù)”,其中“類型名稱”用于發(fā)送消息的類名,“命令”用于“命令”的名稱,“參數(shù)”用于攜帶需要傳遞的真實的數(shù)據(jù),為了增加其可用性,使用string數(shù)據(jù)對式的數(shù)據(jù)格式。

    WindowsAPI:該類封裝了進程間通訊時需要調用的Windwos API,包括 EnumWindows、FindWindow、FindWindowEx、GetWindowText、SendMessage 等WindowsAPI方法。

    事件管理工廠 GeneralEventManager:該類對外提供良好的數(shù)據(jù)接口,包含了對外暴露的方法BroadcastMessage、BroadcastMessageExcept、PublishMessage、Register,在內部,通過判斷客戶端傳遞的參數(shù),判斷提供進程間通訊的Win32CopyDataECFPushProvider實例,還是用于進程內通訊的IocEventECFPushProvider實例。

    程序集對外接口GeneralECFClient:GeneralECFClient是消息通訊組件對外暴露的唯一接口,它是對GeneralEventManager的進一步封裝,在該接口中同樣提供 了 BroadcastMessage、BroadcastMessageExcept、PublishMessage、Register等方法。外部程序通過實例化該類,即可將自己的消息注冊到消息池,消息池通過發(fā)布或者廣播的方式將消息轉發(fā)給需要交互的模塊或進程。

    消息發(fā)送是通過GeneralECFClient類完成,消息的發(fā)布通過BroadcastMessageExcept方法以廣播的方式將攜帶數(shù)據(jù)的消息發(fā)送到所有Windows窗口句柄。

    應用助手接收到消息后,分析消息內容,消息的內容有標準格式,方便消息內容的解析。消息標識:通信標識、動作類型等信息;應用信息:應用名稱、啟動文件等信息;用戶信息:用戶名、用戶單位等信息;模塊信息:模塊標識、模塊名稱、啟動信息、模塊參數(shù)等。

    消息接收方通過重荷Form窗體的DefWndPro方法,實現(xiàn)在Form上截取消息,做相應處理。應用助手中轉消息通訊流程圖如下所示:

    圖5 應用助手中轉消息通訊流程圖

    3 有束語

    針對勝利油田業(yè)務應用系統(tǒng)之間孤立存在、業(yè)務功能無法通訊及業(yè)務協(xié)同應用難的問題,攻關研究了web應用與桌面程序之間啟動與通訊方法,實現(xiàn)了應用助手功能,建立了Web應用與桌面程序之間的橋梁,打通了Web應用與桌面程序之間啟動與通訊的環(huán)節(jié),達到了業(yè)務功能之間全方位互聯(lián)互通的效有,為油田信息化整合奠定了基礎。

    猜你喜歡
    注冊表助手桌面
    桌面舞龍
    基于APP在線控制雙擠出頭FDM桌面3D打印機的研制
    更上一層樓 用好注冊表編輯器
    小助手
    靈感助手表彰大會(二)
    靈感助手表彰大會(一)
    最貼心21款Win7桌面小工具展示
    學習器揭開注冊表面紗
    移動一族(2009年3期)2009-05-12 03:14:30
    軟件不能運行,注冊表中找根源
    資源管理器也管注冊表
    航空| 汽车| 理塘县| 英吉沙县| 扬中市| 高唐县| 锦屏县| 科尔| 乐东| 通渭县| 龙胜| 墨江| 韶山市| 福海县| 顺义区| 陵川县| 饶阳县| 博野县| 沧源| 灵宝市| 崇阳县| 达孜县| 雷山县| 竹山县| 县级市| 耿马| 龙口市| 临海市| 吉林省| 哈密市| 白银市| 南华县| 广东省| 咸宁市| 荆州市| 开封市| 焦作市| 苏州市| 谢通门县| 云梦县| 绩溪县|