首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • Delphi底层架构,希望大家一起讨论一下
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • MartinWang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2007-12-25 21:22:57 楼主
    前言:

        使用Delphi有五年多的时间,基于Delphi相关的技术在开发中都涉及到过:DLL,COM,DCOM,API,WEBSERVICE,SOCKET,Windows Message,OO,等等一些,到了今天反而觉得这些都是一些"技巧"的东西,而系统的框架才是软件的灵魂,在开发中,由于种种原因,项目组成员对于软件开发的认知度,项目的工期等原因,导致整个项目的开发过程中,软件开发的统一做的不尽人意,代码的粗枝乱造,界面的风格不一郅,业务的胡乱堆积,使系统的质量大大降低,对于DELPHI,其RAD功能让很多人喜欢上了他,但程序开发已经发展到今天,动态语言,Java,.Net等的出现,使整个软件在框架设计上提到了一个新的高度,面对BORLAND对DELPHI的态度(虽然CodeGear对DELPHI进行了后续的整合,但Delphi不负有当年之勇了???),开源的兴起,都使DELPHI落到了其他工具的后面,想找一些实用的架构更是比较难,才有了笔者关于DELPHI架构开发的设想.

    问题:

        DELPHI目前的开发方式,许多TEAM还沿用5年前,甚至更远的思路,主要是使用RAD的一些特性,其开发出的程序缺少扩展性,且对于OO,MVC思想的使用更是少之又少(虽然VCL的整体设计,实现体现了整个VCL的精华),软件产品的统一性,操作的统一性,数据操作的统一性,UNIT之间的高耦合等等.

    架构设想:

     通过此框架的实现,体现出目前比较先进行一些设计思想,MVC,OO,代码生成,ORM等

    界面架构:

      1.实现界面的整体风格的定制,统一(键盘事件的统一,鼠标事件的统一,窗体布局的统一,热键,全局热键的统一)

      2.窗体间流转,调度的统一,减少窗体间的耦合度,实现窗体间流转的可配置.

      3.实现窗体的复用,各分类窗体的订制(查询,对话框,打印,数据操作等更细分类的订制)

      4.权限,功能权限的统一管理控制

      代码,设计文档,设计图(MM),稍候奉上

    详见http://blog.csdn.net/MartinWang/archive/2007/12/04/1917273.aspx
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • king_xing
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-25 21:59:321楼 得分:0
    有同感,觉得Delphi的可移植性差了点。团队开发若没有强制的规范,开发出来的代码其后续维护将不可想象!!

    界面架构楼主上面说的4点,在我的开发框架中都已经解决,就是没有想到没找到可用XML定制的界面解决方案!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • XXSingle
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-25 22:35:552楼 得分:0
    长江后浪推前浪,delphi将漫漫被新型的开发工具挤出;不管怎么样的开发工具对于一个团队来说,都应该有自己成熟的框架、规范、开发流程
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ideation_shang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-26 00:20:563楼 得分:0
    任何一个成熟技术团队 或者 开发公司 都有自己的framework
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liangpei2008
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-26 08:57:304楼 得分:0
    系统的框架才是软件的灵魂,在开发中,由于种种原因,项目组成员对于软件开发的认知度,项目的工期等原因,导致整个项目的开发过程中,软件开发的统一做的不尽人意,代码的粗枝乱造,界面的风格不一郅,业务的胡乱堆积,使系统的质量大大降低
    ------------------------
    相当认同
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ghd2004
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-26 09:07:505楼 得分:0
    jf
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hsmserver
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 3

    发表于:2007-12-26 09:28:386楼 得分:0
    up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ydlchina
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 4

    发表于:2007-12-26 09:47:327楼 得分:0
    实际上现在好像各种开发工具发展的最终目标是如何快速开发,而运行效率变成了其次,在追求速度,不要效率的时代,这是很正常的现象
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • LSZ100
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-27 11:42:328楼 得分:0
    up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sdzeng
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-27 12:53:479楼 得分:0
    1、说Delphi的开发方式对OO运用的比较少
    这一点根本站不住脚,如果思想没跟上,用了class一样写不出OO的代码
    2、说Delphi对MVC运用的少
    这是因为VCL根本就没有使用MVC,MVC不是灵丹妙药,本身也有很多问题
    好好想想,如果MVC够先进,C#为什么不用?
    VCL本身就不是MVC的,在VCL之上构筑MVC,是一件很费脑子的事,
    构造出来的东西是否优美,也得打个问号。
    如果脱离VCL,另搞一套组件框架,还得考虑生命期的问题,
    win32 api属于快被淘汰的东西,在它上面搞得再完美都没有多大价值
    而.net framework本身已经很全了,
    基于它再封装一个框架,很容易跟VCL .net一样,落个不尴不尬的地步
    3、搞VCL那种基础的框架是件费力不讨好的事,没有两把刷子最好不要轻易尝试
    像Hibernate、ECO那种面向特定领域和业务层面的框架倒是有可行性。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • frankie_24
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-27 15:58:5810楼 得分:0
    学习了....
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jerry8
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-27 16:02:0911楼 得分:0
    专业抢分
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gjw310
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-27 16:16:2212楼 得分:0
    听楼主说的有点像想弄个业务架构平台的意思,不过用Delphi去开发这么一个平台是不是有点太困难
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • MartinWang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-27 22:06:5113楼 得分:0
    呵,谢谢大家的关注!!!
    首先,
    我做这个框架第一个是要在日常的开发过程中,能够有一套底层的东西,不用从头再搭一个程序的框架!!
    其实,
    框架里会集成一些公共的方法、函数(HELPER)类,里面有一些在实际开发中的技巧以及各种控件,组件的特性,如:dx***,ListView等等。
    能逐渐完善,将以往掌握的一些东西完善到框架中,达到更快速、高质量开发的目的
    针对:
    king_xing
    有同感,觉得Delphi的可移植性差了点。团队开发若没有强制的规范,开发出来的代码其后续维护将不可想象!!

    界面架构楼主上面说的4点,在我的开发框架中都已经解决,就是没有想到没找到可用XML定制的界面解决方案!
    -------------------------------------------------------------------------------------
    很希望能把你的框架的东西共享出来,大家共同研究一下,关于XML界面定制,个人认为没必要,如果非要定制,用Delphi自已带的DFM就可以了,没必要再自已做了
    XXSingle
    长江后浪推前浪,delphi将漫漫被新型的开发工具挤出;不管怎么样的开发工具对于一个团队来说,都应该有自己成熟的框架、规范、开发流程
    -------------------------------------------------------------------------------------
    认同XXSingle的观点,delphi虽然可能不久的将来要退出或暂时退出(大家可能都不想有这么一天:(),但是无论任何语言,工具,其核心的思想是一致的,
    现在我在框架里用到的一些思想,模式都是参考了.Net,Java等

    ydlchina
    实际上现在好像各种开发工具发展的最终目标是如何快速开发,而运行效率变成了其次,在追求速度,不要效率的时代,这是很正常的现象
    -------------------------------------------------------------------------------------
    认同,现在的各种开发工具,都会以快速开发为目标,从而各种开发工具会集成各种生成向导,生成工具(插件等),完成各种模型的定制,在现在这个硬件
    越来越便宜,硬件的更新速度完成能平衡软件在性能上的瑕疵。

    sdzeng
    1、说Delphi的开发方式对OO运用的比较少
    这一点根本站不住脚,如果思想没跟上,用了class一样写不出OO的代码
    -------------------------------------------------------------------------------------
    sdzeng说的没错,如果没有好的OO方面的思想或是工作经验,写不出什么来。我所说的是,现在DELPHI开发团队普遍存在的一个问题(可能是偶见到少的原因)
    ,在开发过程中,特别是应用系统开发,OO思想的运用是少之又少。

    2、说Delphi对MVC运用的少
    这是因为VCL根本就没有使用MVC,MVC不是灵丹妙药,本身也有很多问题
    好好想想,如果MVC够先进,C#为什么不用?
    VCL本身就不是MVC的,在VCL之上构筑MVC,是一件很费脑子的事,
    构造出来的东西是否优美,也得打个问号。
    如果脱离VCL,另搞一套组件框架,还得考虑生命期的问题,
    win32  api属于快被淘汰的东西,在它上面搞得再完美都没有多大价值
    而.net  framework本身已经很全了,
    基于它再封装一个框架,很容易跟VCL  .net一样,落个不尴不尬的地步
    -------------------------------------------------------------------------------------
    个人认为MVC还是一个比较好的思想,C#现在的3.5应该要把MVC加进来了!!!用MVC只是想把DELPHI的开发人员的思想从
    DELPHI固有的快速开发模式中解放出来,这样为以后使用其他语言及工具打好基础,可以想象,从JAVA <->c#比较容易,而从Delphi <->Eclipse,VS较难的

    3、搞VCL那种基础的框架是件费力不讨好的事,没有两把刷子最好不要轻易尝试
    像Hibernate、ECO那种面向特定领域和业务层面的框架倒是有可行性。
    -------------------------------------------------------------------------------------
    赞同,首先,我们团队的人员有限,精力有限,能力有限,所以对于框架最终能成什么样,我心里也没有底,但我想通过这次实践
    唤起大家对Delphi方面框架的支持,Delphi现在的地位已不如以前了,希望剩下的还从事DELPHI开发的朋友能够齐心做出一些东西
    来,为自已也好,为了延续DELPHI的生活也好,做出自已的一点贡献!!!

    关于框架,现在只讨论了界面,后续还有关于数据库层,业务层设计,我的想法是,最终做成一个工具,向导,自动完成数据库与执久化之间的转换,结合
    界面框架,自动完成一个程序雏形的建立,程序员只要写一些业务相关的逻辑,组合,判断等,就能完成一个小系统的开发!!! 希望大家能多提出一些宝贵意见!!!谢谢!!

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Bear_hx
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-27 22:22:4714楼 得分:0
    觉得VCL的代码是很优美的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • MartinWang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-28 21:14:2215楼 得分:0
    to Bear_hx :
    觉得VCL的代码是很优美的。
    ---------------------------------------
    VCL真的是美极了!!!!他是由美丽的Pascal写成的!!!呵
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xiaoxinpaigu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-28 21:56:0116楼 得分:0
    关于未来的东西,我们很难去想象,很多都是可以人为可以去改变的东西。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zxf_feng
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 3

    发表于:2007-12-29 09:44:2617楼 得分:0
    我觉得,在开发过程中,尽量的采用面像对像的思路去写,因为在实际的工作中每个人的想法,技术以及业务方面的理解都不太一样,所以只能尽量的去做喽.
    其实delphi的源码都是面向对像的,写的很好的.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • tjianliang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-29 11:24:5118楼 得分:0
    学习
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • byteh
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-29 12:14:2619楼 得分:0
    看了delphi的VCL源码,有助于理解其它的框架
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ipbdq
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-31 13:28:0420楼 得分:0
    我也来抢分
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • LSZ100
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-02 09:51:1421楼 得分:0
    UP
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kwer
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-02 16:34:5422楼 得分:0
    我的代码超级烂,很是苦恼,找不到解决问题的良方。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hutu024
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-02 17:40:2523楼 得分:0
    小弟很菜,但还是觉得VCL就像是一座宝藏,值得我们去挖掘!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • MartinWang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-02 21:18:4224楼 得分:0
    zxf_feng
    我觉得,在开发过程中,尽量的采用面像对像的思路去写,因为在实际的工作中每个人的想法,技术以及业务方面的理解都不太一样,所以只能尽量的去做喽.
    其实delphi的源码都是面向对像的,写的很好的.
    -------------------------------------------------------------------
    面向对象的方法就是一个能用的“框架”,但每个人的理解不一样,没有一个统一的规范,不象JAVA里的框架那样,将面向对象的一些思想“固化”,DAO,VO,PO等,以及Hibernate,IBatis等执久化框架为用户提供了一个标准的开发模式,DELPHI中传统的RAD开发,已经不适合现在的这个时代了!!
    Delphi的VCL确实很美,象花一样美,但我们有些人写的代码就象屎一样烂,最后呢,写出来的产品就是鲜花插在了面屎上,那是一种什么感觉,大体应该都清楚吧!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • MartinWang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-02 21:21:4925楼 得分:0
    希望大家能说点实质的,把自己的一些“货”都倒出来,晒一晒!!!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • MartinWang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-04 21:16:1326楼 得分:0
    顶一下:)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ZhuoJiao
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-26 16:37:5427楼 得分:0
    我是菜鸟,对楼主的话题很感兴趣!自己做的一些小东西,都是拖一拖控件,类也没用上,顶多用几个公共里单元,代码根本无法重用!

    帮楼主顶吧!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • MartinWang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-28 22:21:0028楼 得分:0
    关于数据层的相关设计思想已经放在博客中,有感兴趣的朋友请访问http://blog.csdn.net/martinwang
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • scfanxzq
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-01 10:30:4029楼 得分:0
    看了楼主写的东西,深有同感啊,从半年前开始,我接手了一个经过无数人修改之后的一个程序,Build一次的代码量就在30万行左右,10几个窗体,每个窗体都对应一个近万行的Pas文件,所有东西都放在click里面,从数据库里面取数、数据分析处理、数据显示,全部都在一个click里面完成,维护起来真是难于上青天。我现在也是希望能够重新进行设计,把数据层、业务层和显示层尽量分开,做出几个公共pas,提供各类不同的函数和方法。但是还没有一个很明确的想法,现在就泡在这里跟大家取经呢,还希望能跟楼主多交流:)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jjwwang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      2

    发表于:2008-02-01 10:45:5030楼 得分:0
    MARK
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • CDSoftwareWj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-01 11:17:2531楼 得分:0
    楼主的态度和对别人意见的认同部分都值得表扬 嘿嘿

    注意把握度,什么都放到你那个框架中不一定是好事

    好用,快速,方便就行了,不是所有的业务和界面都能提炼的

    其它我到是对于Delphi团队的开发意见是,平时开发时,多提炼

    多总结,多积累,以后的再开发会省时省力,不用非搞多大的

    框架才是最好,毕竟公司不是研究机构,把握度最好。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wisdosoft
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-01 15:25:4032楼 得分:0
    第一,对软件设计的分层考虑
    1。界面响应层。只提供界面和响应。不能有多余的逻辑实现,类似OnClick的事件只处理对低层逻辑类的方法调用。
    2。逻辑层。提供功能实现。不考虑文件存储结构。
    3。存储层。只提供文件存储结构。
    以上三层使用interface统一设计。这样可以使用三个开发小组分头负责,一个总设计师。总设计师必须规范interface.通常来说,界面改版最多,其次为逻辑,其次为文件。分层后代码维护比较方便。
    第二,对文档的分层管理。
    1。全局unit目录层。所有的项目公用,包含dll
    2。项目全局uint目录层。
        --项目资源
        --项目目标
    3。项目小组目录。

    设计固定的框架有时候会有很大的成本。而且业务针对性比较强。其实主要的是软件设计开始前准备工作不充分,临时改版多,会极大的造成代码和逻辑混乱。软件设计前的准备就是框架的雏形。并且最适合你。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ZhuoJiao
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-03 12:40:0433楼 得分:0
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Harryfin
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-03 14:49:0634楼 得分:0
    一直都认为DELPHI的开发要OO
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhouchunyu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-13 10:13:0835楼 得分:0
    帮你顶
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Mes_LHK
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-15 14:07:2536楼 得分:0
    加油 接分
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • MartinWang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-15 15:25:3037楼 得分:0
    感谢楼上几位的意见:
    1.现在的架构在测试,整合阶段,将对测试后的架构进行BPL打包,进行严格的版本管理,质量管理
    2.准备将一些常用的操作函数分类:字符串处理类(UnitStringUtil.pas),时间处理类,网络类等,仍然采用BPL打包
    3.不断将一些新的思想,新的函数加入,并对原有的一些BUG进行修改
    4.采用一些开源的工具进行整合,迭代,如:Svn实现最新代码的下载,Want实现自动编译,DUnit实现自动的单元测试,DLog自动记载日志,Dctd生成API文档,Want实现版本的自动上传,日志的自动发送
    后期:
    1.引入WEBService,Json等远程操作,REmObject等暂不考虑
    2.引入AOP,IOC的相关的特性,为FrameWork里增加此特性
    3.引入即时通讯组件,基于COM标准模式,实现扩业务系统(不是扩平台)的调用
    4.引入ROR,将ROR的敏捷特性发挥出来,由ROR负责服务器及业务的开发,DELPHI完成前端的开发
    .............
    5.扩平台的业务整合,Java,.Net,Python,Ruby等

    总之,将一些新的技术,新的特性,做为DEMO,组件,服务等引入到FrameWork中,为以后开发形成一整套的标准,演示,文档,模型等,加快开发速度,完善产品质量!!!!
    我在OSDN已做了申请,我将把上述的内容开源,希望大家真正参于进来!!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • PPower
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-15 21:21:4838楼 得分:0
    層是要分的,兩到三層就行了,因為層內部還可以再細分層,所以大的分層只要兩到三層就足夠了。

    上面提到的界面响应层。只提供界面和响应。不能有多余的逻辑实现,
    界面與邏輯往往是相關的,一個响应幾乎要對應一個界面邏輯,將業務邏輯與界面邏輯分離確是不易。因為如果完全分離,恐怕CS開發模式的對應的強大功能要大打折扣,CS方式的優點:軟件的易用性與功能強大,這不能丟,否則不如用BS方式開發程序了。

    建議界面响应层不作為框架出現,可作為程序庫方式提供。系統是否設計為"業務邏輯與界面邏輯分離"則交由實際系統來決定。

    只關注一個重點,要比面面俱到做得更好。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ZuoBaoquan
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-16 00:07:5139楼 得分:0
    楼主,你醒醒吧

    虽然你可能会骂我,不过我还是要说,你上面说的东西,除了一些空洞的技术和非常理想化的期望以外,我并没有看到什么特别有价值的东西。

    但是如果你真的要做,我也提提个人的建议:

    1. 制定简单明确的项目目标期望
    2. 集中所有资源做最有价值的部分
    3. 不要写重复的东西(比如,常用函数库),常用的操作函数直接使用JCL (JEDI Code Library)
    4. 初期不要考虑单元测试、API文档等等
    5. 尽早接受反馈和检验,及时调整方向和进度

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • MartinWang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-16 22:48:2340楼 得分:0
    to PPower :
    谢谢你的回复,界面层主要是
    1.完成系统的风格的制定(按钮摆放,大小,查询,统计,数据添加方式)
    2.完成界面的统一控制,采用消息(Message)或是回调(CallBack)方式实际界面、窗体间的弱耦合
    3.现在的设计及开发大部分时间是在业余时间进行的,所有在让人感觉比较乱,对于框架中的每一部分,都由很多个“点组成”,我也考虑到相关的点,争取能进行短期的迭代;
    to ZuoBaoquan :
    谢谢你的指正,希望能通过这个框架能使大家能够讨论一下框架及底层的东西
    1.  制定简单明确的项目目标和期望
    其实目标在上面已经提过,可能你觉得上面的目标有些不切实际或是不明确,其实上述列出的相关的技术我都进行过详细的预研,都进行过项目外的简单实践,如果能把团队开发人员定下来,接下来就是编写用户故事、迭代等
    2.集中所有资源做最有价值的部分
    我现在的想法是将一些先进的、流行的(不追着新技术走,就没法生存啊)技术,框架语言等能与现有的DELPHI结合在一起,让DELPHI程序员也能看到DELPHI的扩展性,系统兼容性等,为学习其他技术、语言提供一个实践,开发平台
    3.要写重复的东西(比如,常用函数库),常用的操作函数直接使用JCL  (JEDI  Code  Library)
    重复的东西是不会写的,特别是一切技巧性的东西,论坛里好早就讨论过这些东西,但是现成的东西间也存在对比,如字符串处理,QSTRING库就比其他的一些字符串处理要高效的多,通过这样不断的积累形成一整套不断更新的函数库,为开发人员提供标准的、分类明确的API
    4.初期不要考虑单元测试、API文档等等
    单元测试是一定要做的,最近一直在看敏捷,XP方面的东西,深知单元测试及TDD在开发中的重要性,且为其他人员提供DEMO及API应用示例,提高程序的质量,何乐而不为;API我前面说过了用DCTD,只要写标准的注释自动就会生成;
    5.  尽早接受反馈和检验,及时调整方向和进度
    我准备采用敏捷的方法进行开发,快速迭代,增加框架REAlease的速度,能让大家早看到东西,及时指正!!!

    再次感谢大家的意见及建议!!!
    PS:工作快6年了,在这段时间自己的感悟挺觉,最近在读周爱民(delphi的大大,大家应该知识吧)的大道至简,非常认同,对于面向过程,面向对象等做了详细的论述,还没看完,大家有时间也可以看看!!!会对程序开发有一个新的认识
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ZuoBaoquan
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-17 12:57:2641楼 得分:0
    LZ很谦虚,加油!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • suiyunonghen
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-17 13:33:1842楼 得分:0
    呵呵,我也正打算做一个小系统平台,目标是希望能够自定义界面,实现脚本控件流程,实现界面和数据库无关性,使其能针对各种大小型数据库.共同加油啊,顶你.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zzllabc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-17 15:05:3243楼 得分:0
    顶一下,佩服楼主的精神,虽然觉得没什么太大的实际价值,但如果可能的话,我也参与这个项目。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • luoyanqing119
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-17 15:33:1644楼 得分:0
    做系统架构的人很重要,试问能有几个人能有这种真正的才能——————都是些叫着经理啊,CTO的混蛋
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • syc_cs
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-17 20:12:0245楼 得分:0
    顶      UP      UP 
    狂接分!!!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • MartinWang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-17 21:39:3246楼 得分:0
    to suiyunonghen :
    目标是希望能够自定义界面,实现脚本控件流程,实现界面和数据库无关性
    1.框架里也会把这一部分加入的,我现在的项目中就采用此结构,由于项目的特殊性,采用此架构
    物理表----->物理字段------->数据表-------->数据字段----------->查询定义------------>表格样式定义------------>录入界面定义
      ||        ||              ||            ||                ||                    ||                      ||
    记录表名    记录字段名类型    虚拟表        虚拟字段              定义虚拟表的查询        定义虚拟表的样式          定义录入界面
    具体的结构如果有机会再和大家讨论,由于这个框架不是由我进行设计的,在开始使用的时候还是有一些地方比较麻烦,如果经过一次重构的话,相信无论从
    性能上还是易用性上都会有一个大的提高!!!用了这样的FrameWork,可以扩展到其他的应用平台(java,.net,PHP等)
    to zzllabc :
    感谢你的关注,到时会拉着你的,呵:)
    to luoyanqing119 :
    做系统架构的人很重要,----同意,架构是一个标准,一个思想,试问,如果人没有了思想,行事没有了标准会怎么样,更何况人编写的程序
    试问能有几个人能有这种真正的才能——————都是些叫着经理啊,CTO的混蛋
    -----其实不弄架构或是做技术的经理,CTO们所做的事,是上升到一定高度的,团队管理,建设,客户,内部关系协调,公司未来技术,产品路经制定
    等,这些才是一个软件公司的生存之本,如果都来弄程序,写架构,那么公司迟早会关门的,以上是个人愚见,有不对这处请见谅!!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • MartinWang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-03 21:16:0447楼 得分:0
    这几天忙没来看贴,看看大家还有没有什么想说的!!!最后我将根据大家的想法进行后续一些工作!!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sz9214e
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-04 19:49:5548楼 得分:0
    认同楼上各位高手的看法,难得遇到知音,希望能与大家为友,我先自我介绍一下:

    软件框架确实是软件的核心,这几年我也一直在不断完善升级自身的软件框架,我现有的框架,已拥有的功能有:

    1. 公用认证与通用权限管理模组,也就是说只要写一个窗体并封装成bpl放到我们主执行档下面就可以登记、注册并纳入权限管理体系;

    2. 通用报表定义模组,我是嵌入excel来完成报表模版设计,我们的erp中任何一个子系统中,都没有包含一行与报表有关的代码;

    3. 通用查询定义模组,所有的查询程式均可以透过工具进行建立并存于数据库(一样纳入权限管理),用起来与delphi写的一样;

    4. 整个系统均为三层结构,浏览器界面,主执行档实际上就是一个浏览器(还是bpl加载器),这样所写的任何模组(窗体),都可以跨互联网运行;

    5. 内含通用版本更新与控制工具,所有的系统均可以多层级分发,自动升级;

    6. 通用安装程式,自动繁简体转换等...

    有了这个框架,假如想编写一个如文档管理系统,那我们只需要编制3种程式:1.单据维护窗体;2.特殊运算窗体;3.后台逻辑组件;
    其它的与基本资料维护(单表)、各类查询统计程式、各类打印报表模版,安全认证,自动生成等功能,全部不用再做了。或者说一个库存管理系统,只要写10来个左右的pas文件,并封装成bpl放在主执行档的bin目录下,就可以成为一个很专业的系统了,这开发效率上升了好几倍(少做好多事)。

    当然,这套框架也有不足之处,其中比较烦的就是加载未知bpl的自动内存检测、后台app的对未知bpl的热加载/更新功能,一直没有设计得很理想,还有负载平衡的部分,也难以用最聪明的运算量动态均衡,而只能使用比较原始的用户数来均衡...

    以上是我的一点试验,献丑了!希望能抛砖引玉,有兴趣研究框架的,欢迎大家一起到我的群组深入讨论。

    我在CSDN的群组为:制造业ERP讨论组(网址:http://groups.csdn.net/ERP2008 )


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sz9214e
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-04 19:56:2549楼 得分:0
    补充一点,现在我正在研究Java相关技术,觉得Java的很多东西,在Delphi中都可以类似实现,比如Spring, 比如JBoss等,但比较烦的一件事就是我刚讲的,如何让执行环境可以加载未知bpl时,可以监控它的运行,特别是内存错误捕获、内存泄露检测,一直没有好的做法,不知大家有没有好的经验分享一下。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xiaocha
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-05 02:42:3850楼 得分:0
    DELPHI的特点是快速入门,开发迅速,
    但也有很多毛病,例如界面和代码的高度耦合就是一个很大的问题,写代码方便,维护困难。
    当然这不完全是DELPHI的责任,主要还是项目规划和设计的问题。

    举个例子,一个串口控制设备的程序,有20个按钮,实现多种功能的设备控制,每个差别很大。
        多数的做法是直接给每个按钮事件写代码,这个方法很快,但可维护性很差。

        如果设备多次升级修改协议(这是经常发生的事情),而且要兼容老的协议,
        你只能在每个事件中改进,整个文件越来越大,越来越复杂,看到都头痛,谈何维护。

        一个合适的做法是为设备建立一个单独的单元或动态库。
        设备每个升级都建一个新的单元或动态库,新的处理判断版本,不是新版本调用上个版本的函数,没有变化的调用也调用上个版本的函数,有变化的改进,最后简单的修改界面上的调用就搞定了。
        虽然敲的东西可能多些,但维护起来简单多了。

    另外,介绍一个我看过最好的DELPHI数据库开发的例子:
        一般的数据库开发,都是利用控件,再和数据库操作混在一起,稍复杂一点头晕的要命。

        我看过一个软件,把数据库操作抽象成各个功能调用Db_XXXX,分类成多个单元,
        而每个界面做了多个Show_XXXX函数,用于显示数据库信息,
        主界面多数实现只是调用Db_XXXX、Show_XXXX和很少必要的界面同步代码,
        这样的程序一看就是享受,不到一个小时一个很复杂的软件就看明白了,维护起来也很简单。

    这些都是我参与过或看过的东西,希望对大家有所启发:
        功能和界面不要过多的耦合,如果赶时间可以先做出了,有时间时一定要整理好。
        这样就不会见到这么多抱怨前任的帖子了,如果你写了一堆垃圾,别人也会抱怨你的 :)

    写完这些,又看了一遍帖子,感觉扩展DELPHI的一些实用功能是必要的,但没必要过多的追究DELPHI或VCL的不足,不足的只是我们。

    个人认为:软件开发是一种思想、经验、习惯的整合,
        思想:让我们明白我们要干什么,有哪几种方案可以实现
        经验:告诉我们各个方案的优缺点,确定一种方案
        习惯:让我们勤劳的写出整洁漂亮的代码

    如果你能完全明白,加上你的知识积累,你就可以跳出具体编程语言的框框,看到和善用各种编程语言的优点,规避它们的缺点,
    (Windows下很多好软件都是用VC实现功能,DELPHI、VB、BCB实现界面)

    --------------------------------------------------------------------------------------
    如果你翻出以前的代码,没看出多少让你厌恶的地方,你已经是高手了 :)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sz9214e
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-05 07:03:4551楼 得分:0
    楼上xiaocha所言"跳出具体编程语言的框框,看到和善用各种编程语言的优点,规避它们的缺点",非常有同感。

    每种语言均有其适用范围,针对具体的应用与环境使用相应的工具,是为上策。

    Delphi开发中的要点之一确实是“功能和界面不要过多的耦合”。

    不过楼主应该是为了讨论Delphi应用架构设计,您好像离题了些 ;)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • king_xing
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-05 07:56:4952楼 得分:0
    这么久还没结贴呀!
    我已经写了一个Bpl+dll+exe的开发框架,看到Lz很迷信Bpl,很不妥,有个建议:尽量把系统的功能接口化,接口的定义放在Bpl,实现用Dll,确保框架只有一个Bpl。每个具体不同的项目如果要做特定的公用部分也单独做一个Bpl。

    个人看法,BPL好是好,但每次改动框架,之前做的所有东西都得重编译,很是麻烦。
    因此有弃Bpl改用Com的想法
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sz9214e
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-05 12:52:4053楼 得分:0
    king_xing的想法不错,不过全部使用dll,开发效率应该是一个问题吧?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liangpei2008
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-05 14:55:3354楼 得分:0
    在VCL下实现MVC的确不容易~
    这样的框架大家给一个意见~
    1.用Delphi的Form做View
    2.把业务的逻辑规则写到Dll中做Controller
    3.把对象写在Bpl中做Model(用Dll比较烦,每个对象与函数都要做Export)
    这样把3层分开~
    1.在客户端处理对象时,需要把BPL类包加入
    2.在处理逻辑规则时,把Bpl载入,对业务逻辑的处理,处理后再通过RTTI与要执行的Action,将各对象的属性转为字段名,从而拼出SQL,来执行。
    3.层与层之间通过XML来传递。

    当客户端调用逻辑规则处理时,是通过COM+生成几个Interface来提供客户端调用的。在COM+调用时,要根据XML配置信息来处理并发连接数以及其线程同步等问题。

    Delphi 3层比较头痛的问题是同步更新问题,用消息主动通知机制就能解决该问题~目前还没实现。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liangpei2008
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-05 14:57:3655楼 得分:0
    在客户端与中间层进行交互时,用Facade模式会使程序更加清晰,明白
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • PPower
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-05 18:19:2456楼 得分:0
    模型,視圖,控制器
    模型是指對象模型,是由多個對象組成的,也就是多個相關的類組合成的對象體系,構成對象模型。對象模型必須由具體的軟件項目來實作。
    視圖,則是對象與用戶的交互界面,表現為對象的展現方式編輯方式。這部分可以歸納出一些常用的界面。
    控制器,不同的內容需要不同的交互界面,控制器是依據業務邏輯選擇生成對應的界面與用戶交互。

    界面中本身就包含一定的業務邏輯,強制性地將業務邏輯從界面中抽離是不值得提倡的。就說簡單的輸入校驗與自動帶出功能,這部分也該算一部分業務邏輯,如果非要通過控制器來實現這類功能,那麼WEB控制器就會選擇把相關的業務邏輯與界面混在一起生成網頁返回給用戶,這也說明界面代碼與邏輯代碼並非絕對隔離的。在一個一體化辦公界面中,需要界面邏輯混合。就如我們去政府的辦公中心,我們並不希望辦一個證件要經過多個部門簽字,希望一個事務簽一次字就行了。這時,主事務邏輯會包含很多個子邏輯,也有很多子界面來配合這些邏輯,如果將界面與邏輯完全隔離到不同的模塊中,完成一個事務可能就要點很多次“確定”,或者在事務進行中的邏輯錯誤要等到最後提交時才能判斷,導致用戶要退回操作,浪費操作時間,界面友好就談不上了。要實現友好界面,邏輯、界面、控制器就要被整合在一起,這些是界面與邏輯密切結合的例子,也是CS程序的強項。

      對象放在DLL中或者放在BPL中或者使用遠程對象,對於面向對象程序來說,並不影響對象間的關系,只影響代碼的組織形式。哪怕是全部整合在一個EXE中,照樣可以作出MVC架構的軟件。面向對象程序關注的是對象的屬性及其與相關對象是如何組成一個模型的。MVC本身就是一個模型,它設計的初始問題域是解決WEB界面的控制,所以在JAVA中被談得最多。如果Delphi程序完全參照Java的MVC模型來做,還不如使用Java來編寫來得更方便。面向對象程序重視是建立一個有效的對象體系解決實際問題,這些對象構成一個模型,問題在模型中得以解決。控制器則是對象模型中的一員,界面則是對象與用戶交互的場所。這樣的架構宏觀上就可以說是MVC架構了。

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sz9214e
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-05 21:50:4957楼 得分:0
    "哪怕是全部整合在一個EXE中,照樣可以作出MVC架構的軟件", 赞!

    凡事不要走极端,将所有的逻辑封在dll中,就有些过了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sxqwhxq
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-05 22:20:1358楼 得分:0
    能真正用好接口、类、Unit、bpl和dll,程序的结构会好很多。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • CDSoftwareWj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-06 09:45:5859楼 得分:0
    LZ再过两年 回头看看你就知道你多么有意思了 嘿嘿

    每种工具都有他适用的一方面,不适用就不要瞎搞,不如采用现有成熟的架构和语言

    搞商业软件开发和搞开源技术不一样,商业软件不能把用户当实验品,商业软件最好采用

    被业界长时间应用的自身成熟的框架,不是最新技术就是最好的解决方案

    如果是搞开源什么的研究和学习,使用新技术没有什么不好
    ----------------------------------------------------------------------
    总的来说,Delphi语言本身基本上从5.0,(更确切的说可以是2.0或3.0)之后就没有什么发展了,
    一直是在吃老本,该淘汰就要淘汰不要死抱着一种语言死搞,没意义
    Web时代,网络时代,夸平台时代(不只是操作系统,还要夸应用平台,比如手机等),Delphi这种
    原生程序开发生存空间将会越来越小,随着多媒体、图形处理向web浏览器迁移(.net的Silverlight,
    adobe的flex、flash等2D加速图形处理)一些小game将会出现在web浏览器中,随着技术的发展
    3D加速图形处理技术一定也会在web浏览器中实现,到时大型game就能直接在web浏览器中运行
    传统win32开发平台语言就又会没有生存空间 嘿嘿

    所以学习软件技术重要的是学习思想和实现的方法,使用什么语言去实现个什么反而是次要的了(但不是不重要)

    我从小记得“神辫”的一句话,“辫剪了,神留下”
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zwjchina
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-06 10:40:4160楼 得分:0
    除非Java之类的消失,否则win32不会消失的。

    不是技术原因,是商业原因。
    微软.net framework做得越好,对自己的打击越大。如果.net framework能完全替代 win32,那么也就意味着Java更大的成功。
    因为用Java开发的应用,只用通过增加一个简单的虚拟机就可以轻松移植到windows平台,那么对于windows,对于C#等等,都是
    巨大的冲击,这绝对不是微软希望看到的情况。

    所以,我认为.net framework必定会有他的局限性,这很可能是人为造成的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • CDSoftwareWj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-06 15:54:3361楼 得分:0
    win32 很长很长一段时间内不会消失,只能慢慢从应用层退到底层(系统层)

    现在汇编都没有消失,不过谁要是做web应用选汇编做开发工具,那不成了钻牛角尖了? 嘿嘿

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • CDSoftwareWj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-06 16:01:1662楼 得分:0
    蒲石 的一些观点不对头

    没有谁比谁更强大,只有谁比谁更适合,选什么工具要看什么环境,什么要求

    如果用户需要应用夸平台,java等夸平台工具是很适合,非选.net那就是自己找死
    如果用户只需要在win平台下工作,配合ms-office、ms-Exchange等等ms企业产品来工作,那选java之类的就是找死

    java 不比 .net 强大多少, .net 也不比 java 强大多少,

    只有适合不适合,单纯说什么比什么好是错误地
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • MartinWang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-06 21:57:1263楼 得分:0
    仔细看过楼上几位的回贴
    1.分层实现,bpl或是DLL只是一种方式,主要是取决于你的思想,你的模型的搭建,通过面向接口的方法实现,至于用什么来实现,可以根据实际情况,
    可以是bpl,Dll(Export),Remote,WebService等
    2.至于语言的问题,这里就不说了,为什么讲关于Delphi相关的一些东西,必竟这里看贴,回贴的大部分人对delphi是有感情的,如果要讨论.net,java就不在
    这里说了
    3.关于三层开发模式的问题个人认为关于逻辑设计方面已经没什么实质的问题,另一个方面就是传输层方面,Midas,RemObject等中间件有的是功能有限,有的是
    过于复杂,WebService对于Delphi存在先天的不足,所以一个好的传输中间件对于分布式应用,负载方面将起到核心作用,如果用delphi做一些千万级的大项目,则一个成熟,稳定的中间件将起到决定作用,这方面也是我们待解决的问题(服务层由delphi开发),我们现在采用的方案是java + xfire + tomcate +  delphi;其他方案基于rails + rest + json +delphi 的架构

    总之,我的想法是实现一个自动化的MIS框架,提供本文开始的一些内容,代码生成,向导开发,界面,表格自定义等,结合中间层,实现基于delphi的协议的传输,客户端实现一个解析器(类似于flex),有了这样的想法,c/s如此,b/s如此.....

    PS:喜欢 我从小记得“神辫”的一句话,“辫剪了,神留下”这句话,如果没猜错,CDSoftwareWj与本人年龄相仿,80后的人可能就不一定知道神辫了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • SeaverDing
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-08 10:57:1964楼 得分:0
    我觉得这种想法是很好的,但是在现在的这种情况下,可能已经不能完成了,原因如下:
    一个好的框架是需要不断进行维护的,而现在使用Delphi的人越来越少了,是否存在相应的人员来进行不断的维护是值得怀疑的,同时使用Delphi来完成的项目也越来越少了,没有了实践的机会,软件产品的生命力就不会强。
    我使用Delphi已经快10年了,对Delphi有很深的感情,原来也实现了一套非常完美的框架,在这个框架下完成一个类似模块的功能可以在10分钟以内完成,但是由于没有精力进行后续的维护,使得可供选择模板不多,导致了框架的停滞不前,虽然现在已经转到.Net下了,但是我觉得框架的思想是完全一样的,希望大家共同来探讨。
    同时祝愿还坚守在Delphi阵地的兄弟们好运!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • PPower
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-08 12:47:3265楼 得分:0
    專注於企業開發,應該從開發過程中提取模式,框架會隨著語言不同而無法適應新的環境,而行為模式與數據算法則是核心。不要撿了芝麻丟了綠豆。

    面向對象式開發與框架被作為一個對象,屬於整個對象體系中的一員。開發中遇到的問題如果沒有整理出模式,那麼在下次開發時,還是要手工再寫一次代碼。
    我贊成用對象支持一個個模式,當我們寫新的程序時,可以選擇使用哪些模式來構建我們的程序,遇到問題時,又可以選擇哪些現成的模式來解決問題。

    舉例說一下:開發中,常常要對數據進行分組統計,那麼該整理出分組統計這個模式所需要的核心數據,將其封裝,有了數據後才外掛一個常用界面。這樣只要填寫了需要的數據,就能利用現有的功能快速完成分組統計與顯示的要求,過濾也一樣。同理,數據字典解決一個DataSet要顯示哪些字段給用戶,每個字段該如何顯示的問題。而圖表模式則可以總結為給出數據,完成圖表的功能,報表也是如此。

    如果開發中常見的問題都能得到良好解決,那麼開發起來才能快速。就如要開發ERP,如果你沒有BOM解決模式,那麼生產管理系統將無法快速解決,人事系統中,如果你沒有總結歷史記錄問題,那麼面對該問題時也要花費一番時間。框架只是眾多問題模式中的一個,並不是很重要。

    一個對象由數據、算法與行為模式構成,多個對象再組成對象體系,組成一個解決實際問題的模型。我們要做的是不停地總結經驗加入我們的模式庫,程序框架要做的是對模式庫進行良好的代碼管理。這就是框架與對象的關系。對象模型的建立要比框架更重要,也更實際些。當換一種語言時,這些問題解決模式與寶貴經驗並不會失效,那就是看不見的財富,而已經寫好的模式庫就是看得的寶藏。

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sz9214e
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-08 20:12:1466楼 得分:0
    to liangpei2008(54楼):

    "在VCL下实现MVC的确不容易~
    这样的框架大家给一个意见~
    1.用Delphi的Form做View
    2.把业务的逻辑规则写到Dll中做Controller
    3.把对象写在Bpl中做Model(用Dll比较烦,每个对象与函数都要做Export)"

    MVC是一个好东西,但凡事不要过头,上述这段话值得商榷:

    所谓“聪明的程式员用Delphi",其实求的就是一个快速开发,不要为了所谓的规范而规范,规范的最终目的还是为了解决问题,而绝对不存在问题只有优点的方案是不存在的。

    不管用什么程式语言开发,重要的是心中有MVC,所谓“酒肉穿肠过,佛在心中留”也有其正面的意义。实际作业时,要看程式的应用场景与软件规模,若非要把Delphi程式做成绝对的MVC模式,就走过头了。

    在Button1OnClick中写一点业务逻辑代码,并不需要绝对禁止,什么标准都有其优缺点,如果非要说绝对的话:就是绝对不要否定任何做法,存在即有合理的成分。

    to MartinWang:
    楼主的开发计划我也很有兴趣,一直在关注此贴。
    本人的Delphi也算是菜鸟一级,但若您真有开源的想法,我希望能申请加入此项目。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zwjchina
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-10 10:45:0767楼 得分:0
    呵呵,to CDSoftwareWj
    我认为,Java是语言,.net是框架。是不具有可比性的。

    Java完全可以弄个虚拟机,让Java程序运行于.net平台框架之上。

    另外,我完全没有说哪个工具比另外一个好的意思。
    我想说的是,如果微软真的像.net最初设定的那样:
    完成一个通用的中间平台。所有开发语言都可以基于这个平台作开发,并且该平台能完成win32 api
    完成的所有工作,或者几乎所有工作。
    那么,微软是在帮 以Java为代表的开源群体。相对来实际是在打击自己,而这显然不是微软所希望的。

    我想表叙的是:也许微软有能力让win 32退出历史舞台,但是微软却没有足够的主观意愿让其退出历史舞台。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liangpei2008
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-10 11:28:5168楼 得分:0
    To:sz9214e
    如果我想单纯地用MVC,我不如用JAVA,有现成的框架我为何不用?
    选择Delphi我就选择它在前端的快速开发能力、界面友好能力等,我也没有否认业务层与View层绝对分离~
    我是将重要的业务处理放到业务层,实践证明,维护起来是很简单,方便的~

    每个语言都有其优缺点~
    发现并规避期缺点是重要的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • CDSoftwareWj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-10 20:13:5069楼 得分:0
    蒲石

    我只是不同意你说的 java +个.net环境下的虚拟机

    就能造成对于C#等等,产生巨大的冲击,如果真能这样,sun早出了 C#等等早死了

    现在也不会叫MS在.net开发平台下一家独大了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • CDSoftwareWj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-10 20:20:4670楼 得分:0
    还有,win32平台是开放的,java在win32平台上也有其虚拟机,不过我想如果在win32下C/S或B/S开发

    java也没有能力对C#等等语言产生巨大冲击,不要说在.net下了

    所以你说的“微软是在帮 以Java为代表的开源群体。相对来实际是在打击自己”

    这些不成立
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zwjchina
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-12 09:56:0171楼 得分:0
    我说的是需要有个前提的:
      .net完全替代了win32 api

    在这种情况下, C++, Delphi写的C/S代码执行效率和C#是同一层次的。
    那时,Java同样也是。那么C#对于Java的优势就并不明显。而另一方面,
    Java依旧保有跨平台的优势.

    对于微软来说,这显然是搬石头砸自己的脚。

    我这种想法源于较早时候看的一期《程序员》对微软.net framework主设计师的采访。
    大意是微软决策层改变了.net framework的设计初衷,与他的设计理念不符,因此他选择了辞职。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • CDSoftwareWj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-12 10:53:0372楼 得分:0
    蒲石

    不要说.net完全替代win32 api,现在就是在win32 api平台下,java也没有把其它语言

    挤的没有生存空间,java也没有优势明显,微软也没有在win32 api下搬石头砸自己的脚

    说win32 api下,Delphi/BCB等比java更有说服力吧,就算这样,MS也没有搬石头砸自己脚

    Delphi/BCB等是叫VB消失了还是叫VC消失了,大家还是该用VB用VB,该用VC用VC,该用Delphi用

    Delphi,该用BCB用BCB。

    就算.net完全替代win32 api,情况也是和win32 api平台下一样,大家“基本”都是一个起跑线

    只是在MS的平台,MS自己的当然会有一些优势,java跨平台是很不错是优势

    但又回到我前面说的话去了,“做什么应用,选什么工具”当然还要看公司的技术积累

    所以java不比其它语言多多少优势,java的运行平台也不比.net平台有多少优势,

    用什么要看“环境”

    蒲石 好好想想,我说够了 嘿嘿
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yongzhebuju
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-13 14:43:4673楼 得分:0
    都是高手,颇有同感,顶!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhouzuoji
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-13 16:16:5774楼 得分:0
    Win32 API会消失吗?.NET类库不就是借助Win32 API实现的,Win32平台上的JVM是用什么做底层实现的?你家建了上层会把下层拆除吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • MartinWang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-16 23:57:0275楼 得分:0
    呵,气氛热烈的很啊!!!
    感觉现在大家还是在讨论java的如日中天,delphi的末落,win32与.net之争,不必要谈这些了,这些都是几大巨头之间的事,咱们庶民就不要再跟着搅和了!!!呵:)还是讨论一下“思想”方面的问题!!!
    前些天,上网查东东的时候,无意间发现DHibernate的东东
    http://hi.baidu.com/rarnu/blog/item/dfe34bc2eb988f37e4dd3bcb.html
    简单看了一下,我与他做的底层方面的东西有很多相象的东西,但没有他做的那么强大,惭愧!!!
    我只实现了,PO生成器,表与Object之间的映射,思想,实现基本相同,通过生成的PO对象,利用rtti进行遍历存取
    单表的增删改查,SQL语句的执行,内存表管理(dxmemdataset)!!!
    讨论还要继续,希望大家能切入主题,关于代码的问题,我在整理,整理完后会发给大家的!!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • SmallHand
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-22 18:49:0876楼 得分:0
    斧头一把,能劈柴还是能做雕塑,看工匠的本领。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • suiyunonghen
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-22 22:38:1277楼 得分:0
    呵呵,那个我下载下来用过,蛮不错的,唯一一点就是那个界面方面不大方便,呵呵,据作者说有公司支持他,而
    那公司的重点尚未在界面设计上。
    关于界面设计的,我倒弄了一个,呵呵,大家可以来看看
    http://blog.csdn.net/suiyunonghen/archive/2008/01/03/2022856.aspx
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • meiZiNick
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-05-01 00:37:1978楼 得分:0
    我也想知道,正在找這方面的資料~~~~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • knowledge_Is_Life
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-05-01 13:53:4779楼 得分:0
    不知,帮顶
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hugoon
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-05-14 16:36:1180楼 得分:0
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • aderly
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-05-14 20:45:2281楼 得分:0
    要是能把 ado.net中的那些东东拿来用多好~~
    datetable中的计算 ,select方法,多好用~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • neozhn
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-05-31 15:31:5682楼 得分:0
    樓主項目進展如何呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kugoo_2006
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-06-01 07:53:5583楼 得分:0
    学习
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ziseyiran
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-09-26 15:57:4584楼 得分:0
    学习,受益匪浅
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dengxh10
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-10-14 16:34:1285楼 得分:0
    系统框架确实非常重要
    开发一个开型系统,在好的架框下就像如鱼得水
    反之就像逆水行舟,非常难。
    为了这个,我花费了很长时间研究系统框架,通过OOP思想,设计了一个非常不错的三层系统框架。
    在这个框架下开发了一个物流系统,开发环节非常顺利,现在维护也非常轻松,个人感觉这个功劳跟框架有很大的关系。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • life923
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-05 17:14:1086楼 得分:0
    最重要的是代码共享看看...............
    修改 删除 举报 引用 回复