Infotech.ActiveX.Engine 設計思路

來源:互聯網
上載者:User
在公司開發過程中,提出ActiveX 方案,通過公司高層採納,今天在研究和開發ActiveX 引擎;
已通過測試,成功部署.

ActiveX Engine 就是一個ActiveX 的形式,在html 頁內運行;

實現原理為:


主要功能:
  Client 瀏覽器只需要安裝2個必須的程式集;它負責從webservices後台調用Assembly 到本地,並裝入;

要求:
  Assembly內部是使用UserControl ,那麼它的Owner可以使用 exe 封裝為標準Winform,如果是通過Activex engine 來啟動並執行話,那麼它也可以做一個RIA 應用;

痛點:
  1.已解決:通過AppDomain 的方法拆裝每個Assembly,避免影響當前域和Assembly版本衝突問題;但是如何將UserControl 增加到當前域的Controls內是個痛點,不過我解決了;方法比較另類,直接使用非託管api實現的.
  2.已解決:遠端assembly的相關程式集,採用智能化的搜尋,打包->壓縮->傳輸到client activex engine 使用.整個過程是透明的。
  3.未解決:指令碼互動的時候,方法的參類型的變形,該問題一直未解決;在C#中比如參數為object[] Params.那麼在javascript該如何傳遞呢?(目前採用非常蠢的辦法湊合著)

用例:
  Assembly:Test1.dll

    class UserControlTest:UserControl {
     ...
    }

   HTML:Test.htm
   <object classid="......"/>
   <script type=text/javascript>core1.LoadAssembly("Test1.dll", "UserControlTest");</script>

  core1為ActiveX.Engine 執行個體:它提供裝入方法,和Current UserControl 互動的方法,這部分的實現採用反射.

關於ActiveX.Engine ,是應用於b/s 在一些複雜的,低級的模組實現上的解決辦法,比如:串口通訊/進階圖表...等等.

關於該思路的起源:
http://chinasf.cnblogs.com/archive/2006/06/11/WINCTS.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.