在IE瀏覽器中使用Windows窗體控件(一)
作者::Thiru Thangarathinam
翻譯:秋楓
引言
在過去,Web程序員經常在他們的Web程序中使用ActiveX控件來實現一些胖客戶端才具有的功能。不過現在開發者可以很容易的通過Microsoft.NET Framework來簡潔和安全的建立對象,并且方便的在IE瀏覽器中切入使用。通過在IE瀏覽器中創建Windows窗體控件,開發者可以實現豐富的web客戶端。在這篇文章中,我們將會知道怎樣創建Windows窗體控件并且在IE中使用。在瀏覽器中使用窗體控件過程中,我們會演示怎樣通過窗體控件來提供豐富的web客戶端顯示,而窗體控件用來調用遠程Web service獲取數據。與此同時,我們也會知道怎樣利用.NET安全模型來為我們的窗體控件提供一個安全的運行環境。
如果你有過用Java開發Web程序的經驗,那你會很熟悉Java applets。它是一個運行在瀏覽器中的一個小程序。當瀏覽器打開包含有Applet 標簽的HTML文檔時,Java applets就會運行。Windows窗體在web頁里的工作方式同Java applets很相似。在這個實現中,你創建窗體控件,并為他加上豐富的Windows窗體控件樣式,接著切入到Web頁面中。在瀏覽器加載該Web頁面的時候,Windows控件所包含的代碼也會被執行。在局域網或者擴展的網絡程序中這個將會是很有用的。比如想開發一個企業使用的具有胖客戶端特性的基與web的程序。
.NET的一個重要特征就是跟IE緊密結合。比如,我們可以在IE中使用Windows窗體控件,而不需要通知用戶需要加另外的東西。這個不需要注冊什么.NET CLR就會提供代碼安全訪問的能力。
當你創建Windows窗體控件,你會有窗體類層次提供的特征。比如,你可以使用Windows窗體控件驗證技術來驗證輸入數據的準確性。同樣的,你甚至可以在你的窗體控件中調用Web Service。通過這些技術使用,你可以創建基與.NET平臺的豐富的、健壯的、動態應用程序。
備注:按照原文重寫了代碼,把載圖替換成了中文,運行環境:操作系統windows2003,.NET Framework 1.1.這里講幾點:調試過程中打開瀏覽器輸入完整地址。如果以文件方式打開將不會顯示窗體控件;另外對于進程的調試,可以是單個源文件。不過我運行的是Debug版本下生成的組件,不是Release的,有興趣讀者可以試試。
執行
在這節,我們就會明白怎樣創建Windows窗體控件并在IE中使用。下面列出了五個步驟來完成這一過程。
1.創建Windows窗體控件
2.創建一個帶有object 標簽的HTML文檔,該標簽用來標識Windows控件
3.配置控件的虛擬路徑
4.設置代碼訪問權限
5.運行控件
接下來讓我們來看看上面的各個步驟。
1.創建一個windows窗體控件
在這一步中,我們創建一個簡單的Windows窗體控件。控件實現的功能是顯示”Hello World”給用戶。我們先來建立一個Windows 控件庫項目取名為HelloWorldControl,修改默認的用戶控件為HelloWorldCtl。接著在控件中加入一個Label,取名為lblDisplayMessage,同時增加了一個按鈕btnClick。當用戶點擊按鈕時,將會執行下面的代碼用來顯示消息給用戶。
private void btnClick_Click(object sender, System.EventArgs e)
{
this.lblDisplayMessage.Text = "Hello World";
}
接著就是編譯他生成一個Assembly。
2.創建HTML頁
在這一步中,我們將創建一個HTML文檔并在里面插入object標簽。整個文檔看起來如下:
<html> <body> <p>Hello World Control <OBJECT id="HelloWorldControl1" height="300" width="300" classid="http:HelloWorldControl.dll#HelloWorldControl.HelloWorldCtl" VIEWASTEXT> </OBJECT> <br> </p> </body> </html>
在這個標簽的classid 屬性中,我們指定第一步創建的那個組件的路徑以及組件完整限定名。整個完整名稱包括命名空間和整個類名。我們可以在上面的代碼中清楚的看到組件名和限定名用#分割。這兩部分參數組合在一起用來標識控件的唯一性。當然可以通過取名唯一id為HelloWorldControl1來編寫客戶端腳本。
3.配置虛擬路徑
有了HTML頁面,現在來建立一個HelloWorldControlHost的虛擬目錄,實際目錄在D:\My Programs\HellpWorldHost,該目錄包含了HelloWorldControl.dll和Hellpworld.htm文件。當設置虛擬目錄的時候,需要注意的是設置執行權限為“純腳本”。如果設置成“腳本和可執行腳本”的權限。那控件可能不會正常工作(我在IIS6下設置成“腳本和可執行腳本”,不正常)。你可以打開虛擬目錄的屬性來確認設置,設置窗口如下:
4.設置代碼訪問權限
如果這個web在局域網中訪問,他會正常工作。如果該Web是通過Internet來訪問,那你需要設置internet Explorer,修改安全屬性以允許他運行。你可以把主頁加入到受信任的站點。如果需要設置可以通過IE的工具菜單―>Internet選項->安全->受信任的站點,點擊上面的站點按鈕把你的網站加入其中。接下去,當你打開瀏覽器查看,就會看到正確執行。
5.運行控件
要運行這個控件,我們在瀏覽器中查看包含了控件的那個Html頁面。假如你在頁面上點擊這個按鈕,那么控件就會顯示“Hellp World”信息,執行頁面如下:
在這個例子中,我們實現了怎樣創建件一個Windows窗體控件然后在IE瀏覽器中顯示。在下一節中我們來實現在客戶端瀏覽器上通過窗體控件來訪問Web Ser
|