在IE中托管.NET Windows Forms (续)

HTML网页和虚拟目录的创建

  在这一步骤中,我们将创建托管AuthorsWebServiceClientControl控件的HTML网页,HTML网页的代码如下所示:

<html>
<body>
<p>Authors Display Control<br> <br></body>
<object id="AuthorsControl1"
classid="http:AuthorsWebServiceClientControl.dll#AuthorsWebServiceClientControl.AuthorsControl"
height="500" width="500" VIEWASTEXT>
</object>
<br><br>
</html>

  在创建HTML网页后,我们还需要创建一个用来托管HTML网页和控件的虚拟目录。创建虚拟目录后,我们就可以将HTML网页和控件拷贝到被映射到虚拟目录的物理目录中。现在,我们就可以通过浏览HTML网页对控件进行测试了,在HTML网页中,我们会看到是窗体控件一部分的命令控件。如果点击命令按钮,它就会从客户机上的浏览器调用Web服务,并在DataGrid中显示Web服务的结果。HTML网页的输出如下所示:



   调试Windows Forms控件

  为了调试该控件,我们需要完成下面的步骤:

  ·打开浏览器,请求浏览上面创建的HTML网页。

  ·打开Visual Studio.NET,从菜单中选择“工具”->“调试进程”,显示下面的对话框:



  ·在进程对话框,选择IEXPLORE.EXE,点击“附加”按钮。点击“附加”按钮时,会出现下图所示的对话框,它会提醒你选择要调试的程序类型。在该对话框中,确保选择了清单中的“公共语言运行库”选项。



  ·点击上面对话框中的“OK”按钮将使我们重新返回到进程对话框,这次,我们只需点击“关闭”按钮即可。



  ·从“文件”->“打开”->“文件”菜单中打开用户控件文件AuthorsWebServiceClientControl.cs,并在命令按钮的Click事件中设置断点。

  ·返回到浏览器并点击命令按钮,程序会自动运行到刚才在控件中设置的断点处,我们就可以使用Visual Studio .NET的所有功能调试代码。



代码访问权限和Windows Forms控件

  象我们在上面讨论的那样,当控件在IE中执行时,它会利用了.NET运行时间库提供的代码访问权限。为了理解在IE中运行的Windows Forms控件是如何与由.NET运行时间库提供的代码访问安全机制协调运行的,我们在Authors窗体控件中添加几行代码,并创建新的事件日志源。经过修改后,控件的load事件如下所示:

private void AuthorsControl_Load(object sender, System.EventArgs e)
{
if (!EventLog.SourceExists("TestSource"))
EventLog.CreateEventSource("TestSource", "TestLog");
else
{
EventLog.DeleteEventSource("TestSource");
EventLog.CreateEventSource("TestSource", "TestLog");
}
}
}

  在上面的几行代码中,我们检查名为TestSource的EventLog源是否存在,如果不存在,则创建一个,否则我们删除现有的事件源,再创建一个新的事件源。也许你已经想到,执行这样的操作需要更高的权限,从互联网上下载的控件不应当具有执行这种操作的权限。为了确保这一点,我们将控件的输出拷贝到虚拟目录中。在完成这一操作后,如果用浏览器浏览托管有控件的HTML网页,我们会看到下面的对话框:



  上面的对话框清楚地表明,控件中的代码受到了.NET时间运行库中代码访问安全机制的限制。

   小结

  在在IE中使用Windows Forms前,我们需要注意它的优点和限制。它的主要优点有:

  ·通过Web实现动态丰富用户体验的能力。

  ·客户端编译代码的自动缓冲。

  ·与.NET代码访问安全机制的无缝集成,使我们能够从客户端利用.NET安全模型

  ·胜过Java applets的性能。

  限制包括:

  ·要求客户端安装有Windows操作系统。

  ·只有IE 6.0提供对这类托管方式的支持

  ·要求客户机上安装.NET运行时间库

  ·要求服务器端至少安装Windows 2000、IIS 5.0或者以上版本软件。

  由于会受到上面的种种限制,检测客户机是否具有这种能力是必要的。例如,由于在IE中托管窗体控件需要在客户机上安装有.NET运行时间库,我们就可以编写检查客户机是否安装有.NET运行时间库的代码。我们可以通过检查Request.Browser.ClrVersion属性的值来完成这一操作,如果安装了,则会返回版本号,否则会返回0.0。

   结论

  在本篇文章中,我们学习了如何在IE中托管Windows Forms控件以及如何调试控件,我们还学习了如何利用.NET代码访问安全机制配置在浏览器中运行时控件能够执行的操作。
尽管这一技术要求特定的平台,但它仍然不失为一种有前途的技术,尤其是考虑到.NET Framework将成为未来版本的Windows的有机组成部分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值