2012-03-06 46 views
2

目前我们有几个项目是用Delphi 6编写的。由于这些项目中使用了特定的组件(组件也用Delphi 6编写),因此将其转换为新版本并不容易。因为我更喜欢.NET开发,而我们的新产品是用.NET开发的,所以我想开发使用这些技术的新功能。 C#将会是编程语言。C#和Delphi集成

我的问题是:如何将C#开发的新功能与Delphi中的当前代码集成?这是一个好主意,有什么可能的问题?如果有人有类似的经历,那就是听取优点和缺点。

我听说过使用C#开发.dll的集成方式,并且从Delphi代码中使用它。

TnX提前!

维迪奇

+2

主要选项通过p/invoke通过DLL暴露您的Delphi代码,或通过COM公开它。 – 2012-03-06 10:41:27

回答

6

您可以使用COM(ActiveX)两种方式。

所以,你可以在C#中创建一个DLL,并将其标记为COM可见并将其导入到Delphi中。

但是你不能用这种方式使用简单的(不是COM)DLL。

2

我的第一个停靠港很可能会寻找到WCF(C#编写),并有德尔福与它对话。

该dll不是一个坏主意,但我只是认为把它放在WCF是更具可扩展性+便携性。

+1

+1,为什么downvotes?无论如何,大型应用程序通常迟早会包括服务/通信层。 – mjn 2012-03-07 06:22:06

+0

您有任何WCF和Delphi 6,7通信方面的经验吗?你能提供一些例子吗? – Sasha 2012-06-18 20:10:26

1

您可能想要从RemObjects中检出Hydra。它允许在同一个应用程序中使用本地代码和托管代码。

http://www.remobjects.com/hydra/default.aspx

+0

但它允许从一个普通的Delphi应用程序中使用.Net代码吗? – mjn 2012-03-07 06:19:06

+0

是的,它可以使.Net程序集在Delphi应用程序中使用 – 2012-03-07 21:26:33

2

COM可能会是我的选择。然而,如果由于某种原因你想避免COM,你可以看看Robert Giesecke非常漂亮的Unmanaged Exports

非托管导出是一个MSBuild任务,它基本上允许您导出静态函数从您的.Net程序集中作为普通的本地DLL导出来使用。