Internet技术的发展为编程人员提供了更广泛的施展身手的空间。早先"Internet应用程序"这个词仅仅只是指一些用FTP协议下载文件或浏览HTML页面的工具,而如今使用Visual Basic,不仅可以为Internet开发应用程序,而且还可以把Internet技术作为一部分融入大型的解决方案中。
今天我们所要讨论的问题是利用Visual Basic创建在面向Internet的应用中起重要作用的ActiveX组件。例如,你所创建的ActiveX控件可以用于HTML页面;你开发的ActiveX文档可以在Internet浏览器中使用并于其他的组件一起和HTML页面集成起来;另外ActiveX代码组件(以前被称为OLE服务器), 可以被部署在客户端或服务器端的计算机上用于后台的处理。
[Internet的开发环境]
Internet是一个使用TCP/IP协议、全球性的非集中管理的计算机网络。如果去掉全球性这一点, 所谓"Internet技术"完全可以和本地局域网中所使用的技术一样。
从一方面来看, Internet技术只是简单地为开发人员提供了另一个施展身手的空间。如果你在和Web连接时使用了ActiveX组件,尽管你具体实现的方法有可能不同,如采用了HTML和VBScript代码以实现安全性或是其他,但是你仍然在调用方法,设置属性,处理事件等等。这样,作为一个VB开发人员所有的知识和技能都被用于了Internet的环境下。
从另外一个方面来看,应用Internet的技术可以使你向一些吸引人的方向延伸你的开发工作。例如将ActiveX组件和Internet技术综合有以下的益处:
更简单的维护---作为Web一部分的组件可以根据需要下载,无须用户运行一个setup程序进行升级;
将功能延伸至Internet---通过通用协议,用户将看不见在Internet和Intranet之间的切换。
Internet客户/服务器
可以借用客户机/服务器的关系来考查Internet的开发环境,客户端和服务器端都可以有"静态的"和"活动的"两种状态。活动的客户机或服务器可以根据其内部状态的改变而动态地运行一个脚本或是改变其行为;而静态的客户机或服务器仅仅只是对外界激励作出反应。
Internet开发包括以下四种情形:
静态的客户机和静态的服务器
静态的客户机和活动的服务器
活动的客户机和静态的服务器
活动的客户机和活动的服务器
静态的客户机和静态的服务器
静态的客户向静态的服务器发送请求,服务器响应该请求并返回一个文件。一旦HTML页面被下载到客户端, 客户机和服务器的连接就终止,直到服务器接受到下一个请求。在使用FTP下载文件或是Usernet阅读新闻时也会发生同样的情形。
结合静态客户机的功能即为用Visual Basic中和Internet技术相关的ActiveX控件创建一个FTP工具,一个Web浏览器或是一个新闻读者等等。这些性能也可以被集成到一个大的应用程序中。
静态的客户机和活动的服务器
假如你正在使用一个静态的客户端, 例如和一个当前应用程序相连接的Web浏览器窗体, 以下载一个HTML页面,上面有文本框以输入查询内容,还有按钮以把用户输入的条目作为一个字符串发送给服务器。当你发送完文本之后,服务器返回一个已定制过的HTML页面-往往是通过调用一个DLL中的函数, 上面有你查询的结果。这就是一个"活动的"服务器的例子, 它自动处理数据并根据条件返回一个定制的结果。
创建活动服务器的途径之一就是通过使用Visual Basic开发的DLL并用Oleisapi2.dll实现访问。Oleisapi2.dll包含在Windows NT Server 4.0之中,是Internet Information Server (IIS)的一种功能,它包括了ISAPI的函数功能集。通过IIS和Oleisapi2.dll, 你可以在Web服务器上部署DLL, 并从客户端使用HTML页面上的信息或调用其方法。
活动的客户机和静态的服务器
当客户机拥有处理能力时称之为活动的客户机。活动的客户机拥有本地处理任务的能力,而不是请求服务器帮助处理。在客户机/服务器应用中,本地处理的能力不仅提高了任务完成的速度,而且减轻了服务器的负担。
活动客户机的情形有很多种。例如,用Visual Basic构建的ActiveX文档几乎可以包括所有传统应用的功能。当你把它放到一个容器中时, 例如Internet Explorer, 你的客户端就完全拥有了传统Visual Basic中所有的动态功能。客户端也可以通过在一个HTML页面中使用VBScript调用ActiveX控件或DLL实现。
活动的客户机和活动的服务器
如果采用活动客户机和活动服务器的模式可以充分发挥优势: 分布式的功能便于扩展,灵活的解决方案可以充分利用系统和网络资源。
在三层结构的客户机/服务器环境中开发部署的应用中,其组件分布于整个网络上, 总起来完成提供用户界面, 实现业务准则和数据访问的功能,而且由于可以充分利用客户端和服务器端的处理能力,可以实现更复杂的数据访问功能。
一个活动的服务器可以负责跟踪客户提交的查询表格,提交查询并返回结果。一个活动的客户机则负责将返回的结果展现给用户, 然后将改变的内容返回给服务器。另外通过Internet组件的下载,当用户访问Web站点时, 可以自动更新客户端提交查询和处理结果的准则。
[在Web上使用ActiveX组件]
ActiveX组件为Internet技术带来了新的功能。通过Internet组件的下载,超连接,菜单协商等各种功能,将ActiveX组件和Internet集成起来,内容和应用程序之间的界线也越来越模糊。另外由于在站点上(在客户机和服务器之间)分布功能函数,我们可以创建更具扩展性和灵活性的站点。
在Internet应用程序中使用ActiveX文档
使用ActiveX文档, 我们可以开发和Internet/Intranet站点的其他元素紧密集成的Visual Basic的应用程序。利用这些组件开发出来的应用程序,用户可以透明地在HTML页面和ActiveX文档之间迁移。
可以把ActiveX文档作为Visual Basic为Internet提供的应用。几乎所有现在用标准应用程序完成的工作都可以用ActiveX文档实现。
作为HTML页面中的一个元素,如果在用户的客户机上没有安装ActiveX文档, 当用到它们时, 可以自动地从网上下载;如果客户机上的版本比较旧, 也可以可以自动升级。ActiveX文档的许多特性提供了很好的安装,导航性能,并可以保证很好的持续一致性:
Internet组件的下载---你可以创建一个到你的ActiveX文档的连接,使浏览器可以自动找到并下载所有需要的组件。
超连接对象---在一个超连接感知的包容器中,你可以使用Visual Basic的超连接对象的属性和方法以跳转到一个给定的URL或是通过历史的记录清单进行导航。
菜单和协商---由于可以从Word或Excel中获得文档,Visual Basic的ActiveX文档提供了将其菜单嵌入浏览器中的菜单的功能。例如当文档被装载入Internet Explorer中后,浏览器的菜单将和你为该ActiveX文档创建的菜单混合。
PropertyBag---当你在Internet Explorer中部署一个ActiveX文档时, 你可以通过PropertyBag对象保持数据的一致性。
下面我们来看一看如何在Internet Explorer中部署一个ActiveX文档。假设我们要通过一个HTML页面中的超连接连接到这个ActiveX文档上: