六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

.NET Framework 中的無接觸部署,好東西啊,處理很多麻煩了,呵呵

[摘要].NET Framework 中的無接觸部署 2002年7月 摘要:本文介紹一個激動人心的新功能,即使用 Web 服務器簡化 Windows 窗體智能客戶端的部署和更新。本文引用的任務管理示例應用程...
.NET Framework 中的無接觸部署
2002年7月

摘要:本文介紹一個激動人心的新功能,即使用 Web 服務器簡化 Windows 窗體智能客戶端的部署和更新。本文引用的任務管理示例應用程序可以從 Visual Basic .NET 中找到。 單擊此處打開或復制“無接觸部署”項目文件。(請注意,在示例文件中,程序員的注釋使用的是英文,本文中將其譯為中文是為了便于讀者進行理解。)

目錄

  • 簡介
  • 使用 Web 服務器的無接觸部署
  • 示例演示
  • 窗體響應速度Windows提高
  • 安全性
  • 使用多程序集應用程序的無接觸部署
  • 無接觸部署和 XML Web Service
  • 可選:如何設置安全策略
  • 客戶端要求
  • 小結

簡介


您是否曾經必須部署 Visual Basic 客戶端服務器應用程序?或者曾經必須部署依賴于 COM 注冊的 Win32 應用程序?企業桌面環境中的正確安裝一直受到各種問題的困擾,這其中既有試圖使所有用戶升級這樣的簡單問題,也有較為復雜的 DLL 版本控制問題。
與 Web 應用程序相比,桌面應用程序有很多優點,具體表現在以下幾個方面:
  • 豐富的用戶界面 (UI)
  • 較快的響應速度
  • 較好的性能
  • 能夠脫機運行
  • 可以有效地使用邊緣資源(客戶機)
  • 易于同本地應用程序和 API 集成

盡管桌面應用程序具有以上優點,但由于 Web 應用程序使應用程序的部署和更新相對容易,因此在過去幾年中得到了廣泛的應用。
Microsoft 準備通過 .NET Framework 將 Web 應用程序在部署和維護方面的所有優點都集成到桌面應用程序中。DLL 版本控制問題也得到了解決 - 在默認情況下,使用 .NET Framework 生成的應用程序彼此完全孤立,并從各自的專用應用程序目錄中檢索其 DLL。DLL 仍然可以在多個應用程序之間共享,但這并非使用系統注冊表實現,而是將共享的 DLL 存儲在 .NET Framework 全局程序集緩存中,該程序集緩存可加載給定 DLL 的多個版本并跟蹤版本與應用程序之間的匹配關系。在實際部署應用程序的過程中,.NET Framework 允許系統管理員按照部署和更新 Web 應用程序(通過遠程 Web 服務器)的方式部署應用程序和應用程序更新。此項技術稱為無接觸部署,是本文要論述的中心內容。

使用 Web 服務器的無接觸部署


使用無接觸部署,可以下載、安裝和直接在用戶計算機上運行 Windows 窗體應用程序(使用 .NET Framework 的 Windows 窗體類生成的桌面應用程序),而無須改變注冊表或共享的系統組件。

工作原理


.NET Framework 安裝提供了一個掛接 Internet Explorer 5.01 和更高版本以偵聽所請求的 .NET 程序集的機制。在請求期間,可執行程序被下載到磁盤上稱為程序集下載緩存的位置。然后,名為 IEExec 的進程在具有有限安全設置的環境中啟動該應用程序。

圖 1:無接觸部署方案

示例演示


這是一個非常簡單的 Windows 窗體應用程序,用戶可以使用它管理任務列表。這些任務可用于錯誤跟蹤、IT 疑難解答,也可用于任務列表(該列表與 Outlook XP 或 Visual Studio .NET 中的列表相似)。
首先,在 Visual Studio .NET 中打開此應用程序。任務管理應用程序是在 Visual Basic .NET 中使用 Windows 窗體和名為 TaskMgmtWS 的 XML Web Service(它使用 ADO.NET 與 Access 數據庫通信以存儲任務)實現的。
任務管理應用程序使用 TaskMgmtWS Web 服務更新 DataGrid Windows 控件。應用程序首先實例化一個名為 ws 的 XML Web Service 對象。接著調用 Web 方法 GetTasks(),獲取任務的 ADO.NET 數據集。然后將任務數據集分配給 DataGrid Windows 控件中的 DataSource 屬性。
' 調用 Web 服務。Dim ws As localhost.Service1 = New localhost.Service1()Dim ds As DataSet = ws.GetTasks()' 將生成的數據集綁定到 DataGrid 控件。DataGrid1.DataSource = dsDataGrid1.DataMember = "Tasks"

應用程序返回時,DataGrid 被更新,應用程序也將更新。此時,我們遇到了在基于網絡的應用程序中常見的問題。第一次加載期間,應用程序將生成一個網絡調用,可能需要幾秒鐘才能完成。

提高 Windows 窗體響應速度


要提高應用程序的總體響應速度,可以利用后臺線程。已更新的應用程序首先調用輔助線程來實例化一個 XML Web Service 對象。Web 服務實例化后,我們將使用 MethodInoker() 來安全地更新 UI。
從 Form Load 事件中的輔助線程開始:
' 使用后臺輔助線程生成 Web 服務調用,' 以提高第一次窗體加載過程中應用程序' 的總體響應速度。ThreadPool.QueueUserWorkItem(New WaitCallback
(AddressOf GetTasksWebServiceBackground))

有關如何在后臺線程中更新 Windows 窗體的詳細信息,請訪問知識庫文章 Q318604“Populate DataGrid on Background Thread with Data Binding by Using Visual Basic .NET”,網址為 http://support.microsoft.com/default.aspx?scid=kb;en-us;Q318604
在 Windows 窗體運行的同時,編寫一個作用于 XML Web Service 調用的后臺線程。
Private Sub GetTasksWebServiceBackground(ByVal data As Object)' 調用 Web 服務。Dim ws As localhost.Service1 = New localhost.Service1()m_ds = ws.GetTasks()' 更新 Windows 窗體數據網格。 Dim mi As New MethodInvoker(AddressOf UpdateDataGridForm)Dim ia As IAsyncResult = BeginInvoke(mi)Cursor = Cursors.DefaultEnd Sub

為了說明如何將應用程序部署到 Web 服務器上,我們將任務管理應用程序部署到 Tasks Web Service Web 文件夾中。首先將生成文件夾更改為 TaskMgmtWS Web Service IIS 虛擬目錄。方法是打開“TaskManagement Property Pages”(TaskManagement 屬性頁)對話框,然后將輸出路徑設置為“..\TaskMgmtWS\”。
將生成結果路徑設置為 Web 服務器后,可以通過簡單的重新編譯來部署此應用程序。應用程序生成后,我們可打開 Internet Explorer 并瀏覽到應用程序 http://localhost/TaskMgmtWS/TaskManagement.exe。請注意,安裝了 .NET Framework 的 Internet Explorer 不會要求您保存該應用程序,而是嘗試運行該程序。如果要從 Web 頁下載應用程序,可以使用“file://”協議處理程序。
應用程序現已通過 HTTP 下載并安裝到程序集下載緩存中。運行該應用程序之前,將檢查安全策略以確保應用程序擁有執行其操作的權限。
上面介紹了如何通過 Web 服務器運行該應用程序,下面就讓我們更改該應用程序,看看對它進行升級有多么容易。選擇 DataGrid,可以使用 Auto Format(自動套用格式)屬性快速更改背景樣式。
然后重新生成應用程序,以更新 Web 服務器上的 .exe 文件。最妙的是當用戶請求返回到 Windows 窗體時,應用程序代碼將自動更新。.NET Framework 將自動檢查程序集的時間戳,查看是需要再次下載該程序集,還是只需通過用戶的程序集下載緩存來運行該程序集。

安全性


代碼訪問安全性是保護桌面免受正在通過無接觸部署方式下載的 Windows 窗體應用程序影響的關鍵。此模型通過匹配應用程序和應該分配給應用程序的權限來工作。在運行時,公共語言運行時從程序集中收集憑證。憑證可以采用代碼源自的 Internet Explorer 區域(本地磁盤、Intranet、Internet、受信任站點或不受信任站點)的形式,也可采用代碼源自的 URL(簽名使用的私鑰、哈希值、Authenticode 發布服務器簽名等等)的形式。使用此憑證,公共語言運行時將程序集分配給相應的代碼組或類別。每個代碼組都擁有分配給它的權限集,說明程序集應獲得的權限,例如能否讀取或寫入本地磁盤、訪問聯網資源、打印以及訪問環境變量等等。
默認情況下,.NET Framework 附帶圍繞 Internet Explorer 區域設置的代碼組。例如,來自 Intranet 區域的代碼獲得的權限很有限,因此無法執行文件 IO 訪問。
為了說明安全檢查在起作用,任務管理可執行程序包含一個名為 Read Boot.ini 的工具欄按鈕,該按鈕嘗試訪問 C:\ 盤中的文件。
您可以進行一個簡單的測試,單擊“Read Boot.ini”按鈕,查看當應用程序請求 C:\ 根目錄中的文件時會發生什么情況 - 引發安全異常,應用程序不處理該請求。
異常返回一個文件 IO 權限異常,說明應用程序無法訪問 TaskManagement.exe 請求的特定資源。

使用多程序集應用程序的無接觸部署


在本示例應用程序中,我們已經說明了如何加載單個程序集。通過對 Assemble 對象使用 LoadFrom() 方法,.NET Framework 還可以有效地將多程序集應用程序傳入客戶端。
Assemble 類具有 LoadFrom 方法,可以初始化一個對特定程序集的引用。LoadFrom 的參數是 URL 或文件路徑名。指定 URL 后,.NET Framework 首先通過檢查程序集下載緩存,檢查客戶端是否存在已命名的程序集。如果程序集不在程序集下載緩存中,.NET Framework 將從 Web 服務器獲取該程序集,并將它的副本置于下載緩存中。這樣,程序集對象即可在代碼中使用。
例如,如果在一個單獨的名為 AboutForm.dll 的程序集中實現了 TaskManagement About Windows 窗體,則可以在用戶請求查看“About”(關于)對話框時使用 LoadFrom 下載該程序集。這樣,當用戶與應用程序交互時,我們只需傳輸應用程序所需的代碼。

無接觸部署和 XML Web Service


一個重要的安全限制是,當通過 Web 服務器分發應用程序時,其域必須與它所依賴的所有 Web 服務相匹配。例如,如果從 http://myserver/TaskManagement.exe 啟動 TaskManagement.exe,則只允許使用 http://myserver 上的 XML Web Service。出于安全性方面的考慮,不允許應用程序從其他服務器調用 Web 服務。

可選:如何設置安全策略


計算機管理員可以更改安全權限,以便將更多權限授予現有代碼組或從頭開始創建新代碼組。
繼續操作之前,必須明白更改安全設置是很危險的,因此切勿將其關閉。強烈建議,在任何情況下都只更改能使應用程序運行的安全設置。
為此,如果您是計算機管理員,則可以運行 CasPol 命令行工具(位于 %SystemRoot%\Microsoft.NET\Framework\v1.0.3705\CasPol.exe),為從本地主機啟動的應用程序授予對本地磁盤的完全訪問權限:
caspol -machine -addgroup All_Code -url http://localhost/* FullTrust -n TaskManagement

現在,由于此應用程序具有執行文件 IO 的權限,因此能夠返回 Boot.ini 的內容。
除了 CasPol 命令行工具以外,還通過 Microsoft 管理控制臺 (MMC) 管理單元提供了圖形配置工具,即 .NET Framework 配置工具。打開管理單元后,打開“My Computer”(我的電腦),單擊“Runtime Security Policy”(運行時安全策略),然后依次單擊“Machine”(計算機)、“Code Groups”(代碼組)和“All_Code”(所有代碼),瀏覽到 TaskManagement。使用 TaskManagement 可以查看新建的代碼組。嘗試設置新代碼組,了解由代碼訪問安全設置所帶來的靈活性和把握度。
確保查看各選項后刪除在上文中創建的代碼組。可以通過運行以下命令完成此操作:
caspol -remgroup TaskManagement

也可通過 MMC 工具在 TaskManagement 上單擊右鍵并選擇 Delete(刪除)來刪除新代碼組,該工具使您能夠輕松地在代碼組之外生成 MSI 文件,如果需要,可以使用系統管理服務器或組策略在企業中傳播該文件。

客戶端要求

  • 任何支持 .NET Framework 的操作系統
  • 已安裝 SP1 的 .NET Framework
  • Internet Explorer 5.0.1 或更高版本
  • 訪問 IIS Web 服務器進行應用程序部署

小結


無接觸部署為分發 Window 窗體應用程序提供了非常好的方法。應用程序開發人員可以利用這一強大的桌面處理能力,同時保持由 Web 應用程序實現的部署和維護的優點。

有關詳細信息,請訪問

  • windowsforms.net/" target=_blank>Windows 窗體社區站點(英文)
  • Death of the Browser?
  • Windows Forms Deployment
  • Windows Forms Security
  • 有關如何更好地擴展到無接觸部署的信息,請訪問 .NET Application Updater Componenth



主站蜘蛛池模板: 小说区 亚洲 自拍 另类 | 天天色综合1 | 午夜综合网| 天天噜天天噜噜在线视频 | 亚洲人成网站看在线播放 | 手机在线精品视频每日更新 | 手机在线观看亚洲国产精品 | 天天操狠狠 | 欧美一区二区三区不卡 | 日韩精品福利视频一区二区三区 | 欧美伊人久久大香线蕉在观 | 在线播放亚洲精品富二代91 | 四虎免费最新在线永久 | 影音先锋国产 | 一区小说二区另类小说三区图 | 中文字幕11页 | 亚洲伊人久久大香线蕉综合图片 | 日韩精品一区二区三区中文在线 | 手机在线看片国产日韩生活片 | 色色就色色| 日韩在线观看免费 | 午夜婷婷网 | 亚州一级毛片在线 | 天天躁夜夜躁狠狠躁躁 | 日韩人成免费网站大片 | 色综合成人网 | 亚洲香蕉综合在人在线视看 | 午夜视频一区二区 | 欧美亚洲欧美日韩中文二区 | 午夜视频网站在线观看 | 一二三四日本高清观看视频 | 日日夜夜爱 | 一二三四影视手机在线观看视频 | 性欧美xxx极品另类 性欧美xxxx性 | 午夜欧美精品 | 亚洲最新永久观看在线 | 色无极亚洲影院 | 日韩在线不卡视频 | 在线视频欧美精品 | 伊人久久综合影院首页 | 五月天婷婷精品视频 |