delphi 三层开发接口基本版http://www.abis.com.cn/upload/ABIS_BASE_DELPHI_1.rar
(一)架构说明
即于DELPHI 7所做的,三层架构,可用于与联网
N个客户机--------》应用服务器(一个或多个)------》数据库服务器(一个或多个,确定与数据库本身是否支持)(二)特点:
一、后台可支持ADO中的任意数据库
二、象开发两层一样来开发三层
三、可用于广域网,也可应用互联网(三)实施:
一、开放应用服务器211端口
二、将server整个目录复制到应用服务器上
1.将midas.dll拷贝到C:\WINDOWS\system32下(非必需要,但保验起见还是拷吧)
2.运行scktsrvr.exe(以为DELPHI自带,服务器重启后必需要操作此步,如果你觉得麻烦,你可以运行serverReg.bat,将此进程注册为系统服务,以后可随系统启动而自动启动)
3.运行AbisServer.exe(只需运行一次,以后客户端运行时会自动运行此进程),菜单-》文件-》联接数据库,此布是让你连上数据库服务器
注意:此目录以后不要删除
三、客户端。将AbisClient.ini和AbisClient.exe拷贝给客户机即可


(四)开发:控件 ClientDataSet<-------DataSource<-----DBGrid
别名 ds1 ds2 dbgrd1ds1
RemoteServer:DataModuleConn.conServer

ds2
DataSet:ds1

dbgrd1
DataSource:ds2


查询语句:ds1.Data := DataModuleConn.conServer.AppServer.QuerySQL(' select * from 表名 ');
变更语句:DataModuleConn.conServer.AppServer.ExecSQL(' update 表名 set .... ... ');
查看AbisClient.dpr即可,非常简单,象两层一样开发(五)缺点
仅支持QuerySQL和ExecSQL,暂不支持存储过程
(六)补充
一、AbisServer.ini为应用服务器联接数据库配置文件,自动生成,不建议手工修改。
二、AbisClient.ini为客户端必需配置文件,其中Address=127.0.0.1一行为应用服务器IP,你仅可以修改此行来指向你的应用服务器
已经在计量业务系统中成功运用(一应用服务器+40左右客户端)稍候将推出,sql 2000下的带权限的管理的客户端开发平台(用户---》角色----》菜单---》窗口,注,仅到窗口,不能到按钮),支持存储过程的服务器进程正在研究中。敬请关注。
网址:http://www.abis.com.cn
讨论地址:http://www.abis.com.cn/bbs/index.php?gid=11
邮件:[email protected]
我的QQ:9411526欢迎大家与我交流!

解决方案 »

  1.   

    关于DELPHI的权限系统,请大家提点建议和思路
      

  2.   

    使用了midas.dll、scktsrvr.exe,好像就是borland的三层
    还使用AbisServer.exe干什么?另外,scktsrvr.exe的口碑很差,基于它,会不会。
      

  3.   

    DELPHI应用的权限系统,我是喜欢在数据库的表里实现:
    用户-角色(群组)-操作
      

  4.   

    AbisServer.exe
    是与数据库交互用的一个进程
      

  5.   

    谢谢分享
    最近也在学习这个东西,关注中.搭车问下,说"不是太流行了吧(wxsan)"的兄弟能否说说,现在都流行什么开发模式,或者说框架?还有请教下,说"这个比较落后了(xthmpro_cn)"的前辈能否说下,那个比较先进好给我等后辈指个学习方向,谢谢!
      

  6.   

    我于若干年前做过4年Delphi。最近听说Delphi被卖给私人公司了,连同其他几个相关产品售价仅400万美元,不及MySQL出售价格的百分之一。
    作为Borland开发社区曾经的一员,我深感惋惜。Delphi作为一个面向对象的语言,其设计是优秀的,即使从今天的观点看也是如此。VCL的核心架构,起码就当年的标准来衡量,也是出色的。
    但是,Borland犯了一系列不可挽回的错误,其中之一就是,Delphi没有为其绝大部分开发者向着深入的方向成长铺平道路,甚至严重误导了开发者,结果是做Delphi越是资深,离正确的软件开发原则和实践就越远。例如大家在讨论的这个三层架构,就是Borland的一个不可原谅的败笔,且不说socksrv.exe的稳定性和伸缩性的如何,Borland让开发者通过DataSet作为各层间的耦合机制就是和架构分层的基本原则背道而驰的,这样的三层,如果在最前端一层不写SQL语句几乎是不可能的,更别谈业务逻辑层的封装了。
      

  7.   

    我一直期待着的是在Delphi语言和核心VCL基础上、在今天流行的正确的架构和设计原则指导下重新设计的一个WIN32开发工具。
      

  8.   


    "离正确的软件开发原则和实践就越远"
    我现在在学习Delphi的三层架构,听你这么一说,想请教下,什么是正确的"软件开发原则和实践",或者说怎么才能"离正确的软件开发原则和实践就越近"
    光说什么什么不好没什么说服力,你得有论据才能让别人信服.
      

  9.   

    插一句,好象是用DELPHI实现mvc开发模式实现起来比较困难,这一点远不如NET方便,楼上的几位是不是这个意思?我作的这个小接口功能比较弱,不过做一些小的应用还是比较方便的.
      

  10.   

    midas确实比较落后了
    另外 midas里还有BUG的
      

  11.   

    請問為什么說midas 落伍了呀?
    它有什么bug?
    因我們公司用這個
      

  12.   

    晕啊, 动不动就说这不好那不好。 先问问程序开发前设计了多少?  利用了COM+的一些功能了吗?  取数据分批了吗? 客户端ClientDataSet是否设定  RDM上的TDataSetProvider 了吗? 不设定行不?客户端不用SQL真的不行吗?
      

  13.   

    我是很想看到delphi能有一个(多个更好)像ejb/struc这样得到一致叫好的架构、框架
      

  14.   

    求DELPHI下的开发模式和实现办法,不知谁有?
      

  15.   

    我现在正用这种模式。
    首先我在服务器端全部用接口,客户端直接调用接口,它们之间的数据传递cleintdataset.data
    进行单表的数据修改用clientdataset.delta进行传递。
    所有查询都用临界区进行控制,相关业务也封装在服务端;客户端是在提交和获取数据时与服务端相连。
    scktsrvr.exe这个有源码,我有下载了一个修正版的主要是真对双CPU的。
    做了一个测试:用两台机子分别用100个线程同时访问一个读写数据库函数,没有出现问题,但是分别用1000个线程访问,由于等待返回结果时间太长,客户端出现连接超时报错。
      

  16.   

    我觉得楼主这个比delphi的demo,即n个TClientDataSet+服务器的n个TDataSetProvider和n个TADOQuery有进步,不会在服务器看到一个超级大的DataModule,而是用一个QuerySQL来代替了。
    当然AbisServer.exe服务器应该还有一些ServiceObject和Service Method。
    至于客户端到底要不要出现SQL,难说。
    1、如果不出现SQL,那么就全部改成服务器的Service Method;或者一个接受一个SQLID的Service Method,以此SQLID去数据库查找Stored Procedure。这样好处是尽量减少客户端的改动和再分发,副作用是增加了好多的Service Method或Stored Procedure(以一个ERP来说,至少上千),客户端与服务器的对照关系增多,管理上比较容易乱,特别是那些没有开发文档,也不做系统分析的开发方式;
    2、如果出现SQL,客户端改动比较自由,但一旦修改,全部Client都要再次分发。法无定法,看开发环境和部署环境自己选择吧。
      

  17.   

    scktsrvr.exe 这个中间层 只能支持少量的连接,而且网络延时大的情况下会造成假死机想象,建议还是用COM+ IIS HTTP 连接的方式,可以应付大的连接数。
      

  18.   

    我们公司因为历史原因用的是多语言合作开发的。
    数据库部分 用IdTcpServer + Ado 以XML流传输 , 中间配合文本压缩与字符加密
               客户端实现一个COM代理,,所有的模块都要由这个COM代理来封包解包与服务器交互,然后再交由模块继续处理自动升级用IDFTPServer/Client 完成,,注册成NTSERVER 即可实现开机自动运行
      

  19.   

    Borland是有误导人的嫌疑,但是那并不是唯一的实现方法,关键看你怎么设计的
      

  20.   

    用这个架构我做了一个小应用,欢迎大家指正
    http://topic.csdn.net/u/20090930/10/c656b3f0-7179-4d81-929b-c7450cadefeb.html目前我已经成功实现权限管理
      

  21.   

    用这个架构我做了一个小应用,欢迎大家指正
    http://topic.csdn.net/u/20090930/10/c656b3f0-7179-4d81-929b-c7450cadefeb.html目前我已经成功实现权限管理
      

  22.   

    多年没有用delphi的菜鸟路过!看到delphi还是这些技术,看来,生命力还是蛮强的嘛!
      

  23.   

    ”scktsrvr.exe这个有源码,我有下载了一个修正版的主要是真对双CPU的。“这个哪里有?谁修改的?效果好不好啊?
      

  24.   


    再次关注,
    引用 12 楼 bonhomme 的回复:
    我于若干年前做过4年Delphi。最近听说Delphi被卖给私人公司了,连同其他几个相关产品售价仅400万美元,不及MySQL出售价格的百分之一。 
    作为Borland开发社区曾经的一员,我深感惋惜。Delphi作为一个面向对象的语言,其设计是优秀的,即使从今天的观点看也是如此。VCL的核心架构,起码就当年的标准来衡量,也是出色的。 
    但是,Borland犯了一系列不可挽回的错误,其中之一就是,Delphi没有为其绝大部分开发者向着深入的方向成长铺平道路,甚至严重误导了开发者,结果是做Delphi越是资深,离正确的软件开发原则和实践就越远。例如大家在讨论的这个三层架构,就是Borland的一个不可原谅的败笔,且不说socksrv.exe的稳定性和伸缩性的如何,Borland让开发者通过DataSet作为各层间的耦合机制就是和架构分层的基本原则背道而驰的,这样的三层,如果在最前端一层不写SQL语句几乎是不可能的,更别谈业务逻辑层的封装了。 首先我不得不承认,socksrv.exe确实有问题,但是“如果在最前端一层不写SQL语句几乎是不可能的,更别谈业务逻辑层的封装了”说法我不造成,我自己写的就没在客户端写个SQL,
      

  25.   

    有好一点的开法模式没有,能不能象.NET中的bil\model这样的开发模式?
      

  26.   

    请问谁有 限公司COM+ IIS HTTP 连接方式的资料?
      

  27.   

    我现在还在用Delphi,是不是说我现在就己经被落伍了啊?
      

  28.   

    我觉得客户端用delphi服务器端就用java啊。客户端就用相当于mvc模式的v啊。
      

  29.   

    存储过程可以直接使用Sql提交的,如 exec procA 'aa','bb',有数据返回的使用QuerySQL执行,没返回的用ExecSQL方式执行楼主可以试试
      

  30.   

    最前端一层不写SQL语句几乎是不可能的,我也不赞成这种说法,因为我也实现了客户端完全不需要写sql语句的真正三层结构,这种真正三层结构比伪三层结构多了很多优点,先进很多,相信已有不少的人都会写这种结构了,网上许多年前就有人发布过这样的例子了scktsrvr.exe 这个中间层 只能支持少量的连接,那你可以使用短连接方式啊,这样就可以解决用户连接数限制问题了
      

  31.   

    为什么server端的源码不放上来呢
      

  32.   

    我也喜欢在数据表里操作,打类名存入数据库中,然后将字符串转换成类,我的权限:
    用户个人权限--->>角色权限---->>模块权限+特殊权限
      

  33.   

    看起来只是对miads封装了一下。有啥长处?本人正着手开发一套基于的delphi分布式应用服务器及相关客户端服务器控件,立志于打造一套从tcp/ip通讯到应用服务器线程池技术,到客户端组件封装的,原生三层技术,提供基础的分布式功能,并在其之上加入远程数据集(类似midas)的服务。
    初步介绍如下:
    http://blog.csdn.net/truexf/article/details/6661545
      

  34.   

    ddos老是攻击我的站
    服务器一天到晚都被搞坏了,大伙帮看看能不能打开来http://www.abis.com.cn