delphi源代码三层框架【框架简介】

该文章已生成可运行项目,

一,框架简介

1,本套源码主要是用来开发企业应用系统如:erp ,mes,hrms,进销存等制造业内部应用系统;跟网上 常见的delphi中间件相比,功能更丰富,开发便捷。若用来开发一些几千上万的高并发,垮平台 ,实时高效的系统,可能需要自己优化下代码。(交流微信173713873)

2,此框架服务端没有使用任何第三方控件,相比其它中间件,使用很多第三方插件,且绑定一些自研控件,此框架使用更放心;也没有使用多少高大上的技术;主要依照本人从事企业erp 开发,维护多年的经验用最简单明了的方法封装一些常用的功能函数业务逻辑;反正是思路大于技术吧。

3,本套源码适合想学习Delphi三层 并想开发一些企业内部应用系统的人或一直用二层开发想转三层的人。网上很多所谓的delphi中间件,其实是一个数据库连接转发器。

4,下载地址:ETU中间件下载-CSDN博客​​​​​​​     

二,开发环境

,本框架原是基于delphi2010开发的,为了发布到网上就把它升级到Delphi 11了;架构是data snap;服务器使用sqllite存储常用配置参数。客户端使用的是ms sql数据库,用到DevExpressVCL与FastReport控件。

三,服务端展示

 四,客户端展示

  此客户端是一个针对生产制造业的mes系统,主要功能是计件算工资,产量,效率,生产进度分析。系统有单独一个java版的app+H5手机端主要用来报数,查询(不在此处发布范围,有需要的单独联系)。

   五,代码结构

 没有高深的架构,简单易懂。大神勿喷(^_^)!

server:

client:

  六,服务端主要功能详解

本文章已经生成可运行项目
随便说说最近项目中的三层架构吧。讲点实际的东西。我最讨厌空讲道理。网上讲道理的太多了,不喜欢举例子。 大多数文章中都或多或少的讲到了三层架构。表示层,业务层,数据层。又把业务层再细分,分为外观服务层,主业务服务,及数据库库服务层。 今天主要讨论一下业务层吧。举个最简单的例子。客户端获取数据。 业务层要与表示层尽量解藕, 我的方法是:首先我们在中间层TLB_中定义一个接口 IBusinessService, 定义一个方法。getvoList,我要得到一个VO的列表, VO即ValueObject, 例如:TValueObject= class(TPersistent) private b_insertFlag :Boolean; b_updateFlag :Boolean; b_deleteFlag :Boolean; d_rowVersion :double; procedure setInsertFlag(pInsertFlag :Boolean); function getInsertFlag: Boolean; procedure setUpdateFlag(pUpdateFlag :Boolean); function getUpdateFlag: Boolean; procedure setDeleteFlag(pDeleteFlag :Boolean); function getDeleteFlag: Boolean; procedure setRowVersion(pRowVersion :double); function getRowVersion:double; protected function GetOLEData: OleVariant; virtual; procedure SetOLEData(const Value: OleVariant); virtual; published property bInsertFlag: Boolean read getInsertFlag write setInsertFlag; property bUpdateFlag: Boolean read getUpdateFlag write setUpdateFlag; property bDeleteFlag: Boolean read getDeleteFlag write setDeleteFlag; property dRowVersion: double read getRowVersion write setRowVersion; property POLEData:OleVariant read GetOLEData write SetOLEData; end;TUserVO = class(TValueObject) private id: string; name: string; password: string; 。。。。。。。。。。 VO的列表:TValueObjectList = Class(TObjectList) private ValueObject: TValueObject; ClassName: TClass; procedure setClassName(pTmpClsName :TClass); function getClassName: TClass; procedure setValueObject(pTmpVO :TValueObject); function getValueObject: TValueObject; protected function GetOLEData: OleVariant; virtual; procedure SetOLEData(const Value: OleVariant); virtual; published function AddItem(index: integer; AObject: TObject ):Integer; virtual; function GetItem(index, itemid: integer ): TObject; virtual; function CountItem:Integer; virtual; public constructor Create; virtual; destructor Destroy; override; procedure AfterConstruction; override; property PClassName: TClass read getClassName write setClassName; property POLEData: Ole
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值