简介
您是否曾经必须部署 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 的进程在具有有限安全设置的环境中启动该应用程序。
示例演示
这是一个非常简单的 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 属性。
|
应用程序返回时,DataGrid 被更新,应用程序也将更新。此时,我们遇到了在基于网络的应用程序中常见的问题。第一次加载期间,应用程序将生成一个网络调用,可能需要几秒钟才能完成。
提高 Windows 窗体响应速度
要提高应用程序的总体响应速度,可以利用后台线程。已更新的应用程序首先调用辅助线程来实例化一个 XML Web Service 对象。Web 服务实例化后,我们将使用 MethodInoker() 来安全地更新 UI。
从 Form Load 事件中的辅助线程开始:
|
| 有关如何在后台线程中更新 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 调用的后台线程。
|
为了说明如何将应用程序部署到 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 将自动检查程序集的时间戳,查看是需要再次下载该程序集,还是只需通过用户的程序集下载缓存来运行该程序集。
| 共2页: 1 [2] 下一页 | ||
|
|
|||
| · 51CTO主编推荐经典专题 · RAID——磁盘阵列基础 · 充电计划之热门IT认证.. · 51CTO技术自测 挑战自.. · CISSP认证成长之路 · AMD Phenom三核处理器.. · 国际文档格式标准开战 · 2007年互联网大会 |
· 我是黑客我怕谁——讲.. · ARP攻击防范与解决方案 · Solaris 10 配置管理 · Solaris基础知识入门 · RIP路由协议专栏 · MPLS路由协议专栏 · OSPF路由协议专栏 · 思科路由器产品 |
||
|
|||
| · Java基础教程 · VPN技术 · ARP攻击防范与解决方案 · SQL Server 2005全解 · SOA 面向服务架构 · SQL Server 2005全解 · Java编程开发手册 · RAID——磁盘阵列基础 |
· 三层交换技术专题 · SQL Server入门到精通 · Windows Server 2003企.. · Windows远程桌面应用 · C#技术开发指南 · VPN技术 · Solaris 10 配置管理 · C#技术开发指南 |
||
|
|||
| · ARP攻击防范与解决方案 · VPN技术 · SQL Server 2005全解 · Java基础教程 · SQL Server入门到精通 · SQL Server 2005全解 · SOA 面向服务架构 · Java编程开发手册 |
· C#技术开发指南 · 三层交换技术专题 · C#技术开发指南 · Windows远程桌面应用 · RAID——磁盘阵列基础 · Windows Server 2003企.. · 邮件服务器专题 · wimax技术与趋势 |
||
| ·DB2 Viper快速入门 ·DB2 9数据库的镜像分割与.. |
·将XML应用程序从DB2 8.x.. ·DB2 9中的pureXML:如何.. |
| ·服务器中的“傻瓜机”在.. ·盖茨也喜欢登录Youtube看.. |
· · |
| ·拯救系统管理员 ·美国选民:我为什么选布什 |
·VMware公司中文命名挑战赛 ·我们真缺乏创新吗? |
| ·J0ker的CISSP之路:复习-.. ·J0ker的CISSP之路:复习-I.. |
·9月第3周安全回顾 内网安.. ·教你几招识别和防御Web网.. |
| · NGN:下一代网络 · 网络访问中断大排查 · FTTx光纤接入 |
· 教你使用Anti ARP Sniff.. · 网络嗅探教程:使用Snif.. · 常见病毒手工清除方法大.. |
| · C++是垃圾语言?! · 2007年IT界七大抄袭事件 · Java实用开发全集 |
· 解析Ajax开发框架 走进A.. · 基于Google Maps与Ajax.. · 基于Google Maps与Ajax.. |
| · 热门 IT 培训认证官方资.. · Ubuntu 中文开源频道 · Solaris基础知识入门 |
· 费力不讨好 数据中心主.. · AMD Phenom三核处理器解.. · 51CTO主编推荐经典专题 |
| · 甲骨文Oracle 11g正式发.. · Oracle数据库开发之PL/S.. · Oracle数据库开发基础教.. |
· 存储2006,一个并购的大.. · IDC宣布浪潮蝉联存储市.. · 双机热备技术 |