2004-09-03下午讨论 主题:如何写好系统框架(第二节) (煮茶待英雄会议室)

业务层(中间层)结构分析图
%E4%B8%9A%E5%8A%A1%E5%B1%82(%E4%B8%AD%E9%97%B4%E5%B1%82)%E7%BB%93%E6%9E%84%E5%88%86%E6%9E%90%E5%9B%BE.jpg

主持人:45198124(A1.Aleyn.wu)
          409485288(D1.jackey)
    时间:2004-09-03 15:00-18:00

内容:
(1)管理系统的框架里面有什么
(2)哪些系统不需要框架
(3)框架如何去安排才容易拓展

管理系统的框架,我们可以拆小来说。
(一),界面的Layout
(二),Module Manage
(三),Data Access Method
(四)。Authority

(一),界面的Layout
菜单的布置(模块中有时候会加入SubMenu)

所以,整个界面可以分为几个区,
Menu,Top Toolbar, Outlookbar, ClientRect
MainForm的组成:Menu,TopToolbar,OutlookBar(Option),ClientRect,HelpRect(Option)


409485288(D1.jackey) 15:43:51
框架,构架,架构,我一直认为一个东东,不知大家是不是这样认为.
409485288(D1.jackey) 15:44:12
系统架构师的主要工作是处理它
409485288(D1.jackey) 15:47:55
在一个系统设计之处,大家最关心的是系统的整体一致。包括界面,处理方法,系统的体系结构等等.
409485288(D1.jackey) 15:48:43
一个好的框架结构设计的结果是:你看了随便一个模块都知这个系统其它模块怎么去写。
409485288(D1.jackey) 15:50:29
而这些,不只是总体风格。 总体风格是框架关心的其中一个方面.

45198124(A1.Aleyn.wu) 15:56:57
实际上,主界面不要和子模块太多的牵挂,这是规则之一。
45198124(A1.Aleyn.wu) 15:58:18
再深一点说,谁都可以写一个模块,放入系统一起编译。
45198124(A1.Aleyn.wu) 16:00:00
我们来个针对性的问题来讲。
45198124(A1.Aleyn.wu) 16:01:00
主系统需要子模块什么东西,子模块又需要主系统什么东西来支持?
45198124(A1.Aleyn.wu) 16:05:57
一般情况下,主系统加载了子模块之后,他需要知道子模块的标题,ActionList,MenuList,就可以了。

2004-09-03 16:06:17 A1.Aleyn.wu(45198124)
为了统一。

2004-09-03 16:06:39 天地弦/zhao(185511468)
定义一个接口/

2004-09-03 16:07:14 叁十了的男人(82425829)
就想听接口如何做,写些什麽基础单元

2004-09-03 16:07:15 天地弦/zhao(185511468)
所有的子模块都支持这个接口

2004-09-03 16:07:15 A1.Aleyn.wu(45198124)
换句话说,把子模块放到其它主系统中,一样可以运行,就是成功的。

2004-09-03 16:07:29 天地弦/zhao(185511468)
老大是不是

2004-09-03 16:07:33 A1.Aleyn.wu(45198124)
对。

45198124(A1.Aleyn.wu) 16:07:15
换句话说,把子模块放到其它主系统中,一样可以运行,就是成功的。

//--------------------------------------------------------------------------------------
系统的设计无非是IPO设计
185511468(天地弦 ) 16:34:04
IPO?
是什么?

409485288(D1.jackey) 16:25:40
I: 输入设计, P 处理设计, o:输出设计

409485288(D1.jackey) 16:26:21
而通过这个设计就形成的系统的模块

409485288(D1.jackey) 16:26:45
系统模块的整合,构成了整个系统

409485288(D1.jackey) 16:27:05
整合的过程也一个架构的过程
I:o其实最关心的界面与处理的一致性.

409485288(D1.jackey) 16:30:19
但是在设计的过程中,不同的架构师对系统的取向不同,平衡大家的观点是其主要工作。而结果就是要作到:结构清晰, 方便扩展.

409485288(D1.jackey) 16:31:19
错了。如果只有一个架构师就平衡他自已就行了
 
409485288(D1.jackey) 16:32:11
大家都知:简洁明晰一致的系统才是个好系统

409485288(D1.jackey) 16:39:24
A1说的那么多,其实结论就是如何组织一个简洁明晰一致的界面。

409485288(D1.jackey) 16:48:01
除了界面的一致, 还有数据校验的一致.数据处理的一致,程式结构的一致。
45198124(A1.Aleyn.wu) 16:48:19
新手可能一时反应不过来,不过入门的朋友就受教了,大家多谢D1。

409485288(D1.jackey) 16:49:10
接口的一致.. 但是对用户不可见,程序员却一定要了解架构师的规定.

45198124(A1.Aleyn.wu) 16:50:36
除了要技术架构师的规定,还要支持模块的独立性,方便测试
 
//===========================================================
(二),Module Manage
45198124(A1.Aleyn.wu) 16:54:01
相对於系统来说,有"必要模块"和"选择模块"。

45198124(A1.Aleyn.wu) 16:54:51
必要模块是指主系统用来管理整个系统用的。
选择模块是指随时跟据客户的需求来加入的。

45198124(A1.Aleyn.wu) 16:56:02
也就是说,没有选择模块系统一样可以运行。

45198124(A1.Aleyn.wu) 16:56:59
必要模块是和系统相生的,它由系统来管理。

45198124(A1.Aleyn.wu) 16:57:25
而选择模块则由模块工厂来管理了。

45198124(A1.Aleyn.wu) 16:58:11
在我们不懂得如何应用DLL来做子模块的时候,我们可以采用其它来做。


2004-09-03 16:58:12 Sunny(39346413)
能不能举个例子

2004-09-03 16:58:34 A1.Aleyn.wu(45198124)
比如,Delphi本身的条件编译。

2004-09-03 16:59:21 天地弦/zhao(185511468)
老大你的DlL有带包吗?

2004-09-03 16:59:29 A1.Aleyn.wu(45198124)
没有。

2004-09-03 16:59:53 A1.Aleyn.wu(45198124)
我的客户端用条件编译的,中间层才用DLL。

2004-09-03 17:00:11 天地弦/zhao(185511468)
条件编译是什麽

2004-09-03 17:00:33 A1.Aleyn.wu(45198124)
如何做条件编译不是今天的主题,下次再详细讨论。

2004-09-03 17:00:38 天地弦/zhao(185511468)

2004-09-03 17:00:50 -(8699524)
{$define s}
{$ifdef s}
{$endif}

2004-09-03 17:00:59 A1.Aleyn.wu(45198124)
对,就是这些。

45198124(A1.Aleyn.wu) 17:01:40
我们说说模块工厂做什么。

45198124(A1.Aleyn.wu) 17:02:41
模块工厂是对主系统服务的。主系统产生了一个执行子模块的动作后,模块工厂就开始工作了。

45198124(A1.Aleyn.wu) 17:03:33
根据主系统的KEY,去寻找所对应的类。

45198124(A1.Aleyn.wu) 17:04:30
所有的子模块必须在模块工厂注册它的类名字,这样模块工厂才能找到它。

45198124(A1.Aleyn.wu) 17:05:00
打个比喻。
185511468(天地弦 ) 17:13:38
应该怎样注册 
82425829(三十了的男人) 17:05:23
有点难写哟
185511468(天地弦 ) 17:14:09
老大你现在说的是中间层还是客户层
45198124(A1.Aleyn.wu) 17:05:37
你想找一家做钢笔的工厂,
45198124(A1.Aleyn.wu) 17:05:43
客户层。
185511468(天地弦 ) 17:14:22
o
45198124(A1.Aleyn.wu) 17:06:22
你不知道有那些工厂适合你,所以你到工商局去查,
185511468(天地弦 ) 17:15:14
工商局就是模块工厂
45198124(A1.Aleyn.wu) 17:06:58
而只有在工商局注册公司名字的,工商才能找得到,对不?
82425829(三十了的男人) 17:07:18
有点意思
81188966(冰雪) 17:07:20

185511468(天地弦 ) 17:15:58
那些厂就是选择模块
45198124(A1.Aleyn.wu) 17:07:39
对。
185511468(天地弦 ) 17:16:25
你就是主系统
45198124(A1.Aleyn.wu) 17:07:54
对。

45198124(A1.Aleyn.wu) 17:08:59
不要在主系统引用任何模块,除了在模块工厂里。

45198124(A1.Aleyn.wu) 17:09:58
怎么注册也是一个不小的问题,也得找时间来说。
409485288(D1.jackey) 17:10:04
有空你可以分析下.delphi的com工厂
409485288(D1.jackey) 17:10:11
源码

409485288(D1.jackey) 17:11:21
1。参考dcom的方法
409485288(D1.jackey) 17:11:45
2.参考a1的三层的方法

(3).Data Access Method (数据访问的方法)。
 
45198124(A1.Aleyn.wu) 17:14:54
如何访问数据和更新数据,也是架构师的要定义的。

45198124(A1.Aleyn.wu) 17:17:19
数据的访问可以能三层或伪三层的方法来做。
 
45198124(A1.Aleyn.wu) 17:18:08
也就是说,客户层不能和数据层息息相关。

2004-09-03 17:18:53 A1.Aleyn.wu(45198124)
如果分层,就是分成客户层,中间服务层,业务规则层,数据层。

2004-09-03 17:19:00 叁十了的男人(82425829)
客户层的界面不能和数据库相关呀,不好办哟

2004-09-03 17:19:27 A1.Aleyn.wu(45198124)
可能说是四层,或说是叁层半。

2004-09-03 17:19:35 天地弦/zhao(185511468)
为什麽不好办,就是要那样办

2004-09-03 17:19:36 叁十了的男人(82425829)
比如客户层的列表自定义信息要放到库中呀

2004-09-03 17:20:32 A1.Aleyn.wu(45198124)
比如,客户端要一个信息,

2004-09-03 17:20:36 叁十了的男人(82425829)
好比我们公司的产品对用户的列表可自定义选设列,信息就是放在库中的,得到了用户的认可的

2004-09-03 17:20:36 往事(45523902)
A1意思是把跟数据相关的方法定义在datamoudle..在界面层直接调用datamoulde.datamothod..是吗?

2004-09-03 17:21:26 A1.Aleyn.wu(45198124)
你指的是已经查询返回的资料对不?

2004-09-03 17:22:39 叁十了的男人(82425829)
不是,还有每个单据样式都是自定义模板放在库中的

2004-09-03 17:22:52 A1.Aleyn.wu(45198124)
指什麽呢?

2004-09-03 17:23:31 欢乐狗熊(228175978)
单据样式,我感兴趣,正头痛中

2004-09-03 17:23:33 往事(45523902)
我明白你的意思了。。

2004-09-03 17:23:36 Sunny(39346413)
“比如,客户端要一个信息, ”
继续...

2004-09-03 17:23:49 叁十了的男人(82425829)
比如,入库单我可设工程栏目,

2004-09-03 17:24:12 往事(45523902)
我的理解是...用装饰模式来做数据处理这一块...

2004-09-03 17:24:17 叁十了的男人(82425829)
好吧,老大,改天与你细讲,你go on

2004-09-03 17:23:49 A1.Aleyn.wu(45198124)
现在来说,数据分为两种。
一种就是存在在数据库中的。
一种就是已经下载到你的客户端了。

2004-09-03 17:25:47 叁十了的男人(82425829)
下到客户端不好,我要换机操作又要重下才行

2004-09-03 17:26:20 A1.Aleyn.wu(45198124)
客户端的数据可以放在DM里,这部分是和模块相关联的。
DM=datamodul

2004-09-03 17:26:58 HUI云中鹤(20695124)
这样的好坏在哪里?

2004-09-03 17:27:00 叁十了的男人(82425829)
效率?

2004-09-03 17:27:07 欢乐狗熊(228175978)
如果表格样式很多每次都要下吗,下完了使用过後是否在客户端保存呢,如果样式发生改动怎麽办

2004-09-03 17:27:08 A1.Aleyn.wu(45198124)
而存在数据库中的数据,客户端就不能直接访问了

2004-09-03 17:27:47 HUI云中鹤(20695124)
放在DM里的数据实质是方在哪里的?

2004-09-03 17:28:17 A1.Aleyn.wu(45198124)
必须通过规则的方式来取,这样一来,改界面和改DM就不会太乱了。

2004-09-03 17:28:29 A1.Aleyn.wu(45198124)
是放在客户端。

2004-09-03 17:29:02 A1.Aleyn.wu(45198124)
比如:客户端要一条信息。

2004-09-03 17:29:23 A1.Aleyn.wu(45198124)
客户端说:我要昨天的订单,

2004-09-03 17:30:07 A1.Aleyn.wu(45198124)
也许,它给DM的信息也就是:日期:2004-09-02,内容:订单。

2004-09-03 17:30:33 A1.Aleyn.wu(45198124)
这DM是指本地DM。

2004-09-03 17:32:01 A1.Aleyn.wu(45198124)
DM把信息传给中间层,先不管中间层如何做,我们假定它把DM要的数据传回给DM。

2004-09-03 17:32:37 A1.Aleyn.wu(45198124)
所以,这就是系统的数据访问方法。

2004-09-03 17:33:31 HUI云中鹤(20695124)
就是要把所有的客户端数据放在DM中

2004-09-03 17:33:34 HUI云中鹤(20695124)
是这样吧

2004-09-03 17:33:48 A1.Aleyn.wu(45198124)
也许,你定义的不是这个方法,但大多数是差不多的。

2004-09-03 17:34:01 HUI云中鹤(20695124)
明白了,GO ON 。。。。

2004-09-03 17:35:04 A1.Aleyn.wu(45198124)
(四)。Authority ,没时间说了,下次说吧,大家看看这次的有什麽问题,说出来讨论讨论。

2004-09-03 17:37:06 Sunny(39346413)
什嬷时候找时间讨论一下
模块工厂的注册?

2004-09-03 17:37:38 D1.jackey(409485288)
简单的注册方式是不注册,用case

2004-09-03 17:37:49 叁十了的男人(82425829)
给出个例子好讲些

2004-09-03 17:37:50 A1.Aleyn.wu(45198124)
大家关注群组或主页的公布就可以了。

2004-09-03 17:38:25 A1.Aleyn.wu(45198124)
对,用Uses+Case就可以实现注册方式了。

2004-09-03 17:38:28 Sunny(39346413)
D1 ,简单举个例子look look

2004-09-03 17:39:22 冰雪(81188966)
Use Case不是画图吗?[?]

2004-09-03 17:39:32 A1.Aleyn.wu(45198124)
还有10分钟,简单的问题可以说说。

2004-09-03 17:39:49 叁十了的男人(82425829)
老大,什麽时间我传个东东给出你,看盾这种要做叁层如何做到

2004-09-03 17:39:55 HUI云中鹤(20695124)
老大

2004-09-03 17:40:05 HUI云中鹤(20695124)
你的程序是哪种

2004-09-03 17:40:09 HUI云中鹤(20695124)
风格的

2004-09-03 17:40:10 A1.Aleyn.wu(45198124)
什麽程序?

2004-09-03 17:40:10 叁十了的男人(82425829)
老大在不嘛

2004-09-03 17:40:21 HUI云中鹤(20695124)
是不是都调用BPL的

2004-09-03 17:40:26 HUI云中鹤(20695124)
还是当个EXE完成

2004-09-03 17:40:27 A1.Aleyn.wu(45198124)
不是

2004-09-03 17:40:36 叁十了的男人(82425829)
c/s的

2004-09-03 17:40:47 A1.Aleyn.wu(45198124)
客户端是一个EXE,中间层是EXE+DLL

2004-09-03 17:40:59 D1.jackey(409485288)
 case ssss.Tag of
  1: po;
  2: pr;
  3: call_dll3;
  4: cal_exe4;
end

2004-09-03 17:41:20 D1.jackey(409485288)
类似

2004-09-03 17:41:27 A1.Aleyn.wu(45198124)
对。

2004-09-03 17:41:26 叁十了的男人(82425829)
没中间层,只是想问一下如何在叁层中实现那些有用的方法

2004-09-03 17:41:48 C03.MUSIC(281361369)
老大,为什麽在中间层用DLL,而客户端不用DLL

2004-09-03 17:42:14 叁十了的男人(82425829)
客户那边的东东少

2004-09-03 17:42:14 A1.Aleyn.wu(45198124)
to 叁十了的男人,我最近好忙,不能帮你看了。

2004-09-03 17:42:36 叁十了的男人(82425829)
等你有空看看,是财务加购销存的

2004-09-03 17:42:41 A1.Aleyn.wu(45198124)
因为客户端实现DLL有点难。

2004-09-03 17:42:50 HUI云中鹤(20695124)
为什麽?
 
2004-09-03 17:42:53 D1.jackey(409485288)
281361369(C03.MUSIC) 17:41:48
老大,为什麽在中间层用DLL,而客户端不用DLL ==>偷懒。

2004-09-03 17:43:04 叁十了的男人(82425829)
我们公司的产品在www.gasoft.com.cn

2004-09-03 17:43:16 C03.MUSIC(281361369)
其实我感觉客户的要求是最容易变的,应该在客户端用DLL,对吗?

2004-09-03 17:43:41 A1.Aleyn.wu(45198124)
关键是界面难处理。

2004-09-03 17:44:10 C03.MUSIC(281361369)
最难是什麽?

2004-09-03 17:44:22 A1.Aleyn.wu(45198124)
最难的是消息处理。

2004-09-03 17:44:29 C03.MUSIC(281361369)

2004-09-03 17:45:29 C03.MUSIC(281361369)
老大,你给的那个图片中,客户区用的什麽控件?

2004-09-03 17:45:40 A1.Aleyn.wu(45198124)
PageControl

2004-09-03 17:45:48 C03.MUSIC(281361369)
里面呢?

2004-09-03 17:46:22 A1.Aleyn.wu(45198124)
里面是FORM啊。

2004-09-03 17:46:32 A1.Aleyn.wu(45198124)
下班了,会议结束,大家搬[meeting]了。

老大的Form图
13%5B1%5D.jpg

转载于:https://www.cnblogs.com/DKSoft/articles/44213.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
众所周知,人工智能是当前最热门的话题之一, 计算机技术与互联网技术的快速发展更是将对人工智能的研究推向一个新的高潮。 人工智能是研究模拟和扩展人类智能的理论与方法及其应用的一门新兴技术科学。 作为人工智能核心研究领域之一的机器学习, 其研究动机是为了使计算机系统具有人的学习能力以实现人工智能。 那么, 什么是机器学习呢? 机器学习 (Machine Learning) 是对研究问题进行模型假设,利用计算机从训练数据中学习得到模型参数,并最终对数据进行预测和分析的一门学科。 机器学习的用途 机器学习是一种通用的数据处理技术,其包含了大量的学习算法。不同的学习算法在不同的行业及应用中能够表现出不同的性能和优势。目前,机器学习已成功地应用于下列领域: 互联网领域----语音识别、搜索引擎、语言翻译、垃圾邮件过滤、自然语言处理等 生物领域----基因序列分析、DNA 序列预测、蛋白质结构预测等 自动化领域----人脸识别、无人驾驶技术、图像处理、信号处理等 金融领域----证券市场分析、信用卡欺诈检测等 医学领域----疾病鉴别/诊断、流行病爆发预测等 刑侦领域----潜在犯罪识别与预测、模拟人工智能侦探等 新闻领域----新闻推荐系统等 游戏领域----游戏战略规划等 从上述所列举的应用可知,机器学习正在成为各行各业都会经常使用到的分析工具,尤其是在各领域数据量爆炸的今天,各行业都希望通过数据处理与分析手段,得到数据中有价值的信息,以便明确客户的需求和指引企业的发展。
众所周知,人工智能是当前最热门的话题之一, 计算机技术与互联网技术的快速发展更是将对人工智能的研究推向一个新的高潮。 人工智能是研究模拟和扩展人类智能的理论与方法及其应用的一门新兴技术科学。 作为人工智能核心研究领域之一的机器学习, 其研究动机是为了使计算机系统具有人的学习能力以实现人工智能。 那么, 什么是机器学习呢? 机器学习 (Machine Learning) 是对研究问题进行模型假设,利用计算机从训练数据中学习得到模型参数,并最终对数据进行预测和分析的一门学科。 机器学习的用途 机器学习是一种通用的数据处理技术,其包含了大量的学习算法。不同的学习算法在不同的行业及应用中能够表现出不同的性能和优势。目前,机器学习已成功地应用于下列领域: 互联网领域----语音识别、搜索引擎、语言翻译、垃圾邮件过滤、自然语言处理等 生物领域----基因序列分析、DNA 序列预测、蛋白质结构预测等 自动化领域----人脸识别、无人驾驶技术、图像处理、信号处理等 金融领域----证券市场分析、信用卡欺诈检测等 医学领域----疾病鉴别/诊断、流行病爆发预测等 刑侦领域----潜在犯罪识别与预测、模拟人工智能侦探等 新闻领域----新闻推荐系统等 游戏领域----游戏战略规划等 从上述所列举的应用可知,机器学习正在成为各行各业都会经常使用到的分析工具,尤其是在各领域数据量爆炸的今天,各行业都希望通过数据处理与分析手段,得到数据中有价值的信息,以便明确客户的需求和指引企业的发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值