|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQL Server还有更多的扩展,可以用存储过程,数据库大小无极限限制。办事器|数据
在本章的入手下手,已向人人供应了一张RDS的组件框图,肯定了哪些组件是客户真个,和哪些组件是办事器真个。在上一节,集中引见了客户端组件,即数据控件,由于它们是利用RDS最复杂的办法。它们答应从办事器向客户机无缝地传输数据,同时也供应了一种在Web页面上处置数据的简略单纯办法。为了取得办事器上的数据,只需求设置几个属性,挪用1、两个办法就足够了。
利用数据控件存在的成绩在于它们获得数据的才能绝对无限,即缺少天真性。关于RDS数据控件,必需经由过程参数,好比Connect i o n和SQL,指定毗连和查询的细节,这把咱们限制在数据库和复杂的查询上。另外,用户还能看到这些参数,因而在利用RDS数据控件时存在一个潜伏的平安破绽。固然属性U R L经由过程指定实践的数据源,而不是获得数据的场合,局部处理了这个成绩,但依然存在着缺点。用户照旧可以获得U R L,直接读取数据,而这并非咱们所但愿的。
IE 5.0 的引入使会见X M L数据变得更加轻易,因而今后X M L数据一定会普遍利用。与RDS数据控件的U R L属性一样,用户也能直接读取数据,由于数据源的称号对他们是可见的。
因而,上面一些成绩需求思索。
? 需求一种平安的办法检索办事器端数据,并在客户端利用它们。
? 需求一种更新数据的办法。
? 不丧失天真性。
这些成绩的处理办法是利用组件。组件答应封装对一切数据的会见,包含数据源,确保只在Web页面上显示数据。可以埋没毗连的细节,由于它们在组件外部,不会表露给用户,所以平安性不会遭到伤害。也能够创立本人的组件来更新数据,如许保存了可更新数据的灵
活性。
另外又增添了平安性,由于在客户端会见办事器组件之前,需求修正注册表。这确保只创立所需的组件,禁止用户上载组件,然后从办事器会见他们。稍后将会看到若何修正注册表。
10.3.1 基于办事器的组件
在这里其实不盘算大篇幅地会商若何创立组件,由于本书前面的局部章节已掩盖了这些内容,这里将引见一些非常复杂的用于办事器组件的代码。这有助于申明将要利用的RDS例子。
起首组件由一个界说毗连细节的常数入手下手,在本例中针对SQL Server和p u b s数据库。
然后创立第一个办法,向客户端Web页面供应一个纪录集。这是一个尺度的Visual Basic函数,前往一个尺度的A D O R e c o RDS e t对象。
这里有两个主要的中央需求注重。第一是把C u r s o r L o c a t i o n设为a d U s e C l i e n t,确保利用客户光标引擎。这关于断开毗连的纪录集是需要的。第二点需求注重是上面这一行代码:
把纪录集从办事器端“断开”,平安地将纪录集前往给客户端。
组件的第二个办法用咱们对断开的纪录集的修正来更新办事器。它承受一个纪录集参数,从头毗连到数据存储,然后收回U p d a t e B a t c h号令。这将一切批处置修正送到办事器。
这就是这个组件的全体内容。很分明,咱们把它复杂化了,如许才干很快地显示其包括的内容,但实践上关于能在组件里放甚么并没有任何限制。在本书第1 3章到第1 8章会看到更多的有关若何做和为何要如许做的例子。
10.3.2 DataSpace对象
D a t a S p a c e对象是担任与办事器停止通信的客户端对象。它的义务是供应一种办法,从客户端创立办事器端组件,同时答应在客户机和办事器之间传输数据。
固然听起来有些庞杂,但实践上倒是十分复杂。在Web页面上创立一个D a t a S p a c e对象,再利用D a t a S p a c e对象创立办事器端组件。
创立一个D a t a S p a c e对象有两种办法。第一种办法利用< OBJECT>标志:
这与曩昔创立其他客户端RDS组件的办法几近不异,独一分歧的就是类I D。
第二种办法是利用剧本代码创立D a t a S p a c e对象。上面的代码显示了若何用J S c r i p t创立一个D a t a S p a c e对象。
两种办法的次要区分在于:利用< OBJECT>标志时, D a t a S p a c e对象只在页面加载时才创立。利用剧本手艺意味着当剧本运转时,就创立了D a t a S p a c e对象。假如想延迟对象创立以使页面加载得快一些,那末可使用剧本手艺。
使用D a t a S p a c e对象创立办事器组件
一旦创立了D a t a S p a c e对象,可使用C r e a t e OBJECT办法创立办事器端对象。
P ro g I D是但愿创立的对象的I D,Connect i o n是Web办事器的U R L地址。例如,假定有一个供应p u b s数据库数据
的Visual Basic组件,如图1 0 - 1 2所示。
在这里,P ro g I D应当是Wr o x P u b s . p u b s。上面以一个完全的例子具体申明。
(1) 创立组件和获得数据
假定p u b s类有两个办法, g e t A u t h o r s和s e t A u t h o r s,用于读取和更新a u t h o r s表。在创立组件之前,先创立一个RDS数据控件来寄存和绑定命据。注重,这里没有毗连的细节。
然后可使用以下客户端剧本代码创立办事器组件:
这里创立了D a t a S p a c e对象的一个实例,然后利用C r e a t e OBJECT办法创立办事器端对象。这里,指定了对象和Web办事器的称号。在本例中将Web办事器的名字设为l o c a l h o s t,它应当是办事器的实践称号。这不是一个平安成绩,由于用户正在与Web站点毗连。
如今,变量o b j P u b s是Wr o x P u b s . p u b s对象的一个实例,可以像利用其他对象一样挪用其办法。
挪用g e t A u t h o r s办法前往一个断开毗连的纪录集。如今需求做的就是利用这个纪录集,因而可使用一个RDS数据控件(用< OBJECT >标志创立)来寄存纪录集并绑定命据。利用数据控件的SourceRecordset 属性来吸收从组件中获得的纪录集。
在这类情况下,数据控件体现得就像本人在获得数据一样,独一分歧的是咱们已从组件中供应了数据。
(2) 利用组件更新数据
读者能够想晓得利用办事器端组件时,若何更新数据?不克不及利用数据控件的S u b m i t C h a n g e s办法,由于数据控件没有毗连的细节,因而不晓得数据从哪里来。既然纪录集是一个尺度的断开毗连的纪录集,其数据又是由办事器组件供应的,那末组件仿佛应当晓得数据的来历?是的。因而需求把这个断开毗连的纪录集传给办事器组件,它会履行批处置更新。
为了完成这一点,起首从数据控件中掏出纪录集,然后将其作为参数传给办事器对象的办法。
实践上这相当复杂。
10.3.3 利用办事器端组件的长处
那末办事器端组件最大的特征是甚么?看一下它的长处:
? 毗连细节对用户不成见,为咱们供应了一个更平安的体系。同时,组件也必需被注册,这又是一道附加的平安限制。
? 可以用任何兼容C O M的言语来创立组件。在例子中利用Visual Basic的缘由是由于V B轻易了解,但假如需求也能够利用V C + +或D e l p h i。这答应开辟人员利用本人最熟习的言语。
? 创立的组件并只不局限于前往和更新纪录集。可构建大批封装的营业逻辑作为数据处置的一局部。
? 可以在s e t R e c o RDS e t办法中封装全体抵触处置的代码,而只前往毛病的具体申明。这标明客户端剧本是标准的。同时,也意味着用户没法盗取你精心编写的代码。
本书的下一节会具体引见组件的长处。
10.3.4 注册办事器端组件
在后面已经说过,在Web阅读器中创立一个办事器组件之前必需修正注册表。为了让RDS能利用组件,必需将组件的P r o g I D添加到上面的注册表键中:
正告:在编纂注册表时一直要很细心。在修正之前备份注册表永久是明智的。
运转r e g e d i t后,选择A D C L a u n c h键,然后从E d i t菜单当选择N e w,再选择K e y。如今为组件输出P r o g I D,例如图1 0 - 1 3所示。
还应当思索对注册表做一点修正以标明组件为“ safe for scripting”,如许在运转的时分,才会完整知足I E的请求。此时需求增添两个键,两个都需求组件的G U I D。
完成的最好办法是利用Visual studio的Package and Deployment Wi z a r d创立一个Internet下载软件包(Internet Download Package)。假如选择了Safe for Initialization和Safe for Scripting这两个选项,那末当软件包装置到办事器时,将会更新注册表。假如的确需求失掉组件的类I D,那末这个导游也能创立一个HTML文件,外面是一个带有组件类I D的<OBJECT>标志。
10.3.5 自界说处置器
RDS数据控件是一个优异的客户端东西,可在客户端处置大批的数据。大多半例子已标明数据控件利用的是固定的数据集,好比a u t h o r s表。但是,静态数据绑定的例子标明了也能够让用户决意本人想要检索的数据。这可以经由过程创立按钮来完成,可为用户供应一个文本框来输出表名,乃至输出SQL查询字符串。
固然,这增添了RDS数据控件的天真性,但倒是以就义平安性为价值的。假如用户对数据的利用局限不受限制,他们要末会感觉凌乱,要末就想偷看那些保密的财政数据。因此咱们需求的是一种天真的,但又受必定限制的检索数据的办法。
为了做到这一点可使用一个处置器,可以在毗连字符串或号令履行之前修正它们。
处置器是一个包括四局部内容,分离由回车符分隔的文本文件:
? Connect节:肯定毗连字符串。
? SQL 节:肯定SQL语句和号令。
? UserList节:肯定用户。
? Logs 节:肯定日记纪录才能。
该文本文件名缺省为M s d f m a p . i n i,装置在Wi n d o w s缺省目次中。
1. Connect节
Connect节答应掩盖毗连字符串和会见细节,由上面两个条目之一标识:
? [connect default] 指有缺省的毗连细节。
? [connect Connect i o n N a m e] 指知名为Connect i o n N a m e的毗连的细节。
在该节有两对称号/值,如表1 0 - 6所示。
例如:
这标明,假如数据控件的毗连字符串为P u b s D a t a b a s e,用户将以G u e s t U s e r的身份登录到数据库,而且只要读的权限。因而,假如用户履行以下操作:
这里的值掩盖了Connect节中的会见权限值。
为了准确利用U s e r L i s t节,办事器必需可以验证用户,因而这取决于办事器上的验证划定规矩。例如,假如利用匿名会见,那末一切用户城市以Web站点中I I S办理属性所指定的缺省用户身份毗连到办事器。
4. Logs节
Logs节答应指定一个写入毛病的文件名由[Logs]标识。日记纪录使用于一切毗连。假如此日记文件不存在则会创立一个新的日记文件。
6. 利用自界说处置器
可使用RDS数据控件的Handler属性来指定处置器,并给指定处置器的名字。缺省的处置器是M S D F M A P. Handler,它是RDS办事器端局部利用的一个组件。也能够编写本人的自界说处置器(尺度的C O M组件),假如如许做,应当参考RDS的文档。
大家可以自己去看一看.可以说看得想呕吐.以前有次下了个动网来看.里面连基本内置函数的保护措施(函数没防御性)都没有.难怪经常补这个补那个了.可能现在.NET版会好点吧 |
|