什么是Hydra?
Hydra是一個(gè)應(yīng)用程序框架,它允許開發(fā)人員創(chuàng)建模塊化應(yīng)用程序,可以在同一個(gè)項(xiàng)目中混合管理的(.NET和Java)和非托管(Delphi和Island)代碼,創(chuàng)建無(wú)縫的用戶體驗(yàn),同時(shí)結(jié)合來(lái)自任意一個(gè)平臺(tái)的最佳技術(shù)。
Hydra通過(guò)讓開發(fā)人員在同一應(yīng)用程序中無(wú)縫集成這兩個(gè)平臺(tái)來(lái)彌補(bǔ)非托管Delphi代碼與Microsoft.NET和Silverlight平臺(tái)之間的差距,無(wú)論是在新的.NET應(yīng)用程序中重用Delphi代碼,還是使用在.NET、Silverlight或FireMonkey中創(chuàng)建的新部件擴(kuò)展現(xiàn)有Delphi VCL應(yīng)用程序。
結(jié)合Delphi和.NET
如今,許多Delphi開發(fā)者都考慮遷移到.NET平臺(tái),要么利用其先進(jìn)的開發(fā)能力和更好的語(yǔ)言,要么利用諸如Windows Presentation Foundation(WPF)或LINQ這樣的新技術(shù)。同時(shí),他們也有理由猶豫不決,不愿放棄對(duì)其大量Delphi代碼庫(kù)的現(xiàn)有投資。
Hydra(假如在一個(gè)Delphi, .NET和Island的SKU中)使您能夠保持對(duì)現(xiàn)有本地Delphi代碼庫(kù)的投資,同時(shí)將應(yīng)用程序打開到托管插件。這允許在.NET中進(jìn)行新的開發(fā),例如使用C#、Oxygene、Visual Basic.NET或任何其他可用于.NET的語(yǔ)言。

同時(shí),現(xiàn)有的代碼可以在Delphi中保存和維護(hù),并且這兩個(gè)部分都可以作為一個(gè)統(tǒng)一的應(yīng)用程序貢獻(xiàn)給最終用戶。
這使得在現(xiàn)有的基于Delphi的應(yīng)用程序框架中使用新興的.NET技術(shù)成為可能。例如,您可能決定使用在.NET3.0中介紹的硬件加速Windows Presentation Foundation(WPF)或XE2的新FireMonkey實(shí)現(xiàn)花式圖表?;蛘吣赡芟M诜强梢晹?shù)據(jù)處理代碼中利用LINQ等技術(shù),并在Delphi應(yīng)用程序中顯示結(jié)果。
Hydra也有助于逐步將應(yīng)用程序完全遷移到.NET。開發(fā)人員可以從模塊化其現(xiàn)有的Win32代碼庫(kù)開始,并使用.NET代碼或端口選擇模塊將其擴(kuò)展到.NET,在那里它最有意義(例如,那些仍然看到最活躍的開發(fā)并將從使用基于.NET的新開發(fā)技術(shù)中獲益最多的模塊)。
逐漸地,他們可以選擇隨著時(shí)間的推移以自己的速度移植和替換剩余的模塊(甚至是主機(jī)應(yīng)用程序)。一旦所有部分都被移植,他們可以繼續(xù)以混合模式處理項(xiàng)目,或者最終遷移到完全管理的解決方案。
結(jié)合Delphi和Island
另一個(gè)有趣的場(chǎng)景,Hydra 5中的新場(chǎng)景,是用新的代碼編譯器擴(kuò)展Delphi應(yīng)用程序,在Elements 9.1或更高版本中使用Elements的New Island平臺(tái)。

使用Island,Delphi開發(fā)人員可以開始使用Oxygene(與Delphi在風(fēng)格上類似,但更具表現(xiàn)力和先進(jìn)性)或C#和Swift編寫的代碼擴(kuò)展其應(yīng)用程序,而不會(huì)放棄100%不受管理的好處。Island代碼本機(jī)將CPU編譯為x64或i386程序集(就像Delphi一樣),并且不需要任何運(yùn)行時(shí)。但它仍然為您提供了更現(xiàn)代語(yǔ)言的所有寬度和語(yǔ)言特性,以及Elements RTL和Delphi兼容類庫(kù)(Delphi RTL)。
從用Oxygene編寫的幾個(gè)Island插件開始,這是讓您體驗(yàn)Oxygene的完美方式,也是比以往任何時(shí)候都更有成效的編碼方式。
結(jié)合.NET和Island
同樣,.NET開發(fā)人員也會(huì)發(fā)現(xiàn),用本地的Island插件擴(kuò)展現(xiàn)有的.NET應(yīng)用程序非常有趣,無(wú)論是C#語(yǔ)言還是Oxygene語(yǔ)言,都能使用他們已經(jīng)使用并喜愛的完全相同的語(yǔ)言。
將一些本地代碼塊添加到應(yīng)用程序中(例如,已被調(diào)整為以本地代碼運(yùn)行的算法),或訪問硬件并必須運(yùn)行非托管的比特(而不必學(xué)習(xí)新語(yǔ)言和/或直接跳到C++)。
結(jié)合NET與Java
在Hydra 6中,.NET主機(jī)還支持Java插件的嵌入,使用Visual(使用Swing小部件)和非Visual(在場(chǎng)景后面運(yùn)行基于Java的邏輯)。Hydra負(fù)責(zé)托管Java虛擬機(jī)和其他所有東西。
結(jié)合VCL和FireMonkey
使用Delphi XE2,Embarcadero引入了FireMonkey,這是一個(gè)使用非托管Delphi代碼構(gòu)建豐富的3D和基于矢量的圖形用戶界面的新框架,與WPF在.NET端提供的功能相當(dāng)。不幸的是,VCL和FireMonkey不能很好地混合,因此再次要求開發(fā)人員放棄對(duì)VCL應(yīng)用程序代碼的現(xiàn)有投資,以采用新技術(shù)。
Hydra通過(guò)允許開發(fā)人員將FireMonkey用戶界面與現(xiàn)有的VCL應(yīng)用程序無(wú)縫集成,或者反過(guò)來(lái)將現(xiàn)有的VCL用戶界面添加到新的FireMonkey應(yīng)用程序中,為這個(gè)問題提供了解決方案。FireMonkey代碼甚至可以與在不同版本的Delphi中編譯的VCL代碼一起使用,因此它們可以使用新的FireMonkey功能擴(kuò)展Delphi 7 VCL應(yīng)用程序,而無(wú)需將整個(gè)項(xiàng)目移植到XE2。
當(dāng)然,這也可以與.NET和Silverlight插件一起使用,如有必要,您可以將VCL、FireMonkey、WinForms、WPF和Silverlight的所有內(nèi)容組合到同一應(yīng)用程序中。

平臺(tái)間交流
使用不同開發(fā)平臺(tái)創(chuàng)建的插件和主機(jī)可以使用您可以定義的自定義接口進(jìn)行無(wú)縫交流,并且通過(guò)Delphi和Visual Studio中Hydra的IDE集成,可以在兩個(gè)平臺(tái)之間無(wú)縫地移植這些接口定義。
您可以在Delphi代碼中定義自定義接口,并讓Hydra的工具鏈分析代碼,以在C#、VB、Oxygene或任何其他.NET語(yǔ)言中生成必要的接口定義?;蛘吣梢栽?NET中定義接口,并讓Hydra將它們導(dǎo)入到Delphi項(xiàng)目中。
主機(jī)和插件可以使用這些接口進(jìn)行交流,而無(wú)需了解平臺(tái)的差異。
Hydra主機(jī)平臺(tái)
Hydra應(yīng)用程序由插件和主機(jī)組成,兩者都可以使用各種不同的開發(fā)工具和可以無(wú)縫組合的UI框架來(lái)實(shí)現(xiàn)。本頁(yè)介紹Hydra支持的三種不同的主機(jī)平臺(tái);每種類型的主機(jī)都可以使用所有支持的插件平臺(tái)。
Delphi的可視組件庫(kù)(VCL)
現(xiàn)在Hydra最常見的使用案例可能是一個(gè)用Delphi編寫的主機(jī)應(yīng)用程序,它使用VCL和托管插件,這些插件也可以用VCL創(chuàng)建,或者使用我們支持的任何其他插件平臺(tái)。創(chuàng)建此類應(yīng)用程序的常見原因和方案包括:
希望構(gòu)建一個(gè)動(dòng)態(tài)應(yīng)用程序,只需添加符合相同定義良好的API的附加插件即可使用新功能進(jìn)行擴(kuò)展(無(wú)論是否利用不同的插件平臺(tái))。
需要擴(kuò)展現(xiàn)有的DelphiVCL應(yīng)用程序,使其具有使用其他平臺(tái)更容易或更方便實(shí)現(xiàn)的元素,例如在編寫新代碼時(shí)利用WPF、Silverlight或FireMonkey的豐富UI功能或.NET語(yǔ)言的技術(shù)優(yōu)勢(shì)。
通過(guò)首先將舊Delphi應(yīng)用程序模塊化,然后將各個(gè)插件移植到.NET(可選地由宿主應(yīng)用程序本身的端口結(jié)束)來(lái)啟動(dòng)其零碎端口到.NET的能力。
能夠使用Oxygene(或C#)的更現(xiàn)代的語(yǔ)言特性來(lái)擴(kuò)展Delphi應(yīng)用程序的某些部分,同時(shí)仍然使用本機(jī)代碼和Island。

»»VCL主機(jī)可以使用Delphi7和更高版本創(chuàng)建。從DelphiXE2開始,主機(jī)除了支持Win32外還可以支持Win64。
.NET的Windows窗體
與VCL for Delphi一樣,到目前為止,WinForms是使用.NET平臺(tái)上的標(biāo)準(zhǔn)Windows用戶界面控件創(chuàng)建應(yīng)用程序的流行框架。將WinForms應(yīng)用程序轉(zhuǎn)換為Hydra主機(jī)的原因包括:
希望使用WPF或FireMonkey擴(kuò)展具有用戶界面元素的WinForms應(yīng)用程序,這些元素更容易或更方便地實(shí)現(xiàn),例如為數(shù)據(jù)可視化或其他目的添加視覺豐富和令人驚嘆的圖形。
需要重用Delphi中實(shí)現(xiàn)的遺留業(yè)務(wù)邏輯或表單,而無(wú)需移植到基于.NET的語(yǔ)言。
提供一個(gè)模塊化應(yīng)用程序,通過(guò)添加額外的插件(無(wú)論是純粹基于WinForms還是利用任何其他插件平臺(tái))可以動(dòng)態(tài)擴(kuò)展新功能。
通過(guò)協(xié)調(diào)主機(jī)應(yīng)用程序,完成了傳統(tǒng)Delphi應(yīng)用程序到.NET平臺(tái)的零碎端口。
包括在.NET應(yīng)用程序中通過(guò)Swift的Oxygene forIsland,通過(guò)C#編譯為CPU本機(jī)代碼的代碼或算法。

»»WinForms主機(jī)可以在Visual Studio中使用C#、Oxygene、Swift和VisualBasic.NET以及任何其他可用于.NET框架的兼容CLR的語(yǔ)言創(chuàng)建。
Delphi的 FireMonkey
FireMonkey是Delphi XE2中最新的框架,后來(lái)創(chuàng)建了豐富的基于矢量的用戶界面和3D圖形,類似于.NET的Windows演示文稿基礎(chǔ),使用Win32或Win64 Delphi代碼。
在新FireMonkey應(yīng)用程序中重用使用VCL的現(xiàn)有業(yè)務(wù)邏輯或表單,Delphi不支持這種現(xiàn)成的應(yīng)用程序。*
創(chuàng)建一個(gè)可擴(kuò)展的應(yīng)用程序,該應(yīng)用程序可以在運(yùn)行時(shí)從符合應(yīng)用程序定義的一組公共API的插件加載新功能(無(wú)論它們都是基于FireMonkey的,還是利用其他技術(shù))。
通過(guò)使用.NET、Silverlight或Island平臺(tái)更容易或更方便地實(shí)現(xiàn)的元素?cái)U(kuò)展FireMonkey應(yīng)用程序,例如利用更多現(xiàn)代語(yǔ)言(如Oxygene或C#)的技術(shù)優(yōu)勢(shì)和高級(jí)功能,而不是Delphi代碼。

»»FireMonkey主機(jī)可以使用Delphi XE2或更高版本創(chuàng)建,并且支持Win32和Wn64。
(沒有Hydra,Delphi應(yīng)用程序要么使用VCL,要么使用FireMonkey,沒有在同一項(xiàng)目中混合這兩種技術(shù)的規(guī)定,更不用說(shuō)在同一形式上了。)
關(guān)于主機(jī)應(yīng)用程序的內(nèi)容已經(jīng)足夠多了;請(qǐng)繼續(xù)閱讀下方關(guān)于插件的更多信息:
Hydra插件平臺(tái)
Hydra應(yīng)用程序由一個(gè)加載單個(gè)插件的主機(jī)應(yīng)用程序組成,要么作為主機(jī)應(yīng)用程序的一部分安裝,要么單獨(dú)分發(fā)。主機(jī)和插件可以(但不是必須)使用不同的開發(fā)平臺(tái)和UI技術(shù)編寫。
有兩種不同的場(chǎng)景可以讓您在應(yīng)用程序中利用hydra插件:
創(chuàng)建一個(gè)可擴(kuò)展的應(yīng)用程序,可以在運(yùn)行時(shí)加載各種插件。例如,音頻應(yīng)用程序可能從插件DLL加載其他篩選器。
為最終用戶嵌入不同的技術(shù),使其看起來(lái)像一個(gè)整體應(yīng)用程序。例如,使用WPF以圖形方式可視化數(shù)據(jù)的VCL業(yè)務(wù)應(yīng)用程序。
Island
在Hydra 6中,您可以通過(guò)在.NET應(yīng)用程序中托管舊Java代碼和使用Java的Hydra創(chuàng)建的可視化或非可視化Java插件(使用Oracle的Java編譯器或Elements)。
»» 可以使用任何Java開發(fā)工具創(chuàng)建Java插件,包括IntelliJ或Eclipse,以及在Fire、Water或Visual Studio中使用Elements。

»» 可以在VisualStudio和Flash中使用Oxygene、C#、Swift或Java創(chuàng)建Island插件。
Silverlight
自版本4以來(lái),Hydra允許您使用Silverlight創(chuàng)建可視化插件,并將它們嵌入到WinForms、VCL或FireMonkey主機(jī)應(yīng)用程序中。這允許您在基于Silverlight的Web應(yīng)用程序或Windows Phone應(yīng)用程序與桌面應(yīng)用程序之間共享代碼。

例如,您可以在Silverlight中為項(xiàng)目的Web前端創(chuàng)建一個(gè)豐富的數(shù)據(jù)輸入表單,并在桌面應(yīng)用程序中重用使用Delphi的VCL或FireMonkey或使用.NET的WinForms創(chuàng)建的相同表單。
»»Silverlight插件可以在Visual Studio中使用C#、Oxygene for.NET Visual Basic .NET或Swift創(chuàng)建。
FireMonkey
此外,在該版本中,還提供了對(duì)在Delphi XE2或更高版本中創(chuàng)建的FireMonkey插件和主機(jī)的支持。
FireMonkey是一個(gè)新的框架,它是由Embarcadero創(chuàng)建的,它使用Win32或Win64 Delphi代碼來(lái)創(chuàng)建基于矢量的用戶界面和3D圖形(在.NET的Windows演示基礎(chǔ)上設(shè)計(jì))。
打開就能用,Delphi不支持在同一個(gè)應(yīng)用程序中混合傳統(tǒng)的VCL和FireMonkey,但是有了Hydra,您現(xiàn)在可以在VCL應(yīng)用程序中嵌入用FireMonkey創(chuàng)建的可視化插件,以及所有其他插件技術(shù)。此外,還可以在基于WinForms的.NET主機(jī)應(yīng)用程序中嵌入FireMonkey插件。

例如,您可能希望使用FireMonkey豐富的三維選項(xiàng)創(chuàng)建三維模型的可視化表示,并將其嵌入到使用VCL或WinForms構(gòu)建的更傳統(tǒng)的業(yè)務(wù)線應(yīng)用程序中。
»»FireMonkey插件可以使用Delphi XE2或更高版本創(chuàng)建,同時(shí)支持Win32和Win64。
Windowspresentation Foundation(WPF)
類似于新的FireMonkey框架,Windows Presentation Foundation(簡(jiǎn)稱WPF)是一個(gè)現(xiàn)代的基于矢量的UI框架,用于創(chuàng)建豐富和令人驚嘆的用戶界面,利用現(xiàn)代圖形和3D效果。
WPF最初是在.NET 3.0中引入的,它緩慢但穩(wěn)定地取代WinForms作為.NET開發(fā)人員的標(biāo)準(zhǔn)UI模型。
Hydra允許您將基于WPF的插件嵌入到VCL、WinForms和FireMonkey主機(jī)應(yīng)用程序中。例如,您可能希望使用WPF可用的令人驚嘆的圖表組件之一創(chuàng)建一個(gè)視覺豐富的圖表視圖,并將其嵌入到使用常規(guī)WinForms或VCL創(chuàng)建的現(xiàn)有業(yè)務(wù)應(yīng)用程序中。

»»WPF插件可以在Visual Studio中使用C#、Oxygene for.NET, Visual Basic .NET或Swift以及任何其他可用于.NET框架的兼容CLR的語(yǔ)言創(chuàng)建。
可視化組件庫(kù)(VCL)
自1995年Delphi首次發(fā)布以來(lái),Visual Component Library(簡(jiǎn)稱“VCL”)一直是為Windows開發(fā)優(yōu)秀用戶界面的標(biāo)準(zhǔn)方法,因此它毫不夸張地說(shuō),Hydra完全支持使用VCL創(chuàng)建插件,這兩種插件都嵌入到VCL主機(jī)中(可能與其他插件技術(shù)(如WPF或Silverlight),但也存在于使用新FireMonkey或.NET的WinForms創(chuàng)建的主機(jī)應(yīng)用程序中。
例如,您可能在Delphi中創(chuàng)建了一些現(xiàn)有的用戶界面,希望在新的基于WinForms的應(yīng)用程序中重用,而不需要用.NET語(yǔ)言重寫UI和基礎(chǔ)代碼;或者,您可以將VCL代碼包裝在一個(gè)插件中,以便與使用.NET或FireMonkey創(chuàng)建的插件在VCL AP中透明和可互換地使用。
»»VCL插件可以使用Delphi7和更高版本創(chuàng)建。從DelphiXE2開始,插件可以支持Win64和Win32。

Windows窗體
雖然逐漸被WPF取代,但WinForms仍然是使用.NET開發(fā)人員的標(biāo)準(zhǔn)Windows小部件構(gòu)建Windows用戶界面的默認(rèn)框架,并為構(gòu)建應(yīng)用程序UI提供了豐富的第一方和第三方組件環(huán)境。Hydra允許您將WinForms UI封裝在插件中,并將其嵌入非托管Delphi VCL和FireMonkey主機(jī)應(yīng)用程序,以及(通常與使用其他技術(shù)創(chuàng)建的插件一起)在WinForms應(yīng)用程序中。

例如,您可能希望通過(guò)使用.NET和WinForms編寫新代碼來(lái)擴(kuò)展現(xiàn)有的Delphi應(yīng)用程序,并將其與現(xiàn)有代碼庫(kù)一起使用,這可能是為了將應(yīng)用程序的現(xiàn)有部分逐段移植到.NET。
»»WinForms插件可以在Visual Studio中使用C#、Oxygene for.NET和Visual Basic.NET以及任何其他可用于.NET框架的符合CLR的語(yǔ)言創(chuàng)建。
非可視插件
除了上面描述的所有可視化插件格式之外,Hydra還允許您創(chuàng)建僅包含業(yè)務(wù)邏輯或其他您可能希望在平臺(tái)之間共享的功能的非可視化插件。非可視插件可以使用自定義接口公開其功能;它們可以使用.NET或Delphi實(shí)現(xiàn),并且這兩種插件都可以在任一類型的主機(jī)應(yīng)用程序中使用。

例如,您可能已經(jīng)在Delphi中實(shí)現(xiàn)了現(xiàn)有的業(yè)務(wù)代碼,希望在基于.NET的新應(yīng)用程序中重用這些代碼,而無(wú)需將其移植到Oxygene或C#。或者您可能發(fā)現(xiàn)了一些用C#語(yǔ)言編寫的偉大的開源代碼,它們可以解決您需要解決的問題,并且您希望在基于Delphi的應(yīng)用程序中使用這些代碼?;蛘?,您可能希望在Oxygene中實(shí)現(xiàn)一些核心業(yè)務(wù)邏輯代碼,然后在Android、WindowsPhone7和Delphi應(yīng)用程序之間共享它。
»»可在Visual Studio中使用C、.NET的Oxygene、Swift和VisualBasic.NET以及任何其他可用于.NET框架的符合CLR的語(yǔ)言創(chuàng)建托管非Visual插件。
»»非托管非可視插件可以使用Delphi7和更高版本創(chuàng)建,也可以在Elements9.1或更高版本中使用C#、Oxygene和Swift創(chuàng)建。當(dāng)使用Delphi XE2或更高版本或Elements創(chuàng)建插件時(shí),插件可以支持Win64(除了Win32)。
插件平臺(tái):32位和64位
從Delphi XE2(及更高版本)開始,Hydra支持使用VCL和FireMonkey為64位Windows平臺(tái)創(chuàng)建非托管插件(和主機(jī))。在使用包含Elements的Island平臺(tái)時(shí),還支持64位插件。
在單個(gè)進(jìn)程中,Windows不允許混合32位和64位代碼,因此主機(jī)應(yīng)用程序和插件的位必須匹配——Delphi Win32主機(jī)應(yīng)用程序只能承載32位編譯的插件,反之,Delphi Win64應(yīng)用程序只能承載64位編譯的插件。由于.NET插件(默認(rèn)情況下)與CPU無(wú)關(guān),因此它們通常可以托管在32位或64位主機(jī)中。
默認(rèn)情況下,.NET主機(jī)可以在32位和64位下運(yùn)行,這由運(yùn)行它們的操作系統(tǒng)平臺(tái)和硬件決定;根據(jù)運(yùn)行.NET主機(jī)的位,它只能加載與其位匹配的Delphi或Island插件。為了確??梢约虞d非托管插件,可以在兩個(gè)版本中分別為32位和64位提供它們,也可以使用托管主機(jī)項(xiàng)目中的適當(dāng)標(biāo)志將托管主機(jī)應(yīng)用程序強(qiáng)制為特定的CPU類型。
京ICP備09015132號(hào)-996 | 違法和不良信息舉報(bào)電話:4006561155
© Copyright 2000-2026 北京哲想軟件有限公司版權(quán)所有 | 地址:北京市海淀區(qū)西三環(huán)北路50號(hào)豪柏大廈C2座11層1105室
北京哲想軟件集團(tuán)旗下網(wǎng)站:哲想軟件 | 哲想動(dòng)畫