FAQ我也看了,但得不到好的解释。

解决方案 »

  1.   

    1.1 设置服务器
    1. 远程数据模块( RDM )
    RDM是创建服务器应用程序的核心。要给一个新应用程序创建RDM,选择File | New菜单命令,在对象库的Multitier页中双击Remote Data Module图标。在打开的对话框中可以设置一些RDM的初始化选项。
    RDM的名字很重要,因为服务器应用程序的ProgID由项目名和RDM名组成。例如,如果项目名为AppServer,而RDM名为MyRDM,那么ProgID就是AppServer.MyRDM。根据前面的介绍,确保选择适当的实例选项和线程选项以及其他需要的设置。
    2. 提供者
    由于服务器应用程序负责给客户提供数据,所以必须要找到一种方式,使客户能够使用服务器提供的格式化数据。而MIDAS提供的TDataset Provider组件能够轻松地完成这一步。
    首先在RDM上放置一个TQuery组件。如果正在使用RDBMS,那么不可避免地还需要一个TDatabase组件。我们把TQuery捆绑到TDatabase上,并且在S Q L属性中设置一个简单的查询,例如select * from customer。然后放置一个TDataset Provider组件到RDM上并通过Dataset属性捆绑到TQuery上。Dataset Provider中的Exported属性决定了提供者对客户是否可见。利用这个属性可以在运行时方便地控制提供者的可见性。3. 注册服务器
    服务器应用程序建立之后,需要被注册为COM,使连接的客户应用程序能够访问它。只要运行服务器应用程序,注册设置就会被加进去。但是,在注册服务器之前,一定先要保存项目。这可以确保前面提到的ProgID能够正确生成。
    如果不愿启动服务器进行注册,那么可以在运行应用程序时在命令行传递参数/ regserver。这样将执行注册过程并立即终止应用程序运行。要删除应用程序的相关注册项,可以使用/ unregserver参数。1.2 设置客户端
    客户端通过TDispatchConnection组件与服务器打交道,需要告诉TDispatchConnection组件服务器计算机的名字。可以使用TDCOMConnection、TSocketConnection等来进行连接,把TDispatchConnection的Connected属性设为True,就可以连接到应用服务器。
    有了与服务器连接的客户,现在需要一种途径来使用在服务器上创建的提供者。这可以通过TClientDataset组件完成。TClientDataset组件用于连接服务器上的提供者(这样TQuery就被连接到了提供者上)。首先,必须为TClientDataset组件的Remote Server属性赋值,把TClientDataset绑定到TDispatch-Connection上。然后,可以查看ProviderName属性以得到一个服务器上的提供者的列表。到了这一步,已可以打开ClientDataset。
    由于TClientDataset是从TDataset派生来的,因此可以利用TDBDataset组件的许多技术。例如,把Active属性设为True可以打开TClientDataset并显示数据。这和把TTable的Active属性设为True不同,TClientDataset实际上是从服务器获取数据。
      

  2.   

    关于网络编程模式,可参阅一下书籍推荐
    《Delphi 分布式多层应用程序开发》   陈锐 编著     清华大学出版社
    《DELPHI网络技术应用开发技术与实例》
     参考清华的<<com与corba...>>,
    实例可参考:
    客户端的分发和设定1。如果是使用独立的EXE文件,那么必须拷贝所有的EXE档案以及这些档案使用的OCX,DLL到客户端。你可以使用DELPHI内建的INSTALLSHIELD制作安装磁盘。如果是使用ACTIVEFORM,那么就无需安装客户端的应用程序,因为ACTIVEFORM可以自动的下载到客户端。2。在客户端机器中必须安装DCOM。3。拷贝MIDAS。DLL档案到客户端的Windows或是Winnt子目录中。你只需要拷贝这个档案到Windows的系统子目录下即可,当客户端应用程序执行时,它会自动注册这个档案到注册表中服务端的分发和设定在多层应用系统中,分发服务比较复杂。1。决定使用存取控制的权限。如果你有WINDOWS NT做为应用程序服务器的平台,那么建议使用‘用户级存取控制’2。执行应用程序服务器一次以注册应用程序服务器。3。拷贝MIDAS。DLL到系统子目录中。而且必须注册。你可以使用TREGSRV32来注册MIDAS。DLL4。拷贝IDPROV32.DLL到BDE数据库引擎的子目录中。5。使用DCOMCNFG设置应用程序服务器的存取权限。在通常情况下,可以将验证等级设定为‘无’,并且把存取控制和激活控制设置为EVERYONE就可以让所有的客户端用户激活和存取应用程序服务器。6。如果目前使用的DCOM是对于95的话,强烈建议你升级到98,否则程序员必须自行激活RPCSS。EXE至此,分发过程已经结束,如果还有问题,请使用DELPHI5的MODULE VIEWER来观察。当程序员使用DELPHI开发分布式多层应用系统后,除了将应用程序序列分发之外,还必须使用DCOM的配置应用程序DCOMCNFG.EXE来进行设置。在WIN9.X系列中进行DCOM之前,应确认是否装有DCOM,如果没有,可从WWW.Microsoft.com下载。WIN9.X配置为DCOM服务器第一步就是将访问控制设置为用户级控制。在‘获取用户及组的列表中’输入该局域网中能提供安全权限的机器名(该计算机必须正在运行)。第二步就是运行位于系统目录下的.exe文件。在应用程序列表中应该能够找到你所编制的应用程序,如果没有列出,请将你所编的程序运行一次。通常,我们可以通过修改默认属性及默认安全性来达到一定的目的,在‘默认属性’页中,让‘启动该计算机的分布式COM’选项选中,而‘默认的身份验证级别’中‘连接’的意思代表‘只在客户端第一次连结应用程序服务器时检查客户端的权限’。‘默认的模拟级别’中‘识别’的意义为‘在这种模式下,服务端可以取得连结的客户端的权限信息,但是服务端无法以连结的客户端的权限存取系统对象’。当其设为‘模拟’时,表明‘服务端可以取得连结的客户端的权限信息,并且能够以连结的客户端的权限存取系统对象’。在默认属性页中,还有一个‘为跟踪引用提供附加的安全性’的选项。这个设置可以让应用程序服务器使用COM/DCOM的回叫机制以保持COM/DCOM中远程调用参考计数值(reference count)的正确性,以避免客户端应用程序恶意的调用应用服务器并且断线。选中这个选项可以让应用程序服务器有效的管理其生命周期,但是也会减缓应用程序服务执行的速度。上述的内容其实在DCOMCNFG的帮助之中都有,我这番解说有些画蛇添足,但我对它配置的建议就是,尽量使用默认值。在NT中的一些配置也极其相似。但要理解以下的概念激活控制:就是指哪些用户可以激活应用程序服务器。当客户端应用程序执行并且试着在远程机器之中激活应用程序服务器时,COM/DCOM的安全机制会检查这个客户端应用程序登录的用户是否有权限中以激活应用程序。存取控制:指当应用程序服务器由适当的用户激活后,哪些用户可以存取应用程序服务器所提供的服务。此外,一个应用程序服务器可以提供数种不同的服务,取存控制能够限定特定的用户进行特定的操作认证控制:是指在数据进行传递时,数据是否加密鉴定控制:是指应用程序服务器的权限。即指在服务器上登陆的用户,他所执行的应用程序服务器所存取的资源是否在他的权限范围之内。
      

  3.   

    MIDAS的全称是Multi- tier Distributed Application Services Suite(多层分布式应用程序服务包)。Delphi所有强大又奇妙的分布式多层能力都来自MIDAS的功能。 MIDAS是Delphi多层应用系统的技术核心,是Delphi用来开发多层应用系统所使用的中介透明引擎。通过MIDAS,程序员可以使用相同的组件存取不同的后端应用程序服务器。这些后端应用程序服务器可以是COM/DCOM应用程序服务器,MTS中介软件,或是CORBA应用程序服务器。此外MIDAS也提供了容错能力,负载平衡能力以及高执行效率的能力。 在MIDAS的多层应用系统中,应用程序服务器会输出一个Provider接口到客户端应用程序。在这个接口中提供了许多的方法可以让客户端应用程序调用,以便和远程的应用程序服务器通讯,并且处理数据。在多层应用系统中,客户端应用程序和远程应用服务器传递的数据形式是一种称为“数据封包(DataPacket)”的数值。这些数据包括应用程序服务器传递给客户端的数据,客户端更新的数据,以及在更新数据时发生的错误和造成错误的数据都是以数据封包传递。由于MIDAS有效率的使用网络传递数据,并且会压缩传递的数据,所以在执行速度上比起两层的客户机/服务器结构在效率上提高了很多。MIDAS可以使用的通讯协议有三种,分别是 TCP/IP、DCOM和OLEEnterprise。这三种不同的通讯协议各有优缺点,使用的通讯协议结构也不一样。图2示出了MIDAS使用的三种通讯协议结构图。不同的通讯协议使用的通讯层都不一样,但都必须使用TCP/IP Socket和Microsoft RPC。 使用DCOM和OLE Enterprise比起TCP/IP通讯协议都多了一个通讯层,当DCOM和OLE Enterprise都提供了比TCP/IP更多的功能。
    基于MIDAS的多层应用程序需要用到一些特殊的组件,大致分为四类: 1)对象库中的远程数据模块:远程数据模块与Delphi中普通的数据模块有些相似,不同的是,远程数据模块可以做为COM服务器或CORBA服务器,让客户程序访问它的接口。 2)TdataSetProvider组件和Tprovider组件:这两个组件用在应用程序服务器端,主要作用是提供Iprovider接口,客户程序通过Iporvider接口获得数据和更新数据集。 3)TclientDataSet组件:是一个从TdataSet继承下来的但不需要BDE的组件。 4)MIDAS连接组件:包括TDCOMConnection、、TOLEEnterprise-Connection、TsocketConnection这些连接组件的作用是为客户程序定位服务器和Iprovider接口。 在一个通常的MIDAS程序中,一般应在客户应用程序方的数据模块(DataModule)或窗体(Form)中放置TclientDataSet组件和TDCOMConnection组件;而在应用服务器方放置TdataSetProvider组件、Ttable组件或TQuery组件。这样就构成了最简单的MIDAS程序模式。通过配置和调试,可以实现应用程序方和服务器方的连接。 
      

  4.   

    简单地说,MIDAS 是这种架构: 数据库服务器<--->应用服务器<--->客户端数据库可以是任何数据库
    应用服务器可以用 RemoteDataModule + DataSetProvider +数据库连接组件+数据集组件
    客户端:SocketConnection(或其它连接方式) + ClientDataSet
                                 
      

  5.   

    我想在客户端执行一组查询命令,想调用中间层的函数来实现查询的方法,如何在中间层定义啊。
    我在远程数据模块中定义了一个,老是说我METHOD NOT SUPPLY AUTOMATION什么的。如何是好啊
      

  6.   

    http://expert.csdn.net/Expert/topic/2296/2296159.xml?temp=.6683924
      

  7.   

    hch_d(城城) 说的很详细了,也很条理,虽然是书上的东西我刚看的时候也不太懂,但现在差不多了!多读 多看 多想 多做