Internet技术的进步为编程职员提供了更广泛的施展身手的空间。早先"Internet应用程序"这个词仅仅只不过指一些用FTP协议下载文件或浏览HTML页面的工具,而现在用Visual Basic,不仅能够为Internet开发应用程序,而且还可以把Internet技术作为一部分融入大型的解决方法中。
今天大家所要讨论的问题是借助Visual Basic创建在面向Internet的应用中起要紧用途的ActiveX组件。比如,你所创建的ActiveX控件可以用于HTML页面;你开发的ActiveX文档可以在Internet浏览器中用并于其他的组件一块和HTML页面集成起来;另外ActiveX代码组件, 可以被部署在推广客户端或服务器端的计算机上用于后台的处置。
[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 的一种功能,它包含了ISAPI的函数功能集。通过IIS和Oleisapi2.dll, 你可以在Web服务器上部署DLL, 并从推广客户端用HTML页面上的信息或调用其办法。
活动的顾客机和静态的服务器
当顾客机拥有处置能力时称之为活动的顾客机。活动的顾客机拥有当地处置任务的能力,而不是请求服务器帮助处置。在顾客机/服务器应用中,当地处置的能力不只提升了任务完成的速度,而且减轻了服务器的负担。
活动顾客机的情形有非常多种。比如,用Visual Basic构建的ActiveX文档几乎可以包含所有传统应用的功能。当你把它放到一个容器中时, 比如Internet Explorer, 你的推广客户端就完全拥有了传统Visual Basic中所有些动态功能。推广客户端也可以通过在一个HTML页面中用VBscript调用ActiveX控件或DLL达成。
活动的顾客机和活动的服务器
假如使用活动顾客机和活动服务器的模式可以充分发挥优势: 分布式的功能便于扩展,灵活的解决方法可以充分借助系统和互联网资源。
在三层结构的顾客机/服务器环境中开发部署的应用中,其组件分布于整个互联网上, 总起来完成提供用户界面, 达成业务准则和数据访问的功能,而且因为可以充分借助推广客户端和服务器端的处置能力,可以达成更复杂的数据访问功能。
一个活动的服务器可以负责跟踪顾客提交的查看表格,提交查看并返回结果。一个活动的顾客机则负责将返回的结果展示给用户, 然后将改变的内容返回给服务器。另外通过Internet组件的下载,当用户访问We哔哩哔哩点时, 可以自动更新推广客户端提交查看和处置结果的准则。
[在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文档上:
1. 用HTML创建引用这个ActiveX文档的连接。
因为ActiveX文档将在Internet Explorer中取代HTML页面,所以有必要将组件的OBJECT标签放在另一个HTML页面中。当跳转到该页面后,一旦ActiveX文档被装载,它就会立刻消失。
2. 用HTML为浏览器提供下载、注册与导航到这个ActiveX文档的渠道。
在OBJECT标签中应该说明ActiveX文档的类ID和CODEbase属性。
3. 在同一页面上, 用VBscript指示Internet Explorer立刻通过相应的.vbd文件导航到该ActiveX文档上。
在Internet应用程序中用ActiveX控件
ActiveX控件为你的HTML页面带来了活力。通过HTML和VBscript, 你可以在一个HTML页面上用ActiveX控件, 设置它们的属性,调用它们的办法并处置它们的事件。一个包括控件的的HTML页面仿佛一个Visual Basic的设计窗口。ActiveX控件可以提供更多的交互式的,生动的用户界面特质,使HTML页面变得愈加有活力。
一般需要通过HTML和VBscript的综合方法引用并控制ActiveX控件的行为。用HTML为浏览器提供下载,注册并引用ActiveX控件引用的渠道。在HTML代码的OBJECT标签中需要包含:
控件的类别ID, 以使程序能在Windows的注册表中找到它们;
ID的属性,以便在VBscript中引用该控件;
CODEbase属性,告诉浏览器假如组件不在顾客机上该到哪里找;
PARAM NAME标签,设置控件的属性参数。
然后用VBscript撰写处置单击事件的代码,使每个控件被单击后,程序可以作相应的动作。
Visual Basic专业版中还包含了三个已预先设计好的用于包裹Internet有关技术的控件, 使你可以扩展已有些应用程序,它们是:
Internet Transfer Control---包裹了三种通用的Internet协议:HTTP, FTP和Gopher;
WebBrowser Control---包括了很多通过Internet Explorer可以获得的功能;
WinSock Control---使你可以连接到一台远程的机器, 然后通过UDP或TCP交换数据。
通过用这类控件, 你可以添加从FTP站点自动下载文件的功能,还可以为Visual Basic IDE提供Web浏览器的Add-in。
在Internet应用程序中用ActiveX代码组件
无论是在推广客户端或是在服务器端, 都可以用ActiveX代码组件, 从而为HTML页面添加功能。
在推广客户端部署代码组件, 因为用户的命令无须通过互联网传输回服务器,可以大大提升运行速度。服务器端的组件同样也可以有显示用户界面可视化元素的功能。通过下载一个DLL, 大家可以在HTML页面上添加用户界面的元素,如一个登录对话框; 还可以提供幕后的推广客户端处置能力,比如一个随着VBscript的函数库。
推广客户端的部署工作像对ActiveX控件的用法,你同样需要用HTML和VBscript代码引用并撰写代码组件。下面给出了一个用HTML和VBscript代码撰写调用DLL以显示登录对话框的实例:
1. 用HTML创建一个窗体,其中包括一个按钮以调用登录对话框:
2. 用HTML为浏览器提供下载,注册及引用ActiveX组件的渠道:
3. 用VBscript调用组件中的办法以显示登录对话框:
组件自己中将包括用于形成登录字符串的代码,并将它发送给服务器用于验证。
另一种将DLL和Internet技术结合的办法是将它部署在服务器端。假如你有Internet Information Server -包括在Windows NT Server 4.0中, 你可以通过Visual Basic关盘中的Tools目录下的Oleisapi2.dll调用Visual Basic中内置的DLL函数。
Oleisapi2.dll中包括了ISAPI中的所有函数。你可以把DLL部署在HTTP服务器上, 并通过HTML页面上发送的信息调用其办法。Oleisapi2.dll作为顾客请求到DLL之间的中介。因为代码是基于HTML的,这类请求只是简单的URL。
通过服务器端的DLL可以由顾客提供的参数定制返回给顾客的HTML页面,还可以管理数据库的连接,对同意到的请求和返回的结果进行整理和编组。