77范文网 - 专业文章范例文档资料分享平台

Intraweb使用手册中文版(3)

来源:网络收集 时间:2019-04-02 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

TUserSession的Class Type可以是任何类型的,在一个由DataModule生成的项目中,TUserSession是TCompnonet的派生,而不是这里显示的TObject。TComponent允许Session own component例如Datamodule 允许简单地清除。(cleanup).

复杂的State和后退按钮

许多人很快会发现,当然使用IntraWeb开发里,浏览器里的后退按钮没有用了,缺省的IntraWeb禁止了后退按钮,点击它时,不会有任何事情发生,请注意,这仅仅适用于Application Mode,在Page mode里,后退按钮是有用的,这个限制是因为IntraWeb为了使用复杂的状态才会有的。 Scenario-Normal Appplication

试想一个普通的程序设计成运行在用户本地计算机上,它有五个不同的Form,并且为了满足Forms multiple instances of that form may be created different data(例如属性对话框显示了不同对象的不同属性)。试想一下现在在任何时候,不需要警告或是提示你,用户能在程序里访问任何一个Form。但不仅仅访问任何一个Form,他们还能访问任何一种过去的状态,甚至是访问一个已经从内存对象中移除的Form。在他们访问那个Form的时候,他们还能与之交互,怎样的一个程序会这样呢?这里有一些,但不是全部的问题: -Form所依赖的数据在数据库中的数据已经在数据库中不存在了,因为用户已经删了。 -Form所依赖的数据在数据库中正被改变,并且用户可能正定位到一个非法的数据 -内存中的对象已经被改变了,或者不再存在了。 在非IntraWeb 系统中的后退按钮

不是由IntraWeb开发的系统通常支持后退按钮,然而,它会处于这样一些情况: _ Stateless – They are completely stateless and reconstruct state between each page. This is usually very inefficient on the server side for weblications and puts

considerably extra load on databases because data is read and written unnecessarily. _ State Streaming – These types stream the state into and out of each web page. This consumes bandwidth and slows down page accesses. They also cannot use complex data, or usage of complex data causes the same problems described prior.

Even applications that support the back button, such problems are still encountered. However because they allow old data to be posted they must check the data to see if the requested operations can be performed. This adds significantly to the amount of user code except in the simplest of systems. Such systems are typically not weblications, but individual dynamic pages. IntraWeb is Not Alone

如果你试过许多的在线Bank应用程序或是定购系统,他们中许多都有同样的限制,但运行得都不是很好,大多数的系统允许你后退,但是会告诉你你所请求的页面是一个过期的内容,这是一种很不友好的界面,并且会让那些非技术出身的用户感觉迷惑。 用后退按钮来访问历史数据

在有限的环境下,后退按钮在Application mode下是被支持的,它支持访问历史数据。这就意味着,后退按钮将可用,让用户返回历史数据。然而,如果用户如果尝试在历史页里与数据进行交互操作时,就会失败。如果用户尝试这样的操作,那就会出现一个警告:

在这个警告页显示之后,页面将返回到用户通过后退按钮访问的页面之前的那个页面。这个功能通过设置

Server Controller中的.HistoryEnabled属性来实现。

这个警告也可以关闭,要这样做,可以在Server Controller中把.ShowResyncWarning属性设为False,如果这样做的话,用户将不会看到警告页面,而是直接转到当前页面。

Session Management WebApplication Object

TIWApplication 指的是一个IntraWeb apllication,TApplication是一个标准的Delphi应用程序。就像近来,TIWApplication不是一个可视化的组件,它不会出现在属性对话面板中,因此,没有公开它的属性,然而,它也有一些公开的属性和方法可以通过代码在IWApplication中访问,针对每一个用户的Session,TIWApplication对象都会创建。它会重新提供用户一个”Application”或是一个”session”。 Session 的生命期

用户Session是由IntraWeb自动管理的,当一个新的Session开始时,IntraWeb会自动创建一个新的实例给用户并且跟踪它,它能被用来获得用户的信息,控制用户信息或者储存一些典型的信息。对于开发者,不需要实现Session的管理,或者跟踪用户。

只有当TIWApplication的Terminate方法被调用或者它超时,才会终止一个Session,否则它将一直存在, 如果在特定的时间内,一个用户没有访问应用程序,这个用户的Session将会被Destory,缺省的超时期是10分钟,但是在ServerController里,通过设定Session Timeout属性,你可以改变这个时间。 Session Implementation

Session是由IntraWeb自动管理的。Session是保存在服务器的内存里的,同时会防止用户人为的修改Session的数据,每一个Session ID都是由安全的方法来创建的,所以不可预见,同时不容易被修改,通常情况下,每一个Session都是绑在用户的浏览器上的,并且如果另一个浏览器被检测到试图访问一个同样的Session,那么会得到一个错误。要获得更好的安全性,可以设置ServerController的RestrictIPs 属性。这会检查用户的IP地址,如果IP地址改变了,那么服务器将拒绝该Session的访问。这个选项缺省是设为False的,它只有在控制Intranets或是Extranets的用户时才会被设为True。这是因为,一些代理服务器比如Microsoft ISA Proxy Server在实现HTTP请求的时候会改变IP地址,这会造成给IntraWeb多个IP地址。

缺省的,Session ID是嵌入到每一个HTML页面并且由每一个HTTP请求来跟踪的,这允许一个单一的用户在一个应用程序中拥有多个Session,但是这样不方便的地方是,一旦用户开始使用程序,那他就不能离开程序和返回它。因为这一点,使用Session ID来跟踪任何非Applicatoin的页面时,必须新开一个窗口,除非是等到终止应用程序时再运行。

Session Tracking可以被设置为使用Cookies而不是嵌入到HTML页面中,你可以设置ServerController里的Session TrackingMethod属性为tmCookie来实现。这会让IntraWeb 使用Cookies来跟踪用户的Session,优点是用户可以随便地在程序内与程序外移动。缺点是许多用户都Disabled了Cookies并且在一个应用程序中,用户只能有一个Session。 Accessing the Session

应用的应用程序可以通过很多种方法来访问。 WebApplication Property of the Form

你可以简单地使用引用了Form的WebApplication属性来定义所有的事件和方法。这将满足近期来几乎所有的情况。然而,值得注意的是这个属性中不容易理解的是Global procedures, Tframes, Datamodules and non IntraWeb classes.

WebApplication Property of a Control

在写一个用户Controls的时候,基本的IntraWeb Control也包含了一个能使用的WebApplication属性。 RWebApplication

RWebApplication是一个特殊的全局变量,它能被用在当一个Form或是一个Control Reference不再有效

时访问当前用户Session。这在Datamodules,Tframes’s, global procedures and non IntraWeb classes时会非常有用。RWebApplicatoin是一个ThreadVar,在开发者使用它时,没有什么预告的警告,要引用RWebApplication你需要加一个IWInit到你的 usese clause。 Storing Additiong Data

Addition data能被储存在.Data属性里,在State Management 部分我们已经提到了。 Session Related Events

Server Controller有一些与Session Management相关的方法, are fired for session createion and destruction. OnNewSession

OnNewSession在一个新的用户Session创建的时候就被取消了,它传递进来两个参数,ASession和VMainFrom。

ASession是一个对新创建的Session的引用,能被用在查询用户信息或是修改储存在.Data属性的对象中的用户信息时。VMainForm就像一个定义的参数一样被传递,它如果在项目文件(dpr)中没有设定缺省的主窗体的话,那么它就会被初始化为nil,VMainForm可以从Start URL传递的参数中或是通过其它的规则来修改它,要指定一个交替的主窗体,只要简单地创建它,并且马上把它返回给VMainForm参数。 OnCloseSession

OnCloseSeesion在一个用户Session要终止的时候会被调用。它不会在一个WebApplication的Form关闭或是一个Session超时的时候被调用。 Memory Consumption

每一个Session所消耗的基本内存是非常小的,通常情况下这不是一个主要要考虑的问题。实际的占用的大小可以通过一个Session到另一个Session时改变,但是,占用的基本内存除了储存在.Data属性中的任何一个用户数据之外,通常不会超过1024bytes。 Reference

要获得更多的方法和属性的信息,你可以看看IntraWeb 帮助文件中关于TIWApplication的介绍。 Debugging

当你在Standalone方式开发时,调试就像开发其他的Delphi应用程序一样,设置断点、监视、运行之类的。

Debug Output

当你的程序运行在Standalone模式时,你可以返回一个调试结果来看看Session的创建、消亡以及HTTP请求,你可以把调试输出打开,从文件菜单中选择 “Show Debug Information”,或者点击工具条上的图标。

Detecting Error on Startup

如果在运行一个程序时碰到了错误,那么IntraWeb会终止这个程序,并且会把错误的Log存成一个.err文件,一个以应用程序名加上.err结尾的日志文件将会创建,如果你在运行一个程序的时候碰到困难,那检查一下相关联的.err文件,.err文件是一个标准的文本文件,能用记事本或其它的工具打开。但是发生在程序之外的错误,比如找不到需要的包或是一个需要链接的DLL文件时,这种错误不会记录到.err的日志文件里。

Layout Management

一个Layout management可以把分散多个组件中的零星的HTML片段装配成一个完成的HTML页面发送给浏览器。IntraWeb提供了一个基本的Layout management,TIWLayoutMgr可以用来充当一个布局管理器,现在IntraWeb提供了两个管理器,TIWLayoutMgrForm和TIWTemplateProcessorHTML。将来,还会有其它的可以支持XML或更多的管理器。 Form Layout Manger – TIWLayoutMgfFrom

这是缺省的布局管理器,如果没有一个特别的管理器被指定的话,那么它就会被创建并且使用。TIWLayoutMgrForm创建的HTML页面就和在设计Form时创建的一模一样。 HTML Templates

Templates允许你更好地规划和布置个别的From. Templates也允许一使用其它的页面编辑工具来设计页面,而不是使用Delphi,简而言之就是说它允许把设计和代码的实现分开来进行,Templates是一些特别指定的HTML文件。

要使用Template(模板),需要你的浏览器支持HTML4和JavaScript。在使用Templates时,每一个Frame Controls都会被当做没有Frame的状态来输出,如果你希望在Templates里使用frame的话,你需要在你的模板文件里使用IFrame标记来预先分好。

要使用templates,首先要在你的程序目录里创建一个Templates子目录并且创建一个以.html命名的文件,然后,在你要使用模板的那个Form里 1. 加一个TIWTemplateProcessorHTML组件。

2. 设置Form的TemplateProcessor到那个新加上去的TIWTemplateProcessorHTML组件。要了解模板

中的Action,可以参考Phonetics Customer Profiler Demo。

每一个组件里,Template都会包含一个标记{%Component.HTMLName%}。HTMLName多数情况下都会和生成From时的名字一样,这个标记会在组件输出时被替换。用{%%}而不用<>是因为这样更便于你在WSIWYG(即见即所得)的HTML编辑工具里编辑它,并且它兼容所有的HTML编辑器,{%%}标记也不会和其它的特殊字符冲突,这样就不会被解释成一些特殊的标记。缺省情况下,一个主窗体的标记会出现在要实现功能或属性的代码的首尾,当然,在某些情况下,这可能会和HTML冲突,如果出现这种情况,可以参考帮助文件中关于TIWTemplateProcessorHTML.MasterForm标记的那章,要在TFrame里使用组件,HTMLName不同于Name.因此一个Tframe是组件所owner的,一个Tframe中的组件可以在其他TFrame存在的情况或者Form里有一个组件的情况下取一个与那些Tframe中同名的组件。要避免在运行时把TFrame中的组件命名为与Frame相同的名字。另外,如果一个名为Label1的组件放在一个命名为Frame1的TFrame上,那么这个组件的HTMLName在运行时就会成Frame1Label1.在一个模板中就要使用{%Frame1Label1%}来做为Tag标记了。

如果你希望使用Boland Style Tags <#TagName#>来代替IntraWeb的Style tags,你可以设置TagType属性为ttBorland. IntraWeb Type tags在即见即所得的HTML编辑器中会更容易使用。 System Tmplates

System templates可以用来编辑由IntraWeb生成的系统信息和对话框的外观和布局。 System Dialogs 有两种特殊的模板文件

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Intraweb使用手册中文版(3)在线全文阅读。

Intraweb使用手册中文版(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/567703.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: