又是 VI6 SOM(一), to be continued...

这篇文章本来是用 HTML 写的,里面还有好多插图 (vi6 snapshot),可惜...
先贴在这儿,赶明儿再贴 HTML 版的。
==================================================================
Visual InterDev 6.0 中的 Script Object Model

本文需要读者具备以下技术背景:

HTML (Hyper Text Marked Language)
DHTML (Dynamic HTML)
DOM (Document Object Model)
ASP (Active Server Page)
DTC (Design Time Control)

--------------------------------------------------------------------------------

历史 / Client-Side Scripting / Server-Side Scripting

Web Site 在一开始出现的时候,主要目的是为信息发布(Information Publish)。换言之,一个 Web Server 更类似于一个文件服务器(File Server)。Web Site 是 Web Page 的集合,每一页 Web Page 都是使用 HTML 格式的纯文本。

为了实现更丰富的显示功能,并且增加访问者与页面的交互功能,在浏览器端(Client-Side)出现了 DHTML 技术。DHTML并非一个单独的产品或技术,而是一系列技术的集合。它主要集成了:

CSS (Cascading Style Sheet)
DOM (Document Object Model)
Client-Side Script (典型的是:Javascript)

另外,几乎是一瞬间,人们就不再满足于 Web Site 只做信息发布(Information Publish)平台了。人们希望用它来取代以前的 Client/Server 模式,也就是说做Web应用。这主要是在后台做文章,相关的技术有:

CGI (Common Gateway Interface)
ISAPI/NSAPI/WSAPI
ASP (Active Server Page)

在 Windows 平台上,考虑到性能效率和编程周期的折衷,人们往往选择的是 ASP (Active Server Page)。ASP 技术是通过在服务器端(Web Server Side)解释执行 Server-Side Script (通常使用 VBScript 编写),并有可能进一步调用服务器端组件(Server-Side Component),来最终实现浏览器/服务器 (Browser/Server) 三层 Web 应用模式。

--------------------------------------------------------------------------------

远程脚本编程技术 Remote Scripting

而在实际应用中,复杂的 Web 应用系统往往需要同时调用客户脚本又调用服务器脚本。客户脚本(Client-Side Script)用于完成用户界面──例如,为了动态改变 Web 页文本,对用户动作,比如双击作出反应,并执行诸如验证这样的面向客户的任务。客户脚本由浏览器解释执行,从而向用户提供了一种生动的、反应迅速的接口。而服务器脚本(Server-Side Script)是用来完成整个应用系统的商业逻辑部分。比如对某个数据库的存取动作。

但是客户端和服务器端脚本是互斥的,即互相不可见。当某个页首次请求时,服务器可能运行服务器脚本,并将页面传递给浏览器,然后浏览器就可以运行客户脚本。不过,如果该页上的服务器脚本有必要再次运行的话,那么必须将该页提交回服务器,服务器才可以有效地重新运行该页。维护页面中控件的状态和脚本中的变量可能需要一个复杂的脚本编程 (scripting) 过程,目的是在浏览器和服务器之间来回传递信息。这还会增加网络流量,降低 Web 应用的性能。

示例:
如图,在 Visual InterDev 6.0 的编程环境中可以清楚看到,DHTML 编程完全是 Client-Side Scripting 技术。相应的,HTML Form Element 全部都是 Client-Side Object。我们不可能在 Client-Side Script 中访问任何 Server-Side Object,如果想访问,唯一的方法是提交页面,使用 Action 属性去调用 ASP 页面。

一种折衷方案是远程脚本编程技术(remote scripting)。该技术允许你在客户脚本中写代码调用某个 ASP 页中的方法(函数或者例程)。实际上,你可以象调用本地例程那样调用服务器脚本,不过它们仍然运行在服务器上,并具有对服务器能力的所有存取权限。由于你从不需要离开当前页面,跑去调用服务器脚本,因此页面状态很容易保持。

Remote scripting 是通过函数库来实现的,当你要调用某个服务器方法时,可以直接从客户端脚本中调用这个函数。调用请求会被传递到浏览器中的一个代理进程中,该进程在浏览器中异步运行,目前,该代理是作为一个 Java applet 来实现的。该代理进程发送一个请求到包含你所调用方法的 ASP 页的服务器中。

而后,服务器加载 ASP 页,而且该 ASP 页上的一个特殊例程将你的请求调度到所需的函数。如果你所调用的函数有返回值,那么该值即被发送回代理进程,代理进程将之包装为一个对象 ------ 一个调用对象 (Call Object) ------ 该对象的属性中包含了许多有用的信息,其中包含函数返回值。

为了实现 remote scripting,除了你自己的客户端 (.htm) 文件和服务器 (.asp) 文件外,还需要下面的文件:

Rs.htm   包含了一系列函数,其目的是在客户端的 .htm 文件中初始化 remote scripting、执行远程过程、检查远程调用的状态,以及获得函数的结果。
Rs.asp   包含了一系列函数,其目的是在服务器端的 .asp 文件中初始化服务器端的 remote scripting,以及在 ASP 页中调度到所需的函数。
Rsproxy.class    包含 Java applet 的 Java 类文件(对象代码),其目的是在客户端和服务器页之间进行通信。
为了使得用 remote scripting 调用 ASP 页上的函数更方便一些,您可以在客户脚本中创建对象引用,引用具有服务器端函数的ASP页面。这样,你就可以使用标准的 object.method() 语法去调用在服务器 ASP 页面中暴露出的函数了。

--------------------------------------------------------------------------------

Visual InterDev 6.0 Page Object

读到这里,大家大概想到在 Visual InterDev 6.0 中,Remote Scripting 是如何方便地实现了。VI6 使用 Page Object DTC 帮我们封装了大量内容,我们所需做的就是首先在 ASP 页面中写一段函数,然后使用 Page Object 将其暴露出来。在前台的 HTML 页面中也加入 Page Object,帮我们引用(Reference)ASP 页面,然后就可以在 Client-Side Script 中使用后台 ASP 页面中的函数了。这种使用和以前的通过 Submit Form to ASP 的方法不同,无须离开 HTML 页面。

  
Server-Side
创建 Server-Side ASP 页面。
在 ASP 页面中写一段函数。
然后使用 Page Object 将其暴露出来。  Client-Side

创建 Client-Side 页面。
使用 Page Object 引用需要的 ASP 页面。
然后就可以在 Client-Side Script 调用写好的 Server-Side 函数了。  

令人高兴的是,函数的返回值通过 Call Object 的属性 callobject.return_value 来传递,可以是数组!

 

 

时间: 2024-11-01 15:51:37

又是 VI6 SOM(一), to be continued...的相关文章

用XML在页面内刷新数据

xml|数据|刷新|页面 不离开页面就能刷新页面中的(部分)数据好处多多.主要是不需要写无聊代码维护 state.ASP.NET (以及其雏形 VI6 SOM)中的 server-side control (VI6 DTC, Script Library) 通过大量hidden input 来维护页面 state,其功力之深,非吾辈能及.所以我们要想办法不离开页面就能得到新数据, 1. XMLHTTP   这种方法意思和 RDS 差不多,但在 XML 时代,这种方法显得比较正经儿.   网上有个

不离开页面刷新数据

开门见山,不离开页面就能刷新页面中的(部分)数据好处多多.主要是不需要写无聊代码维护 state. ASP.NET (以及其雏形 VI6 SOM)中的 server-side control (VI6 DTC, Script Library) 通过大量 hidden input 来维护页面 state,其功力之深,非吾辈能及.所以我们要想办法不离开页面就能得到 新数据,这样生活会比较好过. 其实办法早就有很多.比如自己写 ActiveX Control 或 Java Applets,或使用系统自

利用XML不离开页面刷新数据

开门见山,不离开页面就能刷新页面中的(部分)数据好处多多.主要是不需要写无聊代码维护 state.ASP.NET (以及其雏形 VI6 SOM)中的 server-side control (VI6 DTC, Script Library) 通过大量hidden input 来维护页面 state,其功力之深,非吾辈能及.所以我们要想办法不离开页面就能得到新数据,这样生活会比较好过. 其实办法早就有很多.比如自己写 ActiveX Control 或 Java Applets,或使用系统自己带的

再论:p2p风控是p2p网站的核心——这又是一个文盲式屁话

      全国上下,从政府到民间,所谓的专家和投资人基本都认为,p2p风控是p2p理财网站的核心,经过近来本人热心关注和常年互联网经验,我认为这又是一个文盲式屁话!       说出这样的话,基本上是不懂互联网的人或者是懂又不懂的那种"庸才",都被定性的思维模式和传统的观念束缚了.       在互联网思维中,风控只是互联网经营中重要的一个环节,而不是核心和重心.       如果非要说核心的话,那可以片面的说下,p2p理财模式和经营模式或者更确切的说人才模式才是核心.      

这是我总结的一部分关于 SOM 的内容,希望大家讨论一下,并且里面有些内容不是很 sure, 望大家指正。

VI 1.0 时代:1. Server-Side: ASP script    都由 <% %> 括起来.---- 所谓 inline 方式.   在页面中,从上至下顺序执行.   变量作用域为页面.   多用来插入表达式,如:<% =myVar %>.   <% = xxx %> 相当于 <% response.write xxx%> 2. Client-Side: DHTML, Document Object Model   DOM 模型的对象 obje

搜索引擎优化营销新名词SOM

在今年上海的搜索引擎大会上,有幸听到一位从事呼叫中心业务标准制定的专家的演讲.忽然,发现国内的搜索引擎营销业界似乎一直缺失一套行业规范标准.在没有一个健全的标准规范下,从事SEO\SEM培训或外包的公司似乎是自说自话,自成体系.长此以往,必不利于行业的健康有序发展.因此,个人认为由某个行业内协会组织牵头,制定行业标准与规范,显得尤为必要. 笔者自05年以来一直浸淫于电商网络营销业,多年来也算"玩索而有得".从早期的"米虫"到狂热的SEO,再到给企业制定网络营销解决方

作为一个真正的SEOer 它的原则又是什么

每个SEO人都有自己的原则,当然作为一个真正的SEO,它的原则又是什么呢? 第一条,只有一个flash引导页,虽然有多个关键词上了首页,但这个网站已经足足做了我4个多月了,并且还有两个关键词到目前为止还在100名以后,对于这种站我还不知道要做多久,为此我的原则是以后这种单我是坚决不做的. 第二个原则:多个网站的公司.百度算法调整就已经表明:网站信息度相同的网站只留一个站,为此很多公司有多个网站的都只剩下一个站排名正常,其它的要么降权要么被K,我也有同样的经历,一个公司4个网站,本来就差一个网站的

求一个加上100后是一个完全平方数,再加上168又是一个完全平方数的整数

查看全套"c语言习题集" 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果.请看具体分析: 2.程序源代码: #include "math.h"#include "stdio.h"#include "conio.h"main(){ long int i,

android-如何直接安装应用(有root和没root情况分别又是怎么样的)

问题描述 如何直接安装应用(有root和没root情况分别又是怎么样的) 就是直接安装,不提示用户,直接内部安装,就像"adb install XXX"效果一样,(是不是要先写一个linux执行的文件,然后调用呢?还是怎么样) 解决方案 有root直接调用隐藏的安装接口. 动机不纯呢.. 没root好像也是可以的,就是要绕个弯.