为什么创建VCL for .NET? -- Delphi编译器架构师撰文
日期:2007年5月2日 作者: 查看:[大字体 中字体 小字体]-
摘要:为什么Borland创建VCL for .NET?什么时候你该使用VCL for .NET而不是.NET系统本身的的Windows Forms框架?
Delphi 8 for .NET在Delphi社群中引起了极大的关注!人们在新闻组,聊天室,以及用户们的小型聚会中频繁地谈论.NET基础架构,谈论它与我们都熟悉的Win32平台的关系。
其中一个热点话题是Delphi8的VCL for .NET。大部分争论似乎都集中在这个问题上:在这个宏大的规划中,VCL for .NET的目的是什么?它是一个短期的移植桥梁还是一个长期的应用框架。为什么Borland要创建这些东西来和微软的WinForms竞争?这是明智之举还是缺乏谨慎?
安静一下吧,没有必要再为这个问题争论不休了,真的。原因如下。
背景
微软的.NET框架提供了一个硬件中立的执行环境和语言无关的类型系统。这很好,但是要产生基于Windows操作系统的客户端应用程序还不够。.NET还包括了Windows窗体("WinForms")应用框架来为WIN32操作系统创建图形界面应用程序。熟悉在Delphi或C++Builder中的 Borland VCL应用程序架构的程序员们将会在.NET的WinForms框架中找到许多曾经相识的设计模式。这并不很奇怪:就像Anders Hejlsberg所说的那样,“是好机制那为何不用呢”。
虽然VCL与WinForms之间有很多相似之处,但实质上要移植现有的Win32 VCL应用程序到WinForms上是非常困难的,也是很痛苦的。而且这将限制采纳新的思路。相应的(软件)工具的销售也会带来同样的问题。
.NET是一个新的平台。在软件行业中,甚至所有新的活动都基于.NET,相对于现存的和正在进行的Win32开发而言,.NET应用程序开发仍只是很小的一部分。我们早些时候关于客户对于.NET平台兴趣的调查,非常清楚地表明,许多Borland客户对于.NET是一种不确定的兴趣,他们承担不起放弃在Win32平台上的所有投资的代价,而完全在新的.NET平台上从头开始。今天仍然如此,而且这种情形还将持续多年。
在Delphi 8 for .NET中创建一个WinForms是轻而易举的。现有的Delphi开发者们告诉我们:“这很好,但是我们能用它来为我们的VCL代码做什么呢?这些代码都是以前创建的,我们的业务都依赖于这些代码。”
为了让我们的客户更加满意,并且让.NET平台对于现有的Delphi开发者来说更加有吸引力,需要有一些东西来填补现存的Win32开发与新的.NET开发之间的鸿沟。它需要像.NET框架本身一样是一个纯粹的.NET,它还需要提供一个与现有Win32 VCL结构之间的高度兼容性。为了吸引现有的VCL开发者, Delphi for .NET需要的是一个在.NET平台上的实现的VCL。
我们首先考虑了在WinForms框架的之上实现VCL。在一些初步研究之后,事情变得很清楚,使得移植VCL应用程序到WinForms上很困难的架构差异,同样也使得很难在WinForms框架之上再建造一个VCL层,并且按照VCL的方式工作。
在我们评估WinForms的过程中,我们注意到WinForms其实是建立在Win32 API调用之上的。WinForms 窗口类调用CreateWindow()创建Wind32窗口句柄,它们勾住Win32的WndProc函数来侦听窗口消息,并且在类中触发相应的事件,等等,等等。
它们的工作原理就像VCL一样
如果在被托管的.NET代码中进行Win32 API调用对.NET框架适用,那么它对VCL也同样适用。这样,在.NET平台上实现VCL的过程就变成了找出如何进行Win32 API调用的方法,这是现存的VCL架构所依赖的,同时在我们可管理的范围内,又要对VCL自身代码的修改最少。 - [1] [2] [3] 下一页
-
- 为什么创建VCL for .NET? -- Delphi编译器架构师撰文 相关文章:
- ·为什么创建VCL for .NET? -- Delphi编译器架构师撰文
- 为什么创建VCL for .NET? -- Delphi编译器架构师撰文 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
精品推荐
热点TOP10
- ·Delphi下的ADO使用方法!
- ·在Delphi中实现数据分析模块的动态报表
- ·在Delphi中控制扫描仪
- ·用拼音首字符来实现检索功能
- ·让Delphi的DBGrid支持鼠标轮
- ·自 动 隐 藏 的 声 象 按 钮
- ·OpenGL简介
- ·用Delphi制作动态有声标签
- ·从 实 例 看 Delphi 4 中 的 动 态
- ·Delphi中为DBGrid控件添加色彩
- ·常用的BCB & Delphi 函数
- ·产生不重复随机数的简便算法
- ·陈经韬2002原创资料
- ·Delphi2005试用版安装指南
- ·Delphi中ListBox控件的六种特效
- ·第三方控件使用方法
- ·关于SMTP和POP3使用及关于客户-服务端的自动连线问题
- ·关于MP3中的ID3V2格式探讨及我写的ID3V2读取源码
- ·监视打印机部分线程内容
- ·获取其他进程中ListView的文本
