2009年8月8日 星期六

經由Internet Explorer以網址的方式來實現零接觸佈署1-2

RunPC 125期:利用.NET技術實現零接觸佈署(一)

實作第一隻NTD技術的.NET應用程式
在了解Web應用程式與NTD技術的優點、CAS與環境要求後,接著讓我們來實作一隻NTD技術的.NET應用程式,步驟如下:
1、 建立一Windows應用程式:
如同在VS.NET IDE內建立Windows應用程式一樣,於工具列上選『檔案』-->『新增』-->『專案』於新增專案對話盒中,選擇專案類型『Visual Basic專案』,範本選擇『Windows應用程式』,名稱內輸入『NTD_App_01』(如圖一)後按確定鈕。

(圖一)建立NTD_App_01Windows應用程式專案

接著更改表單的Text屬性為『NTD_App_01』,且在表單上建立一Label(Label1)與一Button(Button1)控制項,設定二控制項的屬性使其(如圖二)樣式:

(圖二)未修改前表單樣式

在Button1的Click事件內輸入以下的程式碼,它最主要的作用是在C:\Temp\目錄是建立一個MyTest.txt檔案,讓該NTD_App_01的Windows應用程式來操作檔案的建立、讀取、刪除…等動作,讓其每點一下後計數加一且加完的值呈現於Label1上。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim path As String = "c:\temp\MyTest.txt"
Dim sw As StreamWriter
Dim fs As FileStream
Dim I As Int16
If File.Exists(path) = False Then
sw = File.CreateText(path)
sw.WriteLine("1")
sw.Flush()
sw.Close()
I = 1
Else
Dim sr As StreamReader = File.OpenText(path)
If sr.Peek() >= 0 Then
I = CType(sr.ReadLine(), Int16) + 1
End If
sr.Close()
File.Delete(path)
sw = File.CreateText(path)
sw.WriteLine(I)
sw.Flush()
sw.Close()
End If
Label1.Text = I.ToString
End Sub

接著請您按F5執行該程式,點選『計數』鈕可見(如圖三),開始計數…,同時可在C:\Temp目錄下找到MyTest.txt檔案,開啟該檔其內容值如Label1控制項呈現值,至此我們已完成一隻簡單的Windows應用程式開發,
2、 建立一虛擬目錄
於IIS管理工具預設的網站上按右鍵,『新增』-->『虛擬目錄』下一步,別名設為『NTD』下一步,目錄筆者設為C:\NTD資料夾內,下一步完成即可。
3、 複製Widows應用程式
將剛建立的Windows建立專案下的bin目錄找到『NTD_App_01.exe』檔案,將其複製到C:\NTD資料夾內。
4、初始化環境
刪除C:\Temp\MyTest.txt檔案。
點選:開始-->所有程式-->Microsoft Visual Studio .NET 2003-->Visual Studio .NET 工具-->開啟Visual Studio .NET 2003 命令提示字元,輸入gacutil /cdl命令(圖四)刪除所有Download Cache內的檔案(註3)。

(圖四) gacutil /cdl刪除Download Cache

註3:您也可以利用gacutil /ldl列出Download Cache 內的所有檔案;當然您也可以利用檔案總管連到C:\WINDOWS\assembly\Download資料夾下去觀看Download Cache內的檔案,因已下gacutil /cdl命令是故C:\WINDOWS\assembly\Download資料夾應用空資料夾。
5、用戶端透過IE執行該該程式
開啟IE於網址列上輸入http://172.16.70.123/NTD/ NTD_App_01.exe按Enter,會出現(如圖五),因筆者還未設定安全性原則,是故會呈現安全性資料警告,接著我們點選『計數』鈕,會出現(如圖六)例外視窗告知目前該程式並無檔案IO的權限,檢查C:\Temp資料夾,MyTest.txt並未建立。

(圖五)未設定CAS前出現的Microsoft .NET 安全性資訊警告


(圖六)無FileIO權限警告視窗

6、設定安全性原則
開啟控制項內的系統管理工具內的Microsoft .NET Framework 1.1 組態視窗,展開『.NET Framework 1.1』-->『我的電腦』-->『Runtime安全性原則』-->『電腦』-->『程式碼群組』-->『All_Code』點選右鍵新增程式碼群組-->名稱『Web123』-->選擇條件類型『URL』,URL輸入『http://172.16.70.123/NTD/*』-->指派使用權限集合給程式碼群組:我們使用現在的使用權限集合『FullTrust』-->完成後即可在程式碼群組下找到『Web123』的程式碼群組。
7、用戶端再次透過IE執行該該程式
同第五步驟,但圖已為(如圖七)且沒有安全性資料警告,點選『計數』鈕亦可正常執行;再檢查C:\Temp資料夾,MyTest.txt已被建立且內容值與Lable1控制項值相同,由此可見透過CAS的設定可加強.NET應用程式執行的安全性。接著您可以透過註3的說明由下gacutil /ldl命令(或瀏灠C:\WINDOWS\assembly\Download)即可以找出在Download Cache內的檔案,如圖八我們可以看出組件名稱、類型、版本、文化特性、程式碼基底…等資訊。
至此我們看見了NTD技術的佈署功能與如何設定程式碼存取安全,接下來讓我們看看NTD組件更新的功能。

(圖七)設定完CAS後執行視窗


(圖八)利用檔案總管觀察Download Cache內容

8、組件更新
於專案『NTD_App_01』上加入一按鈕,呈現目前總數,建立後將NTD_App_01.exe複製蓋掉C:\NTD\NTD_App_01.exe檔。如第七步驟用戶端再次透過IE執行該該程式,即可見(如圖九)程式已更新,而Download Cache的資料夾組件版本有二個(如圖十)。

(圖九)更新後表單執行視窗


(圖十) 利用檔案總管觀察Download Cache內容與多個版本

看過一個簡單的透過URL的NTD應用程式後,接著讓我們建立一個像早期VB6時ActiveX Document的NTD應用程式。

實作一個似ActiveX Document的NTD應用程式
這個主題描述如何在 Internet Explorer (IE) 中成功執行 Windows Form 控制項。在 IE 中 Windows Form 控制項不需使用者提示也不需登錄便能啟動,並能利用 Common Language Runtime (CLR) 的程式碼存取安全性。
在 Internet Explorer 中啟動 Windows Form 控制項有四個步驟:

• 建立 Windows Form 控制項。
• 建立含有 object 標記的 HTML 文件。
• 建立虛擬目錄並設定使用權限。
• 設定程式碼存取安全性。
• 執行控制項。

1、建立 Windows Form 控制項:
在專案『NTD_App_01』上加入一新專案『NTD_App_02』,專案類型請選擇『Windows控制項程式庫』,將NTD_App_01專案上的控制項與程式碼複製到NTD_App_02專案的UserControl1上,建立即可。
2、建立含有 object 標記的 HTML 文件

< html>
< script language="JScript">

function ChangeText() {
simpleControl1.LabelText = text1.value;
simpleControl1.Invalidate();
}
< /script>
< body>
< p>NTD_App_02
< br>< br>
< /body>
< object id="simpleControl1"
classid="http:NTD_App_02.dll#NTD_App_02.UserControl1"
height="300" width="300" VIEWASTEXT>
< param name="LabelText" value="0">
< /object>
< br>
< br>
< input type="text" id="text1">
< input type="button" value="Change Text" onclick="ChangeText()">
< /html>

3、建立虛擬目錄並設定使用權限
HTML 網頁必須位於您 Web 伺服器的 IIS 虛擬目錄中,並具有適當的使用權限。在這個範例中,Windows Form 控制項位於相同的目錄中,但它也可以被安裝於共用組件快取中。虛擬目錄上的執行使用權限必須設定為「指令」-- 如果執行使用權限設定為「指令與執行檔」,將無法正常啟動。
4、設定程式碼存取安全性
當您還未設定程式碼存取安全權限時,您將得到(如圖六)的警告訊息,設定方式有二步驟:
A、調整安全性:
開啟控制項內的系統管理工具內的Microsoft .NET Framework 1.1 組態視窗,展開『.NET Framework 1.1』-->『我的電腦』-->『Runtime安全性原則』點選右鍵選『調整安全性』在『安全性調整精靈』中(如圖十一)選擇『對這部電腦進行變更』下一步-->(如圖十二)調整『信任的網站』為完全信任,最後按完成。

(圖十一)安全性調整精靈


(圖十二)信任的網站調整

B、新增信任網站:
開啟Internet Explorer選『工具』-->『網際網路選項』-->於網網路選項對話盒中選取『安全性』頁纖,選擇『信任的網站』選擇『網站…』於信任網站的對話盒中加入『http://172.16.70.123/NTD』且將此區域內的所有網站需要伺服器驗證(https:)去除勾選,按確定即可。
5、 執行控制項
若要執行控制項,只需在您的虛擬目錄中將 Internet Explorer 指向 HTML 網頁。如果控制項未正常啟動,則可能需要重新啟動 Internet Explorer。若要檢視和啟動這個範例,請連結至http://172.16.70.123/NTD/NTD_App_02.html網頁。

總結:
這篇文章中我們介紹了.NET的NTD技術,且說明了如何設定程式碼存取安全,我們舉了二個例子加以說明,經由URL執行.NET應用程式,利用Download Cache機制佈署、更新程式,讓.NET的NTD應用系統俱備了Web(Thin Clinet)與Windows(Rich Client)應用程式的優點,與建立一個相似於早期ActiveX Document的NTD應用程式,再NTD這一系列的文章中的下幾篇中會為各位介紹,在應用程式中如何動態的載入Assembly、BITS、.NET Application Updater與VS.NET 2005重要新增功能之Click Once。

沒有留言:

加入書籤: MyShare HemiDemi Baidu Google Bookmarks Yahoo! My Web PChome Del.icio.us Digg technorati furludn bookmark 其他更多書籤

BOOKS:New and Upcoming