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