开发三层系统的步骤与方法是什么?(100分)

  • 主题发起人 主题发起人 jj6868
  • 开始时间 开始时间
J

jj6868

Unregistered / Unconfirmed
GUEST, unregistred user!
李维的书中没有系统的解释,尤其是结合示例。
 
1、设计好系统(包括模块、数据库等,跟C/S一样)
2、开发中间层(应用服务器)
3、开发客户端程序 
(供参考)
 
Delphi多层分布计算应用服务技术-MIDAS
·林大滨
当今信息技术部门所面临的困境是如何能够创建通向未来的、无中断的、跨越LAN、WAN 和Internet平台的分布式应用结构,以满足复杂的、不断发展变化的业务需求,同时又能确保企业在系统、应用、信息及人员上的投资。能够适应这种困境的结构是多层分布式计算体系结构。多层体系结构能够在低费用的条件下比现行的PC LAN 、二层客户/服务器或主机/终端应用结构能够提供更好、更及时的信息。多层分布计算应用服务技术是目前数据库应用发展的潮流,传统的客户/服务器(二层)的应用正朝着三层或N-Tier 结构发展。
一.多层分布计算应用服务结构
Borland MIDAS(Multi-tier Distributed Applications Services)多层分布应用服务为开发者开发多层应用提供了一套高级组件、服务器及核心技术。在Delphi 3中针对多层结构有三种代理(Broker)和新一代的数据库引擎来适应它:
* Remote Data Broker
* Business Object Broker
* Constraint Broker
Remote Data Broker结构的精髓是让每个客户端不再需要BDE,取而代之的是集中化的BDE,以集中管理的方式降低每个客户在BDE上所需调整的开销和复杂性。Business Object Broker 的目的是给一些关键性的商业应用程序提供一个快速而且可信赖的使用环境。为了达到这种高层次的要求,Business Object Broker自动地将应用程序加以区分,并把重要的业务规则复制到第一个区间,以满足对速度的要求。Constraint Broker的作用是保证所有客户数据的一致性和完整性。典型的多层结构是三层结构:1.数据库服务器;2.应用服务器;3.瘦客户端。
数据库服务器可以是InterBase、Oracle、Sybase、Ms SQLServer等。应用服务器和瘦客户端可以用Delphi创建。数据访问软件(如BDE、SQL*Net等)应该和应用服务器运行于同一台计算机上。分布式计算支持MIDAS OLEnterprise或微软的DCOM技术。在Delphi 3中有四个关键的工具用于创建分布数据集,前面两个位于服务器端。
1.Remote Data Modules的作用与标准的Data Modules一样,但它不是在你本机的应用中提供数据,而是在网络中广播数据。特别是,它能把简单的Data Module转换为一个COM对象,因此,它能允许远程客户借助于DCOM(分布式组件对象模型)访问Data Module。
2.TProvider包含在Remote Data Module中,正象TTable对象包含在一个标准的Data Module中一样。所不同的是,Provider对象通过网络广播一个表。Provider对象是作为TTable或TQuery对象的属性包含于其中的。
在客户端有两个组件用于访问服务器端提供的数据。
1.TRemoteServer组件提供客户端访问服务器端的Remote Data Modules的能力。更具体地说,它与Remote Data Module支持的COM 接口连接。虽然它的名称意思为“远程服务器”,但实际上它不是在服务器端的组件,而是在客户端的组件。它的功能是在网络上查找已注册的可用服务器,一但查找到,TRemoteServer就与它连接。
2.TClientDataSet组件是挂在TRemoteServer组件上的,并与服务器上的特定Provider联系,当客户端应用程序要与远程数据集相连接时,它为其提供数据源。实际上,TClientDataSet与传统应用中TQuery和TTable的作用相类似。以上四个组件的作用及相互关系可用图1表示。
<a href="/pcc/98_11/images/11001.gif">点击插图</a>
图1.远程数据集结构
二.创建多层结构的环境、步骤和方法
下面具体说明创建三层结构的环境、步骤与方法。
* 环境
1. 第一层数据库服务器
数据库服务器可以是各种流行的数据库系统,如Sybase、Ms SQLServer、Imformix、Interbase、Oracle或桌面数据库Dbase等等,只要在Windows 95或者Windows NT客户端环境下,通过BDE或ODBC能与之相连接即可。数据库系统所在的平台可以是Unix或Windows NT网络平台。
2. 第二层应用程序服务器
应用程序服务器所需的环境必须是Windows NT Server 4.0、Windows NT Workstation 4.0或Windows 95(Windows 95下必须安装Borland OLEnterprise),同时应用程序服务器所在的平台上必须安装Borland的BDE。
3.客户端应用程序
客户端应用程序所需的环境是Windows 95、Windows NT Workstation 4.0或Windows 98(Windows95 下必须安装DCOMCfg for Windows 95)。
* 应用程序服务器的创建(服务器端远程数据集)
首先创建一个Delphi数据库应用项目,然后,你可以按如下步骤进行操作。
1.用File | New 创建一个Remote data module,系统会弹出对一个话框,让你输入类名。建议你给Remote data module的命名与数据集描述相对应(如CustOrderRemoteData等)。
2.在Remote data module内放置一个或多个TProvider组件。
3.在Remote data module内放置一个或多个TTable或TTuery组件。把TProvider与TTable或TQuery对象相关联(在Tprovider对象的DataSet属性中填入对应的TTable或TQuery)。
4.鼠标点中TProvider对象,按鼠标右键为远程机器访问创建接口方法(COM对象)。这时,在弹出的菜单上选择“Export XXX from data module”,这里XXX是你的TProvider名。如果在你的菜单中没有上述选项,那么说明该选项已被选过。
5.保存好你的程序,然后,编译运行该程序,同时进行系统注册。
倒此为止,你已创建好了远程数据服务器,现在你可以把它放置在一个NT Server上,并配置好BDE。如果你使用OLEnterprise,你可以从网络的任何处访问它;如果你使用DCOM,那么你可以在NT域的任何处访问它。如果你把程序移到另一台机器中,则你必须在此机器上运行一遍程序以进行系统注册。从客户端访问这个服务器,只需安装单一的客户端可执行程序和大小为151Kb的文件DBClient.dll,无需安装数据库工具集。在服务器端,应包含文件STDVCL32.DLL,如果已经安装了Delphi,则该文件被自动安装。
* 创建远程客户端应用程序
应用程序服务器端设置好后,现在可以设置客户端的应用程序。我们假设客户机与应用程序服务器 在同一台机器上,程序调试好后再把应用程序服务器移到远程机器上。
首先创建一个新的应用程序项目,放置一个TRemoteServer组件,填写好如下所示的属性。如图2所示。
<a href="/pcc/98_11/images/11002.gif">点击插图</a>
图2.TremoteServer组件
ServerName—你可编辑下拉组合框查来找你所要的Server名,如果该项的域为空,或者不含有你所需要的Server名,那么,在客户端运行一遍应用程序服务器程序,这样就可以注册服务器了;ComputerName—填写远程计算机名称。
然后,把一个或多个TClientDataSet组件放置到窗体上,将其属性RemoteServer设置为前面设定的Server。从ProviderName属性下拉组合框列表中选择一个DataSet Provider。PacketRecords的属性值为-1时,表示一次从应用程序服务器取得所有的数据;为正值时,表示从应用程序服务器中取得PacketRecords属性数值个记录数的数据;而当其值为0时,则表示取得数据的 MetaData。如图3所示。
<a href="/pcc/98_11/images/11003.gif">点击插图</a>
图3.TClientDataSet组件
由此可知,使用TclientDataSet可以让应用程序控制数据存取的流量,以及从应用程序服务器存取数据的种类。正象你使用Ttable或Tquery组件一样,你也可以在TclientDataSet组件上使用数据库控件集。现在可以运行你的客户应用程序了。
1)使用OLEnterprise
OlEnterprise与DCOM相比较具有下列几点优势:
(1)即使在没有NT Server的情况下,它也能允许你在Windows 95的机器之间相互链接。而在DCOM下,没有服务器这种链接是不可能的,即使有服务器,在Windows 95的机器之间链接也是不可能的。总而言之,Windows 95在DCOM下不能作为应用服务器。
(2)OlEnterprise中有一个对象代理器(Broker)允许你把客户的链接负载分布到多台机器上。
2)使用DCOM
如果你的运行环境是Windows NT 40、Windows 98,则系统已经内置安装好DCOM。如果在Windows 95下,你同时安装了IE 4.0,那么DCOM 也安装好了。此外,你可以从Microsoft的Web站点下载DCOM for Windows 95。
在使用DCOM前首先必须设置域(domain),所有的你需要用于分布式应用的Windows NT工作站或Windows 95都必须成为该域的成员。对于Windows 95机器,你还需配置好网络属性,以确保你具有用户访问控制的级别。
3)用ActiveXForm实现运行于浏览器内的瘦客户机
Delphi的一项新技术ActiveForms可以使开发人员结合上面所述的三层应用技术开发出基于浏览器内的瘦客户机。将Delphi的Form转成ActiveXForm,ActiveXForm是ActiveX控件,它使用Delphi的Form为载体来装载其他的Delphi的组件,这样,我们可以通过TremoteServer、TClientDataSet等控件编写多层数据库应用程序。客户机通过浏览器下载一个ActiveXForm,ActiveXForm通过TremoteServer与远程应用服务器建立链接,再由远程服务器访问数据库。
上面简要概述了Delphi3的分布式应用服务技术MIDAS,在最新的Delphi 4.0版中,增强了MIDAS的功能,增加了COBAR等控件组件。使得客户机与远程应用服务器的链接的方法更加灵活方便。链接方法增强为:DCOM、TCP/IP Sockets、COBAR或OLEnterprise。
(作者地址:厦门市湖滨北路振业大厦3楼厦门市经济信息中心 361012 收稿日期:1998.09.01)
 
I use Delphi 5.0
 
1.选好数据库,买好服务器,建议用Linux+Oracle
2.看书
3.选好中间层,Corba,Sorket。。。。。
4.设计库结构
5.开始编程
6.调试
7.死机,碍骂,每天不停的接用户电话
8.受不了了
 
to: gxwrj
你的文章很好,可是现在常常使用DCOM/COM+架构,而使用BDE的在开始减少。
不知你对使用COM+/MTS的三层系统有什么好的看法。该如何架构。
 
Tense:
在数据库开发中,确实用BDE引擎访问数据的比较少。
关于COM+/MTS我接触也较少,不过我现在也在学,跟DCOM的开发步骤也基本相同。
我现在看李维(三本中的)<<Delphi 5.X ADO_MTS_COM+高级程序设计篇 >>这本书,
不过只下载得前四章。
 
1。我主要是不知该将那些内容放到服务器,那些放到客户端。采用多层的优点之一就是
可以在企业规则发生变化的时候仅修改服务器就行,但我不知道如何?
2。客户端应该瘦到什么程度
3。从其他帖子中的观点来看,我的头脑中总认为现在许多人的多层实际是两层的分家而已
我认为是不对的,但不知什么样的对
4。我还不知道如何在运行时修改程序中的属性值,例如:计算机名、服务器名等类似内容
欢迎大家热烈发言,可加分!
 
你好,我现在在顺德正参加市政府智能化工程项目。开发的mis就是b/s结构。
有一份“顺德项目OCX编程约定”,当然只是个大概,可能对你有一点帮助。
要的话,请留e-mail。
 
1。我主要是不知该将那些内容放到服务器,那些放到客户端。采用多层的优点之一就是
可以在企业规则发生变化的时候仅修改服务器就行,但我不知道如何?
------服务端主要控制数据的输出及更新,具体来说,可能要用到TSESSION,TDATABASE,
,TQUERY,TDATASETPROVIDER等控件。
------客户端主要是用户界面,需要TCLIENTDATASET,TDATASOURCE,TDBGRID等控件。
------如果要考虑到负载平衡及容错处理,MIDAS可用TSIMPLEOBJECTBROKE。
看看李维的书,写得很明白。
 
To LiuYang:
My E-Mail: jj6868@263.net
thanks!
 
TO: liuyang
hedsh@163.com
thanx.
 
TO: liuyang
gwbasic@china.com
thanx.
 
TO: liuyang
lzmmail@china.com
thanx.
 
对不起,最近有点忙。一会就发给你们。
 
>>你好,我现在在顺德正参加市政府智能化工程项目。开发的mis就是b/s结构。
如果工程大一点的话,可能要三层才能解决问题。
>>有一份“顺德项目OCX编程约定”,当然只是个大概,可能对你有一点帮助。
也给我一份吧:tqtiqb@163.net
 
我在调试时系统出现什么”拒绝访问“之类的话,不能够调试成功!
我用的是3层结构的。
我的多层数据结构(客户端程序在连接至应用服务程序时“拒绝访问”,但在本机上可以)
数据服务中心IP为:xxx.xxx.xxx.120
客户机IP:xxx.xxx.xxx.95
应用服务器IP:xxx.xxx.xxx.82
我在82机上调试可以正常运行。可以打开数据记录。
应用程序自动运行,提供服务。
但当我把前端程序copy至IP为xxx.xxx.xxx.95机时,运行就是连接不上,出现了“拒绝访问”然后退出,
为何?
我把midas.dll拷贝到新客户端(xxx.xxx.xxx.95)机上(OS:winnt server)
运行:regsvr32 midas.dll这样可以吗?????
在NT下没有register.exe文件.
还有如何开放权限呀!
是在dcomcnfg中设置吗?如果设置呀!请多多指教!!!!!
我设置了相关内容,但还是不行,
您看我这样做对否??
运行DCOMCnfg在其中
找到SQLDataModule Object打开它的属性,选取安全性,(我的操作系统是WIN2000 FAMILY SERVER(xxx.xxx.xxx.82))我编辑它的用户访问权限
????
在此我添加了user // network // everyone
同理我在启动权限中加入了相同的内容。
可是,我失败了。。。。。。。。
请问这样做对吗?
 
多层数据结构(客户端程序在连接至应用服务程序时“拒绝访问”,但在本机上可以)
数据服务中心IP为:xxx.xxx.xxx.120
客户机IP:xxx.xxx.xxx.95
应用服务器IP:xxx.xxx.xxx.82
我在82机上调试可以正常运行。可以打开数据记录。
应用程序自动运行,提供服务。
但当我把前端程序copy至IP为xxx.xxx.xxx.95机时,运行就是连接不上,出现了“拒绝访问”然后退出,
为何?
我把midas.dll拷贝到新客户端(xxx.xxx.xxx.95)机上(OS:winnt server)
运行:regsvr32 midas.dll这样可以吗?????
在NT下没有register.exe文件.
还有如何开放权限呀!
是在dcomcnfg中设置吗?如果设置呀!请多多指教!!!!!
我设置了相关内容,但还是不行,
您看我这样做对否??
运行DCOMCnfg在其中
找到SQLDataModule Object打开它的属性,选取安全性,(我的操作系统是WIN2000 FAMILY SERVER(xxx.xxx.xxx.82))我编辑它的用户访问权限
????
在此我添加了user // network // everyone
同理我在启动权限中加入了相同的内容。
可是,我失败了。。。。。。。。
请问这样做对吗?
 
我在用BCB5做多层结构系统时,我在Server端加入了一个取得服务器IP地址的方法:GetServerIP它的参数是vIP:Variant *,IN方式,并在服务端实现了这个方法,
加入的代码如下:
*vIP="192.168.0.01";最后我注册成功。
可是在我开发客户端程序时,我用TSocketConnection
当取得它的服务时我是这样做的:
Variant* vip;
SocketConnection1->AppServer.GetServerIP(vip);
Edit1->Tex=vip;
可 是我在运行程序时出错,没有编译通过。
它说getserverIP不是variant的成员
getserverIP is not a memober of variant
请问?
我该如何去调用这个方法呢?
请各位大侠多多指教?
小生的QQ:65466700(24小时在线恭候)
MAIL: alongsun@sina.com
 
后退
顶部