一个三层的例子:
应用服务器的编写: 
(1)新建一个工程 
(2)点击“File”“New”“Other”,选择Multiter页标签的Remote   Data   Module 
(3)设置CoClassName(例:输入TestServer),点击OK就会进入Remote   Data   Module编辑框 
(4)在编辑框中可以添加任何与数据库相连的组件,既然你的机器上装了sql   server   ,你就可以   添加一个ADOConnection和ADOTable,进行数据库的连接设置。这里我要提醒一句,就是在用ADOConnection连接数据库的时候,最好把登陆数据库的密码保存下来,并且ADOTable1.active不要设置为True!!!然后再添加一个DataSetProvider1(在Data   Access页中),并将其DataSet设置为TADOTable1. 
(5)编译运行此程序,就算注册了 客户端的编写: 
(1)新建一个工程文件 
(2)在其中添加SocketConnection1(在DataSnap页中),将它的Host设置为你的应用服务器所在的机器名,在ServerName的下拉列表框中选择应用服务器的名称,port默认为211(注意:TSocketConnection靠的是TCP/IP协议进行通讯,所以要在应用服务器端需额外运行Scktsrvr.exe程序,该程序在..\\Borland\Delphi6\Bin目录里) 
(3)然后添加一个ClientDataSet1(在Data   Access中),将其RemoteServer设置为SocketConnection1,将PorviderName设置为DataSetProvider1, 
(4)再添加一个DataSouce1和一个DbGrid1,将DataSouce1.DataSet设置为ClientDataSet1,DBGrid1.DataSource设置为DataSource1 
(5)在FormCreate中编写代码如下: 
   procedure   TForm1.FormCreate(Sender:TObject); 
   begin 
           SocketConnection1.Connected:=True; 
           ClientDataSet1.Active:=True; 
   end; 
(6)编译运行,你的客户端就可以读取Sql   Server数据库中的数据了!
=================================
本人Delphi 新手,上面给出的是Delphi 架构三层的一个简单例子,为什么标粗体的那段,我无法实现?也就是我客户端的socket connect 中的server name 根本就是空白(这个服务端需要注册?)假如需要注册的话?难道 我在写中间件的时候,测试一下,重注册一下,这不烦死?

解决方案 »

  1.   

    补充下,我是在 D2010 + Win 2K3 下测试的,还有就是 上面给出的例子,有没有问题,我在网上搜索很多,大都是这个版本,有哪位高人点播下,把我带进Delphi 的 3 层世界里
      

  2.   

    我是远离这种三层不过,你的问题,可能需要服务端运行着,因为这样才能找到可用的server
      

  3.   

    因为有可能你服务器上的组件配置没打开,在网上搜索下DCOM配置,如果DCOM配置服务没打开的话,你应用服务器编写中的第5步就不行了,是注册不上的,就会出现你说的问题
    另外:在设计时一般客户端和服务器端都在同一台机器上,所以要特别注意发布程序时,客户端的SocketConnection1的Connected属性默认设置成FALSE,
      

  4.   

    没用过D2010,只用delphi7,你的文字太多懒得去看,你直接表述你要实现什么功能?
      

  5.   

    谢谢楼上的,是文章写的不全,误导了在D2010 的 Run 菜单下有个 Regisiter ActiveX Server 选项,注册就好用了。不过 楼上的说 现在DCom 模式的三层已经过时了?