网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
苛评VCL: 穿不透的类型
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式
   BuilderChen 发表于2007-02-08 09:34:18  IP: 192.168.32.*
这也不能算Delphi的缺陷吧。不同语言的具体实现根本不同,怎么能保障相通呢?所以COM/DLL的设计思路就是通过接口来实现不同语言间的互通,必定要屏蔽不同语言的实现细节。你反过来又要用这个来传递Delphi的特定实现,这跟COM/DLL的思路根本相反了,那你还要用DLL干吗呢?直接用Bpl得了。反过来,Bpl建立在Delphi的实现上,提供了你想要的,但这也是Bpl无法代替DLL推广开来的原因。
象Lz的情况,如果要使用DLL,那么就应该使用通用的基本类型,复杂类型则用接口暴露出来,而不应该使用Delphi自己的类。

#   xiammy 发表于2007-02-08 10:22:24  IP: 218.249.220.*
早期版本的Delphi包的扩展名不是BPL而就是DLL。
——————————
这个确实不知道,学习!

#   wr960204 发表于2007-02-08 17:55:47  IP: 61.235.75.*
而且穿不透的类型应该是MS的DLL机制的问题。不应该算到VCL头上吧。

#   monkeyking1983 发表于2007-02-09 10:38:20  IP:
我觉得还应该考虑一些商业的东西。很多比微软好的产品都没有流行起来,为什么?不是Borland不想,而是他实在没办法。我也一直在看楼主的文章。感觉楼主虽然一直坚持评论,但是很多看问题的角度欠缺公允(如果说得有些不恰当还望楼主海涵),有些问题可能得站在更高的角度去审视。我觉得Delphi的有些问题不见得是没有想到,而是不能为之。本来Delphi VCL的设计相对当时的软件业来说已经比较超前了,而且他又要考虑到很多兼容问题。还有一个很关键的问题,恐怕我们也不能忽略。在我看来,其实Delphi后续版本的开发是有断层的。还记得李维是如何解释为什么Delphi里独特的类实例创建语法么? AObject := TObject.Create;
最初Anders是想实现垃圾回收机制,看看,这又是一个相当超前的设计。但是,后来Anders走了。Chuck走了。连接手Anders的小Danny也走了。那么最初Turbo Pascal,以及由它延续下来的Delphi核心团队的设计和理想谁去实现?在这种复杂的人事变动面前,Borland公司还能如此保持Delphi的纯洁性,我觉得已经是一个很了不起的事情了,Borland的工程师确实很棒。在我用Delphi之前,一直都在使用Turbo Pascal,从Delphi那里可以看到很多在TP中就有了的思想甚至是相同的类型构架。也许,核心团队的散失,真的让Borland失去了太多。

#   xiammy 发表于2007-02-09 14:11:18  IP: 218.249.220.*
to monkeyking1983: 很好。至于我的角度是否欠缺公允,很有可能。不过我说缺点并不是批判缺点。事实上李维先生的Inside VCL中已经有很多夸奖VCL的话了。我这里只是希望能对VCL进行一个完整的认识做一些贡献。

#   aimingoo 发表于2007-02-09 14:40:52  IP: 61.172.241.*
1. 这个问题不是所谓的类型问题,也不应该是在DLL内去解决的问题。如同BuilderChen所说,不认当把一个特定的OOP实现框架暴露在DLL的接口层,这样会使得这个DLL失去了共用代码的性质。

2. BPL通过DLL导出函数的方式使得不同的模块间可以使用同一个RTL。从本质上来说,它就是一种失去了通用性质的DLL。如同第一条所述的,它们的应用场合、背景和功能都有了差异。不能苛求说:要公用代码,还要公用OOP框架。这一点,Borland做不到,M$也做不到,因为没有哪两个OOP框架的实现方案是一样的。

3. “没有哪两个OOP框架的实现方案是一样的”的原因,基本上可以归结为共用代码的级别是在语言层,而非二进制代码层。所以COM宣称它的代码共用是在二进制代码层,就得到了更多的支持。同样,你也会发现COM的代码互用产生了比DLL更多的价值。——Windows的应用层基本上都构架在COM之上。

4. 二进制代码层的共用仍是有限的,因为它仍然受到硬件系统和编译系统的约束。所以COM的支持有几家,但也不是说就大一统了。更进一步的共用是在描述层,也就是说:与具体的语言和编译环境无关层面的共用。这表现在两个方面,一是接口,二是XML。接口是对代码功能的约束,XML是对代码交互的约束。你会看到,更多的厂商支持XML和接口(我这里不是指COM接口),就是因为大家都看到了这样做的价值:足够的抽象,以及没有强制性的实现要求。

5. 绕了一个圈子,我想说的是,楼主用一种纯为技术实现和使用的方式来考虑和评估架构的设计,用现在的环境下的需求来评估十年前的架构的设计。前者会使看问题不够深入,后者会有失公允。同样的一个“共用代码”和“OOP体系设计”的问题,在当前的理论研究和技术实现下的确可以有更佳的方案,但这并不是旧的架构的弊误或疏漏,而是新的应用环境产生的需求。

6. 楼主所谈论到的一些(我是说包括其它的几篇文章中的)问题,的确是DELPHI自身的局限,但大多数算不上问题。尤其是在DELPHI所适用的应用环境中,更是算不上问题。DELPHI的OOP、VCL以及COM实现方面的架构,能被广泛地使用上十年八年,不是没有它的道理的。而我们自身的架构设计能力,能保证一套系统(哪怕仅是一个OA)或者一个架构(哪怕仅是一个插件机制)能有效地使用上一年两年的,又有几个呢?因此我们大多数时候如同以管窥豹,所见者,斑斑点点而已。

7. 楼主现在的评论,有点为苛评而苛评的意思了。

#
  • 上一篇资讯: 苛评VCL: Amingoo的留言
  • 下一篇资讯: 苛评VCL: 孤独的Application
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号