一、 基础知识
Delphi Multi-tier程序多以MIDAS为基础,因此以MIDAS为基础建立的Delphi Multi-tier程序,客户端和服务器端都要MIDAS.DLL文件的支持。
1) 远程数据模块:
远程数据模块是一个类似于COM Automation Server或是Corba Server的数据模块,它存在于应用程序服务器中,负责提供应用程序服务器上的数据提供者组件(Provider)接口给客户端应用程序使用。Delphi目前提供的远程数据模块有TRemoteDataModule、TMTSDataModule及TCORBADataMadule等三种,分述如下:
l TRemoteDataModule是一个双重接口(Dual Interface)的Automation Server,它提供DCOM、HTTP、TCP/IP(即Windows sockets)及OLEnterprise等通讯协议的客户端成苏使用。
l TMTSDataModule是一个双重接口(Dual Interface)的Automation Server,不过它以Active Library(.DLL文件类型,即COM中的In-process对象)的方式撰写应用服务程序,并将其安装在MTS(Microsoft Transaction Server)中,所以除了具有MTS的优点外,也同样可以供DCOM、HTTP、TCP/IP及OLEnterprise等通讯协议的客户端程序所使用。
l TCORBADataMadule是一个Corba Server,它允许Corba客户端应用程序的连接及数据库的存取。
2) 数据提供者组件(Data Provider):
数据提供者是存在应用程序服务器上的一个组件,负责将TdataSet中取出应用程序所要要求的数据,并进行封装提供给客户端程序。一般来说,一个远程数据模块至少应该包含一个provider组件。其主要功能有如下两点:
l 数据提供:provider组件负责从数据库中提取应用程序所需的数据及用以描述这些数据的元数据,并将其打包后提供给客户端应用程序。
l 数据解析(Resolving):provider组件从客户端获取数据,如果这些数据已被其他的应用程序修改,provider将尝试用目前的数据取代客户端应用程序所作的变更。除此之外,数据提供还会保存无法传送的纪录。
3) 客户端连接组件:
客户端连接组件通常位于客户端应用程序中,负责与应用服务器取得连接,并为客户端数据集组件(Client Dataset Component)建立一个IappServer的存取接口。Delphi 5中共有五中Connection组件,其各自功能如下表所示:
组件名称 通讯协议
TDCOMConnection DCOM
TsocketConnection TCP/IP(Windows Sockets)
TwebConnection HTTP
TCORBAConnection Corba(IIOP)
TOLEnterpriseConnection Olenterprise(RPCs)
4) 客户端数据集组件(Client Dataset Component):
该组件用于从应用服务器取得数据。它通过MIDAS.DLL来管理与组织从应用服务器上所取得的数据包。TclientDataSet与TXMLBroker都属于此类组件。
二、 以TRemoteDataModule组件作为应用程序服务器方法
步骤一、建立新项目,以此组件为服务器,必须建立EXE应用程序项目。
步骤二、建立远程数据模块(file/new…菜单项),并合理设置该模块的属性及事件。
步骤三、在上述远程数据模块中加入Data Access组件或ado data access组件(database、table、query等),并合理设置该模块的属性及事件。
步骤四、在上述远程数据模块中加入TdataSetProvier组件,并设置其Dataset属性为步骤三中缩设置的数据集。
步骤五、如需要,重复步骤四,加入另外的data provider组件。
步骤六、进一步完成程序功能,最后保存、编译上述工程。
步骤七、运行一次所生成的应用程序,完成最后的系统注册工作,如需进一步配置,运行windows提供的DCOMCNFG.EXE程序进行配置。以后该组件将在存在客户请求时自动启动,并在所有请求关闭后自动关闭。
三、 以TMTSDataModule作为应用程序服务器
步骤一、建立新工程,必须建立AVTIVE LIBRARY(即dll工程)类型的工程。
步骤二、向工程中加入MTS DataModule(file/new…菜单中),并设置其参数。
步骤三、向上述数据模块中加入data access组件或ado data access组件。
步骤四、必要时,在view/type library命令调出的窗口中进一步设置该application data server的属性和方法。例如,可以增加一个date属性,此时程序将会自动增加一个名为Get_date的函数,用户只需在此函数框架中加入代码,对Get_date进行赋值(如Get_date:=’2000年’,注意可以使用now直接取得服务器的当前时间),然后客户端的程序就可直接使用该属性了。
步骤五、进一步完善程序,保存、编译程序后使用run/install MTS Objects命令将该dll文件注册到系统中。
步骤六、用户可以利用windows的“组件服务”管理工具对所安装的dll进行进一步的配置。注意:在组件服务窗口中,所有已经被激活的服务的图标都回在不停的转动,以与未激活的dll相区别。
说明:mts方式的主要优点:
1) 可以提供基于角色的安全隔离机制,利用isCallInRole(const role:wideString)函数判断一个用户是否从属于某一个角色。
2) 数据库连接自动调度(pooling),可以转移一个不再使用的连接给另外的用户,减少连接次数,从而提供运行速度。但是应注意一定要将database的keepConnection属性关掉。
3) MTS完整的事务支持。
4) 及时激活服务其功能。
四、 以TCORBADataMoudle建立应用服务器
该种类型的服务器与客户端之间的连接必须在Delphi提供的Visibroker Smart Agent程序运行的前提下才能进行。其结构如下图所示:
BOA: Basic Object Adaptor
步骤一、建立新的项目。
步骤二、“file/new…”菜单中选取Corba DataModule。
步骤三、在上述的Data Module中加入DataAccess或ADO access数据集组件。
步骤四、在上述的DataModule中加入Data provider组件。
步骤五、进一步完善程序,保存并编译程序。
步骤六、注册服务器程序。注意有两种方式可以使用:静态(早期)连接和动态(晚期)连接。Delphi中有Interface Repository和Object Activation Deamon两个公共程序用于注册Corba应用数据服务器。使用后者程序的方法如下:
1) 使用windows程序oadutil,方法如下:
2) oadutil reg –r IDL:(Repository ID)-O (接口对象名)-cpp (应用服务程序路径名) unshared
3) oadutil unreg –r IDL:(Repository ID)-O (接口对象名)
4) 两个可选的参数是:host: 用于指定执行OAD的计算机;p: 代表每以客户端程序都对应一个特定的应用程序服务对象。
5) 注意,可以使用Delphi的VisiBroker Smart Finder程序寻找某台计算机上的CORBA应用服务器程序。
五、 以TDCOMConnection作为客户端应用程序
该方式知识用于企业内部网
步骤一、建立新项目。
步骤二、加入TDCOMConnection组件,设置其computername和ServerName属性,然后置Connected属性为true。
步骤三、加入TclientDataSet组件、DataSource组件、及DataControl中的组件。其中TclientDataSet重点设置的属性为:RemoteServer和ProviderName。
步骤四、进一步完善程序,保存并编译程序。
六、 以TSocketConnection作为客户端应用程序
该种方式使用于局域网和广域网内的通信,但是不能绕过防火墙。
该种方式还需要首先运行服务器端的socket server程序scktsrvr.exe以用于监听连接。
步骤一、建立新项目。
步骤二、加入TSocketConnection组件,设置其address属性为服务器的ip地址,ServerName属性为应用服务器server名,然后置Connected属性为true。
步骤三、加入TclientDataSet组件、DataSource组件、及DataControl中的组件。其中TclientDataSet重点设置的属性为:RemoteServer和ProviderName。
步骤四、进一步完善程序,保存并编译程序。
七、 以TwebConnetion作为客户端应用程序
该种方式使用于局域网和广域网内的通信,且能绕过防火墙。
这种方式要求将httpsrvr.dll文件复制到指定的网页服务器目录中,且设置该目录属性为可执行权限。另外客户端计算机中必须安装wininet.dll文件
步骤一、建立新项目。
步骤二、加入TwebConnetion组件,设置其url属性为服务器的url地址,ServerName属性为应用服务器server名,然后置Connected属性为true。
步骤三、加入TclientDataSet组件、DataSource组件、及DataControl中的组件。其中TclientDataSet重点设置的属性为:RemoteServer和ProviderName。
步骤四、进一步完善程序,保存并编译程序。
八、 以TCORBAConnection作为客户端应用程序
步骤一、建立新项目。
步骤二、加入TCORBAConnection组件,设置其repositoryID属性为服务器的repositoryID,hostName为服务器的ip地址,ServerName属性为应用服务器server名,然后置Connected属性为true。
步骤三、加入TclientDataSet组件、DataSource组件、及DataControl中的组件。其中TclientDataSet重点设置的属性为:RemoteServer和ProviderName。
步骤四、进一步完善程序,保存并编译程序。
三层控件基础知识
时间: 2024-10-11 16:11:20
三层控件基础知识的相关文章
Win10系列:C#应用控件基础1
Button控件 在Windows应用商店应用的开发中,Button控件是使用比较频繁的控件之一,当用户单击Button控件时,会触发相应的单击事件并在定义好的事件处理方法中执行指定的功能.下面将介绍Button控件的使用方法. 在XAML文件中,Button控件的用法如下所示: <Button?.../> -或- <Button?...> <!--添加子元素--> </Button> -或- <Button?...> <!--添加字符串-
Win10系列:C#应用控件基础2
HyperlinkButton控件 HyperlinkButton控件是以超链接文本形式显示的按钮,可以为其NavigateUri属性设置一个URI地址,当单击超链接文本按钮时,将会使用浏览器打开在HyperlinkButton控件中定义的URI地址页面. 在XAML文件中,HyperlinkButton控件的用法如下所示: <HyperlinkButton?.../> -或- <HyperlinkButton?...> <!--添加子元素--> </Hyperl
Win10系列:C#应用控件基础3
Win10系列:C#应用控件基础3
Win10系列:C#应用控件基础5
ListBox控件 上一小节介绍的ComboBox控件在外观上仅显示当前选中的选项,通过单击此控件文本框才能看到其他选项,而ListBox控件能够以列表形式始终显示选项.在ListBox控件中可以添加多个ListBoxItem列表项来组成一个列表,允许用户在列表中选择一项或多项. 在XAML文件中,ListBox控件的用法如下所示: <ListBox?.../> -或- <ListBox?...> <ListBoxItem><!--添加内容--></L
Win10系列:C#应用控件基础8
ToggleSwitch控件 在应用程序中ToggleSwitch控件可以模拟一个允许用户在启用和禁用两种状态之间进行切换的物理开关,ToggleSwitch控件的功能与我们在日常生活中所使用的电源开关类似. 在XAML文件中,ToggleSwitch控件的用法如下所示: <ToggleSwitch .../> 下面介绍一下ToggleSwitch控件的常用属性: Header属性,获取或设置ToggleSwitch控件的标题内容. OffContent属性,当ToggleSwitch控件是禁
三层架构之基础知识
一.概念 1.UI(表现层) 通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得.用于接收用户输入的数据和显示处理后用户需要的数据. 2.BLL:(业务逻辑层) UI层和DAL层之间的桥梁.:针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理.业务逻辑具体包含:验证.计算.业务规则等等. 3.DAL:(数据访问层) 与数据库打交道.主要实现对数据的增.删.改.查.将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库. 二.原理 用户的需求反映给界面
Win10系列:C#应用控件基础14
ProgressBar控件 有时候用户需要执行比较复杂的任务,等待任务完成需要很长时间,在等待的过程中一般会使用进度条提示当前任务的执行进度,让用户更好的掌握任务的执行状态,例如在下载资源时会显示下载进度,发送文件时会显示发送进度等.使用ProgressBar控件能够在界面中为用户提供任务进度变化信息. ProgressBar控件分为确定进度条和不确定进度条两种进度显示样式.确定进度条通过从左到右用色块填充的方式表示一个较长操作的进度信息,而不确定进度条使用重复显示的动画证明任务仍在进行中. 在
Win10系列:C#应用控件基础17
Popup控件 在应用程序中使用Popup控件时,通常会先将其设置为隐藏状态,当用户触发应用中已定义的事件时,Popup控件将以弹出窗口的方式显示相关信息来提示用户操作. 在XAML文件中,Popup控件的用法如下所示: <Popup .../> -或- <Popup ...> <!--添加子元素--> </Popup> 下面介绍一下Popup控件的几个常用属性: Win10系列:C#应用控件基础17
Win10系列:C#应用控件基础21
Win10系列:C#应用控件基础21