什么是Hydra?
Hydra是一个应用程序框架,它允许开发人员创建模块化应用程序,可以在同一个项目中混合管理的(.NET和Java)和非托管(Delphi和Island)代码,创建无缝的用户体验,同时结合来自任意一个平台的最佳技术。
Hydra通过让开发人员在同一应用程序中无缝集成这两个平台来弥补非托管Delphi代码与Microsoft.NET和Silverlight平台之间的差距,无论是在新的.NET应用程序中重用Delphi代码,还是使用在.NET、Silverlight或FireMonkey中创建的新部件扩展现有Delphi VCL应用程序。
结合Delphi和.NET
如今,许多Delphi开发者都考虑迁移到.NET平台,要么利用其先进的开发能力和更好的语言,要么利用诸如Windows Presentation Foundation(WPF)或LINQ这样的新技术。同时,他们也有理由犹豫不决,不愿放弃对其大量Delphi代码库的现有投资。
Hydra(假如在一个Delphi, .NET和Island的SKU中)使您能够保持对现有本地Delphi代码库的投资,同时将应用程序打开到托管插件。这允许在.NET中进行新的开发,例如使用C#、Oxygene、Visual Basic.NET或任何其他可用于.NET的语言。
同时,现有的代码可以在Delphi中保存和维护,并且这两个部分都可以作为一个统一的应用程序贡献给最终用户。
这使得在现有的基于Delphi的应用程序框架中使用新兴的.NET技术成为可能。例如,您可能决定使用在.NET3.0中介绍的硬件加速Windows Presentation Foundation(WPF)或XE2的新FireMonkey实现花式图表。或者您可能希望在非可视数据处理代码中利用LINQ等技术,并在Delphi应用程序中显示结果。
Hydra也有助于逐步将应用程序完全迁移到.NET。开发人员可以从模块化其现有的Win32代码库开始,并使用.NET代码或端口选择模块将其扩展到.NET,在那里它最有意义(例如,那些仍然看到最活跃的开发并将从使用基于.NET的新开发技术中获益最多的模块)。
逐渐地,他们可以选择随着时间的推移以自己的速度移植和替换剩余的模块(甚至是主机应用程序)。一旦所有部分都被移植,他们可以继续以混合模式处理项目,或者最终迁移到完全管理的解决方案。
结合Delphi和Island
另一个有趣的场景,Hydra 5中的新场景,是用新的代码编译器扩展Delphi应用程序,在Elements 9.1或更高版本中使用Elements的New Island平台。
使用Island,Delphi开发人员可以开始使用Oxygene(与Delphi在风格上类似,但更具表现力和先进性)或C#和Swift编写的代码扩展其应用程序,而不会放弃100%不受管理的好处。Island代码本机将CPU编译为x64或i386程序集(就像Delphi一样),并且不需要任何运行时。但它仍然为您提供了更现代语言的所有宽度和语言特性,以及Elements RTL和Delphi兼容类库(Delphi RTL)。
从用Oxygene编写的几个Island插件开始,这是让您体验Oxygene的完美方式,也是比以往任何时候都更有成效的编码方式。
结合.NET和Island
同样,.NET开发人员也会发现,用本地的Island插件扩展现有的.NET应用程序非常有趣,无论是C#语言还是Oxygene语言,都能使用他们已经使用并喜爱的完全相同的语言。
将一些本地代码块添加到应用程序中(例如,已被调整为以本地代码运行的算法),或访问硬件并必须运行非托管的比特(而不必学习新语言和/或直接跳到C++)。
结合NET与Java
在Hydra 6中,.NET主机还支持Java插件的嵌入,使用Visual(使用Swing小部件)和非Visual(在场景后面运行基于Java的逻辑)。Hydra负责托管Java虚拟机和其他所有东西。
结合VCL和FireMonkey
使用Delphi XE2,Embarcadero引入了FireMonkey,这是一个使用非托管Delphi代码构建丰富的3D和基于矢量的图形用户界面的新框架,与WPF在.NET端提供的功能相当。不幸的是,VCL和FireMonkey不能很好地混合,因此再次要求开发人员放弃对VCL应用程序代码的现有投资,以采用新技术。
Hydra通过允许开发人员将FireMonkey用户界面与现有的VCL应用程序无缝集成,或者反过来将现有的VCL用户界面添加到新的FireMonkey应用程序中,为这个问题提供了解决方案。FireMonkey代码甚至可以与在不同版本的Delphi中编译的VCL代码一起使用,因此它们可以使用新的FireMonkey功能扩展Delphi 7 VCL应用程序,而无需将整个项目移植到XE2。
当然,这也可以与.NET和Silverlight插件一起使用,如有必要,您可以将VCL、FireMonkey、WinForms、WPF和Silverlight的所有内容组合到同一应用程序中。
平台间交流
使用不同开发平台创建的插件和主机可以使用您可以定义的自定义接口进行无缝交流,并且通过Delphi和Visual Studio中Hydra的IDE集成,可以在两个平台之间无缝地移植这些接口定义。
您可以在Delphi代码中定义自定义接口,并让Hydra的工具链分析代码,以在C#、VB、Oxygene或任何其他.NET语言中生成必要的接口定义。或者您可以在.NET中定义接口,并让Hydra将它们导入到Delphi项目中。
主机和插件可以使用这些接口进行交流,而无需了解平台的差异。
Hydra主机平台
Hydra应用程序由插件和主机组成,两者都可以使用各种不同的开发工具和可以无缝组合的UI框架来实现。本页介绍Hydra支持的三种不同的主机平台;每种类型的主机都可以使用所有支持的插件平台。
Delphi的可视组件库(VCL)
现在Hydra最常见的使用案例可能是一个用Delphi编写的主机应用程序,它使用VCL和托管插件,这些插件也可以用VCL创建,或者使用我们支持的任何其他插件平台。创建此类应用程序的常见原因和方案包括:
希望构建一个动态应用程序,只需添加符合相同定义良好的API的附加插件即可使用新功能进行扩展(无论是否利用不同的插件平台)。
需要扩展现有的DelphiVCL应用程序,使其具有使用其他平台更容易或更方便实现的元素,例如在编写新代码时利用WPF、Silverlight或FireMonkey的丰富UI功能或.NET语言的技术优势。
通过首先将旧Delphi应用程序模块化,然后将各个插件移植到.NET(可选地由宿主应用程序本身的端口结束)来启动其零碎端口到.NET的能力。
能够使用Oxygene(或C#)的更现代的语言特性来扩展Delphi应用程序的某些部分,同时仍然使用本机代码和Island。
»»VCL主机可以使用Delphi7和更高版本创建。从DelphiXE2开始,主机除了支持Win32外还可以支持Win64。
.NET的Windows窗体
与VCL for Delphi一样,到目前为止,WinForms是使用.NET平台上的标准Windows用户界面控件创建应用程序的流行框架。将WinForms应用程序转换为Hydra主机的原因包括:
希望使用WPF或FireMonkey扩展具有用户界面元素的WinForms应用程序,这些元素更容易或更方便地实现,例如为数据可视化或其他目的添加视觉丰富和令人惊叹的图形。
需要重用Delphi中实现的遗留业务逻辑或表单,而无需移植到基于.NET的语言。
提供一个模块化应用程序,通过添加额外的插件(无论是纯粹基于WinForms还是利用任何其他插件平台)可以动态扩展新功能。
通过协调主机应用程序,完成了传统Delphi应用程序到.NET平台的零碎端口。
包括在.NET应用程序中通过Swift的Oxygene forIsland,通过C#编译为CPU本机代码的代码或算法。
»»WinForms主机可以在Visual Studio中使用C#、Oxygene、Swift和VisualBasic.NET以及任何其他可用于.NET框架的兼容CLR的语言创建。
Delphi的 FireMonkey
FireMonkey是Delphi XE2中最新的框架,后来创建了丰富的基于矢量的用户界面和3D图形,类似于.NET的Windows演示文稿基础,使用Win32或Win64 Delphi代码。
在新FireMonkey应用程序中重用使用VCL的现有业务逻辑或表单,Delphi不支持这种现成的应用程序。*
创建一个可扩展的应用程序,该应用程序可以在运行时从符合应用程序定义的一组公共API的插件加载新功能(无论它们都是基于FireMonkey的,还是利用其他技术)。
通过使用.NET、Silverlight或Island平台更容易或更方便地实现的元素扩展FireMonkey应用程序,例如利用更多现代语言(如Oxygene或C#)的技术优势和高级功能,而不是Delphi代码。
»»FireMonkey主机可以使用Delphi XE2或更高版本创建,并且支持Win32和Wn64。
(没有Hydra,Delphi应用程序要么使用VCL,要么使用FireMonkey,没有在同一项目中混合这两种技术的规定,更不用说在同一形式上了。)
关于主机应用程序的内容已经足够多了;请继续阅读下方关于插件的更多信息:
Hydra插件平台
Hydra应用程序由一个加载单个插件的主机应用程序组成,要么作为主机应用程序的一部分安装,要么单独分发。主机和插件可以(但不是必须)使用不同的开发平台和UI技术编写。
有两种不同的场景可以让您在应用程序中利用hydra插件:
创建一个可扩展的应用程序,可以在运行时加载各种插件。例如,音频应用程序可能从插件DLL加载其他筛选器。
为最终用户嵌入不同的技术,使其看起来像一个整体应用程序。例如,使用WPF以图形方式可视化数据的VCL业务应用程序。
Island
在Hydra 6中,您可以通过在.NET应用程序中托管旧Java代码和使用Java的Hydra创建的可视化或非可视化Java插件(使用Oracle的Java编译器或Elements)。
»» 可以使用任何Java开发工具创建Java插件,包括IntelliJ或Eclipse,以及在Fire、Water或Visual Studio中使用Elements。
»» 可以在VisualStudio和Flash中使用Oxygene、C#、Swift或Java创建Island插件。
Silverlight
自版本4以来,Hydra允许您使用Silverlight创建可视化插件,并将它们嵌入到WinForms、VCL或FireMonkey主机应用程序中。这允许您在基于Silverlight的Web应用程序或Windows Phone应用程序与桌面应用程序之间共享代码。
例如,您可以在Silverlight中为项目的Web前端创建一个丰富的数据输入表单,并在桌面应用程序中重用使用Delphi的VCL或FireMonkey或使用.NET的WinForms创建的相同表单。
»»Silverlight插件可以在Visual Studio中使用C#、Oxygene for.NET Visual Basic .NET或Swift创建。
FireMonkey
此外,在该版本中,还提供了对在Delphi XE2或更高版本中创建的FireMonkey插件和主机的支持。
FireMonkey是一个新的框架,它是由Embarcadero创建的,它使用Win32或Win64 Delphi代码来创建基于矢量的用户界面和3D图形(在.NET的Windows演示基础上设计)。
打开就能用,Delphi不支持在同一个应用程序中混合传统的VCL和FireMonkey,但是有了Hydra,您现在可以在VCL应用程序中嵌入用FireMonkey创建的可视化插件,以及所有其他插件技术。此外,还可以在基于WinForms的.NET主机应用程序中嵌入FireMonkey插件。
例如,您可能希望使用FireMonkey丰富的三维选项创建三维模型的可视化表示,并将其嵌入到使用VCL或WinForms构建的更传统的业务线应用程序中。
»»FireMonkey插件可以使用Delphi XE2或更高版本创建,同时支持Win32和Win64。
Windowspresentation Foundation(WPF)
类似于新的FireMonkey框架,Windows Presentation Foundation(简称WPF)是一个现代的基于矢量的UI框架,用于创建丰富和令人惊叹的用户界面,利用现代图形和3D效果。
WPF最初是在.NET 3.0中引入的,它缓慢但稳定地取代WinForms作为.NET开发人员的标准UI模型。
Hydra允许您将基于WPF的插件嵌入到VCL、WinForms和FireMonkey主机应用程序中。例如,您可能希望使用WPF可用的令人惊叹的图表组件之一创建一个视觉丰富的图表视图,并将其嵌入到使用常规WinForms或VCL创建的现有业务应用程序中。
»»WPF插件可以在Visual Studio中使用C#、Oxygene for.NET, Visual Basic .NET或Swift以及任何其他可用于.NET框架的兼容CLR的语言创建。
可视化组件库(VCL)
自1995年Delphi首次发布以来,Visual Component Library(简称“VCL”)一直是为Windows开发优秀用户界面的标准方法,因此它毫不夸张地说,Hydra完全支持使用VCL创建插件,这两种插件都嵌入到VCL主机中(可能与其他插件技术(如WPF或Silverlight),但也存在于使用新FireMonkey或.NET的WinForms创建的主机应用程序中。
例如,您可能在Delphi中创建了一些现有的用户界面,希望在新的基于WinForms的应用程序中重用,而不需要用.NET语言重写UI和基础代码;或者,您可以将VCL代码包装在一个插件中,以便与使用.NET或FireMonkey创建的插件在VCL AP中透明和可互换地使用。
»»VCL插件可以使用Delphi7和更高版本创建。从DelphiXE2开始,插件可以支持Win64和Win32。
Windows窗体
虽然逐渐被WPF取代,但WinForms仍然是使用.NET开发人员的标准Windows小部件构建Windows用户界面的默认框架,并为构建应用程序UI提供了丰富的第一方和第三方组件环境。Hydra允许您将WinForms UI封装在插件中,并将其嵌入非托管Delphi VCL和FireMonkey主机应用程序,以及(通常与使用其他技术创建的插件一起)在WinForms应用程序中。
例如,您可能希望通过使用.NET和WinForms编写新代码来扩展现有的Delphi应用程序,并将其与现有代码库一起使用,这可能是为了将应用程序的现有部分逐段移植到.NET。
»»WinForms插件可以在Visual Studio中使用C#、Oxygene for.NET和Visual Basic.NET以及任何其他可用于.NET框架的符合CLR的语言创建。
非可视插件
除了上面描述的所有可视化插件格式之外,Hydra还允许您创建仅包含业务逻辑或其他您可能希望在平台之间共享的功能的非可视化插件。非可视插件可以使用自定义接口公开其功能;它们可以使用.NET或Delphi实现,并且这两种插件都可以在任一类型的主机应用程序中使用。
例如,您可能已经在Delphi中实现了现有的业务代码,希望在基于.NET的新应用程序中重用这些代码,而无需将其移植到Oxygene或C#。或者您可能发现了一些用C#语言编写的伟大的开源代码,它们可以解决您需要解决的问题,并且您希望在基于Delphi的应用程序中使用这些代码。或者,您可能希望在Oxygene中实现一些核心业务逻辑代码,然后在Android、WindowsPhone7和Delphi应用程序之间共享它。
»»可在Visual Studio中使用C、.NET的Oxygene、Swift和VisualBasic.NET以及任何其他可用于.NET框架的符合CLR的语言创建托管非Visual插件。
»»非托管非可视插件可以使用Delphi7和更高版本创建,也可以在Elements9.1或更高版本中使用C#、Oxygene和Swift创建。当使用Delphi XE2或更高版本或Elements创建插件时,插件可以支持Win64(除了Win32)。
插件平台:32位和64位
从Delphi XE2(及更高版本)开始,Hydra支持使用VCL和FireMonkey为64位Windows平台创建非托管插件(和主机)。在使用包含Elements的Island平台时,还支持64位插件。
在单个进程中,Windows不允许混合32位和64位代码,因此主机应用程序和插件的位必须匹配——Delphi Win32主机应用程序只能承载32位编译的插件,反之,Delphi Win64应用程序只能承载64位编译的插件。由于.NET插件(默认情况下)与CPU无关,因此它们通常可以托管在32位或64位主机中。
默认情况下,.NET主机可以在32位和64位下运行,这由运行它们的操作系统平台和硬件决定;根据运行.NET主机的位,它只能加载与其位匹配的Delphi或Island插件。为了确保可以加载非托管插件,可以在两个版本中分别为32位和64位提供它们,也可以使用托管主机项目中的适当标志将托管主机应用程序强制为特定的CPU类型。
京ICP备09015132号-996 | 网络文化经营许可证京网文[2017]4225-497号 | 违法和不良信息举报电话:4006561155
© Copyright 2000-2023 北京哲想软件有限公司版权所有 | 地址:北京市海淀区西三环北路50号豪柏大厦C2座11层1105室