加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

3.程序框架功能层次的划分

发布时间:2020-12-12 15:41:58 所属栏目:MsSql教程 来源:网络整理
导读:?????? 在你接到开发程序框架的任务后,你可能与项目组成员和用户讨论出各种各样的功能需求,你心里肯定美滋滋的,这可是充分发挥我的技术才能的绝好机会呢!可是静下心来,面对这么多零零碎碎的需求,我该如何下手呢? ?????? 你需要对程序框架的功能层次进

?????? 在你接到开发程序框架的任务后,你可能与项目组成员和用户讨论出各种各样的功能需求,你心里肯定美滋滋的,这可是充分发挥我的技术才能的绝好机会呢!可是静下心来,面对这么多零零碎碎的需求,我该如何下手呢?

?????? 你需要对程序框架的功能层次进行一个划分!

?????? 首先可以从控制的平台上划分,将其划分为前台控制功能和后台控制功能。通常前台着重于界面的控制,例如控制从何处获取数据、如何展示数据、如何检验数据(前台部分)、如何保存数据、如何扑捉错误等。后台着重控制数据的流动、如何检验数据(后台部分)以及如何有效利用后台独特服务。

由于后台程序很难找出一个满意的由程序框架统一控制的入口(可以做到,但以牺牲性能、降低代码可阅读性为前提),程序框架对后台对象的控制功能相对前台而言通常要弱些。由于前后台开发工具处理的对象、方法存在天然的差别,在程序开发时要充分利用各自的优势,不过,如果开发人员在前后台开发工具的掌握上与常规不符(例如有些开发人员更擅长于在后台编写代码进行保存前的数据校验,有些开发人员更擅长于在前台编写代码控制数据的流动),基于项目成本考虑,可以做适当的调整。另外,最好用一种发展的眼光来看待前后台的划分,笔者的观点是,前台开发语言可能会同时使用多种(比如使用PB开发C/S客户端,同时使用C#+ASP.NET开发B/S客户端),随着新技术的推出,前台语言被替换的可能性比后台要大(你可能听说很多的用DELPHI代替VFP重写前台程序,但相对而言,你较少听说用ORACLE代替Microsoft SQL SERVER数据库),所以后台功能可以开发得更强大些(框架和事务层),这样不管它前台如何改变,后台代码总是能得到较大程度的有效利用。

以上讲得有点笼统,我就举几个实实在在的例子。

关于前台控制的实例:

1.????????????? 在为订单创建出货计划时必须获取有哪些可以创建出货计划的订单。程序框架可以开发一个公用粘贴窗口,由事务层开发人员设置创建出货计划的订单数据来源(比如数据窗口、SELECT语句等),程序框架在公用粘贴窗口中根据数据源获取订单数据,用户选择订单后填入相应的栏位。

2.????????????? 在采购单查询作业中限制非采购部用户不允许查看单价。程序框架可以开发用户权限作业,允许指定哪些栏位是不可以查看的,并在作业的入口窗口对不可查看的栏位进行处理(如设置编辑风格、更改栏位值等方式),这样实施人员就可以在用户权限作业中对采购单查询作业设置哪些用户是不可查看单价的,用户在进入采购单查询作业时就能自动判断并作出处理。

3.????????????? 程序框架可以自动获取数据窗口涉及到的后台不可为空又没有指定初始值的栏位,并在数据保存前检验用户有没有输入值。

4.????????????? 程序框架可以在多数据输入窗口中实现多数据窗口的事务一致性保存。

5.????????????? 程序框架可以自动扑捉系统级错误记录到后台表并弹出错误窗口。

关于后台控制的实例:

1.?????? 程序框架开发审批流程配置功能,在后台用户表创建审批触发器维护表数据的审批状态数据,系统实施人员设置哪些数据(表)需要启用审批流程,这样当用户创建、维护数据时就能自动判断适合哪种审批流程并在经过各级审批时自动维护审批状态。

2.?????? 程序框架开发外键约束功能,在后台用户表创建检验外键约束触发器,对栏位值进行存在性判断,允许系统实施人员设置哪个表的哪个栏位的值在何种条件下必须来自另一个表的某个栏位,这样用户在创建、维护数据时就能自动进行存在性判断。

3.?????? 程序框架开发自动发送邮件功能,在后台表创建自动发送邮件的触发器,感知表数据的改变并给相应收件人发送SQL邮件。

通过控制平台的划分,框架开发人员需要在前台(如PB)和后台(如SQLSERVER)上编写不同的代码实现不同的功能。那么,前后台还有没有必要再划分功能层次呢?我的建议是有必要再划分。

PB开发程序框架前台程序为例,你可以从设计对象的服务层次上划分,将其划分为应用程序级、作业级、独立对象级功能。通常应用程序级对象提供全局性服务,如子系统搭建、初始化文件信息服务、数据缓存服务、作业配置、日志记录等。作业级对象提供具体作业(如库存盘点)所需的服务,如数据查询、新增、编辑、删除、保存、打印等,作业级对象通常有可视的操作界面。独立级对象实现具体的功能,如数据窗口各项服务、树形列表服务等。虽然你可以选择在作业级对象中完成很多很多的功能,但从面向对象的开发角度出发,我建议你创建更多的独立服务对象,在作业级对象中集成这些独立对象就行,就像搭积木一样,这样也便于你维护程序。

我仍然以例子说明从设计对象的服务层次上是如何划分的(以PB为例)。

前台应用程序级功能示例:

1.????????????? 程序框架可以在应用程序启动时读取初始化文件,根据需要动态加载的库文件,组织成不同的子系统。(具体实现技术可参考笔者另一篇文章《使用SetLibrary动态组装系统》)

2.????????????? 应用程序服务对象可以在系统启动时读取某些框架系统表数据并暂存起来,在需要用到这些框架系统表数据时直接从缓存中读取,提高性能。

3.????????????? 程序框架允许开发人员建立程序列表,配置各作业的资源名称、各项参数。

4.????????????? 程序框架在应用程序启动和关闭时自动记录登录日志。

前台作业级功能示例:

1.?????? 在列表窗口祖先的工具栏调用公用查询窗口,允许用户自行设置条件对数据窗口实现按条件检索、过滤、定位。

2.???? 在输入窗口祖先提供另存新档功能,允许用户在可视情况下将现有数据另存为新数据。(具体实现技术可参考笔者另一篇文章《提供另存新档功能实现以旧换新》)

3.???? 在报表打印窗口调用公用打印配置窗口,允许用户更改打印机、配置需要打印的栏位。

前台对象级功能示例:

1.???? 在数据窗口祖先实现双击标题栏排序功能。

2.???? 在树形控件祖先实现根据数据源自动构造树结构。

3.???? 建立MD5服务对象实现MD5加密。(具体实现技术可参考笔者另一篇文章《MD5算法在PB中的实现》)

SQLSERVER开发程序框架后台程序为例,你可以从框架对象服务的方式上划分,将其划分为主动作用式和被动调用式功能。主动作用式指通过程序框架的相关功能直接在事务层对象建立关联代码,从而实现对事务层对象的直接控制。被动调用式指程序框架提供完成某种特定功能的对象,由事务层开发人员调用程序框架对象,从而实现对事务层对象的间接控制。

后台主动作用式功能示例:

1.????????????? 程序框架提供单据自动跳号配置功能,在配置好自动跳号规则后,直接在事务表上建立自动跳号触发器,实现自动跳号功能。

2.????????????? 程序框架开发自动发送邮件功能,在配置好自动发送邮件规则后,直接在事务表创建自动发送邮件的触发器,感知表数据的改变并给相应收件人发送SQL邮件。

后台被动调用式功能示例:

1.???? 程序框架创建获取SELECT语句栏位数据类型的存储过程,事务层开发人员可以调用该存储过程并传递相关参数获取SELECT语句栏位数据类型。

2.???? 程序框架创建获取表中指定列的所有值的存储过程,事务层开发人员可以调用该存储过程并传递相关参数获取指定表指定列的所有值。

以上仅仅提供一种将程序框架功能划分的方法,你可能会想出更多更好的方法,目的就是希望大家在开发程序框架时能做个冷静的分析,化繁为简,梳理脉络,这样有助于你合理拆分工作任务、精确构建协调统一的功能对象。

?

作者:康剑民 kangjianmin@139.com

写作日期:2009-03-04

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读