您现在的位置: 中国教师站 >> 教师关注 >> 电脑技术 >> 编程技术 >> Visual Basic >> 正文

Google
WebClass实现动态WEB编程之理论篇
作者:Siny 文章来源:中国教师站cn-teacher 点击数: 更新时间:2007-4-22 16:20:44
WebClass实现动态WEB编程之理论篇
(作者:苏红超 2001年01月10日 15:50)

在前一段时间,我曾经在“用VB ActiveX DLL实现ASP编程”一文中详细探讨过如何使用ActiveX DLL技术替代简单的纯ASP来实现核心代码和商业逻辑的封装。适当的利用ActiveX DLL技术在构建动态WEB站点的时候的确能够带来很多的好处,这是显而易见的,但是仍然需要一个单独的ASP文件来创建和销毁我们所编写的ActiveX DLL组件,在ASP中大量使用ActiveX DLL是不现实的,并且我们的ASP编程仍然不可以像往常的应用程序那样进行编写,因为凌乱的ASP代码和HTML代码交织在一起,并且,无论是单纯的ASP程序还是封装了ActiveX DLL的ASP程序,一个最大的弊端就是在项目开发过程中的调试困难,比如很难设置断点并随时暂停程序来察看某些变量的值。那有没有两全其美的方法呢,既保证开发WEB程序的高效率,又可以向平常的应用程序那样可以方便的调试和编写呢?答案当然是肯定的,微软公司在VB6版本之后就引入了“WebClass”的概念,并且在新建项目中增添了名叫“IIS应用程序”的项目类型。WebClass正是微软公司提出的用来使得程序员可以像开发普通应用程序那样来开发WEB程序的解决方案!
  说起“IIS应用程序”,大家会认为这和ASP程序有何区别呢?ASP不就是运行在IIS上面的WEB应用程序吗?其实这是微软命名上面的一点小错误,使得大家在名称上面比较容易混淆。我们现在应该清楚,“IIS应用程序”就是采用WebClass技术用来实现和ASP同样功能的应用程序,它避免了ASP的种种缺点,比如源代码是透明的、解释执行带来的速度慢。其实WebClass应用程序也是一种VB组件,使用他完成的WEB应用程序将会是编译之后的,其运行速度有很大提高,同时也避免了源代码和核心技术及商业机密被泄漏。

  WebClass 在实质上是一个VB组件,确切一点说来讲WebClass是一个ActiveX DLL。他使得你可以编写服务器端代码以响应来自用户的浏览器请求。对用户来说,一个 IIS 应用程序好象是由一系列的HTML页面组成;对开发者来说,一个 IIS 应用程序是由一些被称为 webclass 的特殊类型对象组成。WebClass可以直接访问所有的ASP内置对象(request、response、application、session、server)。任何使用ASP开发的WEB项目都可以在WebClass中实现。由于在WebClass中引入了HTML模版的概念,从而有效的避免了ASP中的程序代码和HTML代码相互交织带来的缺陷,很好的实现了商业逻辑层和最终表现层的分离(有些类似当前XML和XSL的形式),极大的提高了WEB项目的开发效率。

  IIS 应用程序在表面上和 Active Server Pages 应用程序相似。这两种应用程序都显示动态的 Web 站点,并且都是在服务器上而不是在客户端上执行它们的处理。但是,每一种都有自己独特的优点:

  (1)Active Server Pages 适合于对制作 Web 页面感兴趣的脚本开发者,它提供了将脚本和 HTML 混合起来的独特能力。

  (2)IIS 应用程序适合于构造基于 Web 应用程序而不是 Web 页面的 Visual Basic 开发者。IIS 应用程序允许复杂的事务处理,并且几乎任何的浏览器或平台都可以很容易地访问它。

  使用IIS应用程序来开发WEB项目可以有如下优点:

  (1)熟悉的开发环境和模型。可以利用 Visual Basic向工程添加类(Class)、模块(Model)或任何 Visual Basic ActiveX 部件,因而易于调试和编写。

  (2)使用的广泛性。可以被大多数的浏览器支持。

  (3)可重复使用的部件。类似于面向对象编程;各个对象之间可互相访问。

  (4)代码和 HTML 相分离:和编写ASP 应用程序不同,Server 端处理程序和Client端程序分离,便于维护和修改。

  (5)可自定义处理事件,因而编写方法灵活

  接下来我们来看看WebClass的具体组成部分是什么:

  Webclass 由html模板和自定义 Webitem 组成。( html模板和自定义 Webitem统称Webitem)当然不是必须包含模板和自定义的Webitem。

  (1)一个 HTML 模板文件是与 webclass 相关联的HTML页面。当 webclass 收到一个请求时,它可以向浏览器发送用于显示的HTML页面。模板和常规HTML页面的不同仅在于向浏览器发送页面之前,它常常包含 webclass 可以处理的替换区域(通常是用"WC@"标签定义的范围)。这样就允许自定义自己的响应。

  (2)一个自定义的 webitem 是由一个或多个事件处理程序组成的程序资源。在页面加载或用户选择一个 HTML 元素时,这些事件处理程序被浏览器调用。这些事件处理程序可以对浏览器产生一个响应或将处理传递到另一个 webclass 的 webitem。

  一个完整的WebClass应用程序的大致流向如下所示:

  A.指定某一个WebClass(比如Test1)作为首先启动的项目

  B.激活这个WebClass(Test1)的WebClass_Start事件

  C.在Test1的WebClass_Start事件中调用某一个HTML模板的WriteTemplate方法,比如Check. WriteTemplate这里的Check就是一个属于Test1这个WebClass的一个HTML模板

  D.在你的这个Check模板中如果有<FORM>存在,那就会触发这个<FORM>的ACTION属性,比如<form action=xxx.asp?WCI=ddd>,那么就会调用属于名为'xxx'的这个WebClass的'ddd'项目(Item);当然这个'xxx'可以是你刚才操作的WebClass本身,即"Test1",同样,这个"ddd"可以是一个HTML模板或者一个WebItem。

  E.触发属于"xxx"这个WebClass的项目"ddd"将会激活"ddd"本身的ddd_Respond()事件,你就可以在这里进行一些处理了,比如检索数据库资料;然后可以再调用其它HTML模板的WriteTemplate方法,比如就调用本身的ddd.WriteTemplate方法

  F.然后将会调用ddd的ProcessTag事件,进行卷标的处理过程,当然你的这个叫ddd的HTML模板中就要有相应的WC@卷标了。

  我们再来看看Webclass中的事件响应。

  1. .Webclass中预定义的事件有3个 : response , processtag , userevent

  .response 事件响应用户端请求。

  .processtag 事件是作为 WriteTemplate 方法处理的一部分自动发生的。不能单独被触发或用来处理响应。

  .userevent 事件: 一个 UserEvent 过程处理 webitem 的所有用户事件。UserEvent 事件是由URLFor 方法在运行时产生的。所以只有使用了URLFor 方法动态产生的超链接才会触发UserEvent 事件。

  2. Webclass_start() 事件类似于VB中的Sub Main()。

  所以可以指定一个project 开始的webclass。也可在model 模块中用Sub Main() 来启动。

  3. 发送html 到浏览器: 将页面反馈回浏览器有两种方法。

[1] [2] 下一页

相关专题:
 
 网友评论:(评论内容只代表网友观点,与本站立场无关!)
GOOGLE广告

阅读排行

| 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 |
中国教师站

中国教师站 版权所有 Copyright © 2006-2020 All Rights Reserved 站长:Sina & Siny
[备用域名:www.JXZYW.Com] 有事请留言有事请留言
【实力成就精品 诚信呵护品牌】

信息产业部备案
苏ICP备06018635号