朝花夕拾--delphi的三层结构

         今天同事讲起.net2005里分布式开发及负载平衡想起的
         使用delphi做三层结构,大概是2001年的事了,当时做的项目基本都采用了三层结构,现在想来还是有些好处的,几十个客户端通过应用服务器访问数据库,业务逻辑放到了应用服务器层,客户端、应用服务器、数据库服务器可以分别部署在不同的机器上。
        我们知道,每个exe执行起来后都运行在自己的进程空间中,是独立的,在同一台机器上,怎样让一个exe调用另外一个exe的方法呢?这就是我常提到的com技术,被调用的exe不再是一个简单的exe了,它不能只顾自己了,还要为别的调用提供服务,别的exe怎么知道系统里有哪些可用的对象呢?提供服务的exe必须向系统注册,我们在注册表中看到的许多天书般的长串键值就是这些对象的唯一标识。向execl、word这些软件都早不是简单的应用程序,他们都向系统注册了服务对象,你写的vb、delphi、vc等程序能简单的嵌入excel、word,其实就是在调用这些服务对象的方法。
         如上所述,com 让同台机器上的exe之间可以访问,dcom让不同机器上的exe之间可以访问。dcom是针对Windows 工作组开发的小型连接方式,并不支持tcp/ip 网络, 不支持网关。

         delphi做三层结构可以采用的连接方式有:   
         DCOM Connection
         Socket Connection
         Web Connection    
         SOAP Connection
         CORBA Connection

         我们主要看下Socket Connection和Web Connection    
        
         1、Socket Connection 通过tcp/ip传输,可任意分配多口
         delphi提供scktsrvr.exe来接收客户端的请求,为每一个客户机连接都要建立一个线程,来服务客户端
         过程如下:  
         客户端要求服务器执行一个方法,查询一个数据 -> 服务器socket -> 发送windows消息到 socketserver主线程->服务器上客户连接线程分拣消息 - > 分析数据包,找出客户要求执行的接口方法 -> com服务器,执行方法->传回第一个数据包到客户端-> 客户端发送响应给服务器 ->  服务器socket -> 发送 windows 消息到 socketserver主线程
          2、Web Connection 通过80端口的http传输躲过了网关,但速度慢,因为在WebConnection中需要对COM请求的数据进行Marshall并编码为HTTP协议所需要的文本格式,到了httpsrvr中又要把HTTP的文本转成本地COM调用。
         WebConnection调用应用服务器,如果提示"访问拒绝",请运行DComcnfg配置DCOM对象的安全启动和激活权限,为Internet来宾用户添加权限即可。同时确保httpsrvr.dll所在的文件夹的执行权限为"脚本和可执行文件"。

         两篇文章:
        1、http://borland.mblogger.cn/catchbug/posts/2927.aspx
        2、http://blog.csdn.net/cheng_ds/archive/2007/02/04/1502196.aspx

        示例代码下载
        1、TWebConnection
        2、TSockeConnection

转载于:https://www.cnblogs.com/gjung/archive/2007/04/01/696026.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MateyFrame是一款由Delphi开发的三层架构框架,经过多年的升级改进,版本由MateyFrame V1.0升级到了当前的MateyFrame V5.0版本。MateyFrame V5.0具有功能强大、负载量大、安全性高、可扩展性强、同时支持B/S与C/S运行模式、开发简单等特性。MateyFrame V5.0由中间层服务端、客户端框架、MateyWeb组件三部分组成,同时支持 Oracle、MSSQL、MySQL数据库。 中间层服务端 采用面向对象方法设计而成,具有稳定性强、安全性高、负载量大、可扩展性强等特性。 采用数据库连接池技术,支持多数据库应用及多种数据库的应用,可以很好的处理断网、数据库重新启动等异常情况,一旦外界环境恢复后,连接池将重新连接数据库,不需要重启服务程序。 使用HTTP协议与客户端进行通信,可以适合企业内网及企业外网等任何网络环境,更适合在Internet网络上运行程序。 服务端支持多种类型的大型数据库一起使用,支持的数据库有:Oracle、MSSQL、MySQL。 服务端采用插件技术开发,系统核心插件可以直接使用,另外用户可轻松地扩展自己需要的服务插件。 服务端采用会话管理技术,为每个客户端会话分配唯一的加密密钥,交互数据在底层进行加密传输,保证了数据在传输过程中的高安全性。 服务端支持多实例运行模式,当客户端用户量大增时,可以适当增加中间层实例,解决大并发量的问题。 服务端插件实现了真三层、伪三层的核心插件,用户可以根据安全级别选用任何一种模式进行应用。 服务端使用Win服务运行模式,重启服务器不需登录系统开启服务程序,服务端即可自动运行。 具有客户端程序发布功能,可以为客户端软件的自动更新服务。 客户端框架 客户端设计成 EXE+BPL+DLL 的文件结构模式,具有扩展性强、易于开发、易于维护、使用简单等特点; 程序框架同时支持B/S、C/S模式,即可以通过客户端运行程序,也可以通过浏览器运行程序,并且支持两种模式同时存在。 使用插件开发模式,业务功能根据实际需要封装在不同的模块 DLL 中,即插即用; 封装了强大的基类,底层数据访问、出错处理、权限控制等; 系统功能根据业务模块信息自动生成,可以手动配置功能菜单列表; 框架中包含用户及权限管理插件,拿来即用,此模块可严格控制各功能Form 的详细权限(添加、修改、删除)、特殊数据的读取权限; 框架中包含了数据字典、系统参数的设置功能,拿来即可用。 框架采用调用时下载相关依赖文件的模式进行程序更新,具有更新文件少、更新速度快等特点; 框架支持程序文件流加载模式,更新的程序文件不需要保存在客户端的机器上,可大大增强程序的安全性。 框架有设计模式与运行模式之分,在设计模式下客户端通过框架功能用SQL可以直接读取到数据库的数据,方便程序开发;但在运行模式中,此功能不可用,这样可以保证数据的安全性。 框架设计了通用的报表设计模块,用户只需简单调,就可以得到自己所需要的报表模板设计,得到功能所需要的报表。 可选用分页数据处理技术,使大批量数据分页返回,分解服务器的压力; 具有负载平衡的功能,当连接的中间层服务器端负载过大或者崩溃时,会自动转向其它可用中间层服务器。 具有断线重连功能,当网络的异常恢复时,系统底层连接会重新连接,不用重启程序就可使用。 框架提供超级查询组件,组件可以根据编号、名称、五笔码、拼音码对需要查询的数据进行快速过滤。 MateyWeb组件 MateyWeb组件是一款能被IE加载运行的ActiveX控件,它是客户端程序在B/S模式下运行的载体。 MateyWeb组件支持WinXP、Win2000、Win2003、Win7、Vista等操作系统。 MateyWeb组件支持IE及以IE为内核的所有浏览器。 应用场合 非常适合开发各种应用于Internet之上的大中型的MIS管理软件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值