2012-03-06 4 views
2

현재 우리는 Delphi 6로 작성된 몇 개의 프로젝트가 있습니다.이 프로젝트에서 사용하는 특정 구성 요소 (Delphi 6에서도 작성된 구성 요소) 때문에 새로운 버전으로 변환하는 것이 쉽지 않습니다.C#과 Delphi 통합

내가 .NET 개발을 선호하고 우리의 새 제품이. NET에서 개발되었으므로이 기술을 사용하여 새로운 기능을 개발하고 싶습니다. C#은 프로그래밍 언어가 될 것입니다.

내 질문은 : 어떻게 델파이에서 현재 코드와 C#에서 개발 된 새로운 기능을 통합 할 수 있습니까? 이 좋은 아이디어는 무엇이며 가능한 문제는 무엇입니까? 비슷한 경험을 가진 사람이라면 장점과 단점을 들어야합니다.

나는 C#으로 .dll을 개발하고 Delphi 코드에서 사용하기 위해 통합에 대해 들었습니다.

TnX 미리! 전화의

네마냐

+2

기본 옵션은 p/invoke가있는 DLL을 통해 Delphi 코드를 노출 시키거나 COM을 통해 노출시키는 것입니다. –

답변

6

두 가지 방법으로 COM (ActiveX)을 사용할 수 있습니다.

그렇습니다. C#에서 DLL을 만들고 COM으로 표시하고 Delphi로 가져올 수 있습니다.

하지만이 방법으로는 단순한 (COM이 아닌) DLL을 사용할 수 없습니다.

2

내 첫 번째 포트는 아마 WCF에보고 (C#으로 작성)과 델파이의 이야기가 될 것이다.

dll은 나쁜 생각이 아니지만 WCF에 넣는 것이 더 확장 성 있고 휴대 가능하다고 생각합니다.

+1

+1, 왜 downvotes? 대규모 응용 프로그램은 조만간 조만간 서비스/통신 계층을 포함하게 될 것입니다. – mjn

+0

WCF 및 Delphi 6,7 통신에 대한 경험이 있습니까? 몇 가지 예를 들려 줄 수 있습니까? – Sasha

1

RemObject에서 Hydra를 확인하고 싶을 수 있습니다. 네이티브 코드와 관리 코드를 동일한 응용 프로그램에서 사용할 수 있습니다.

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

+0

하지만 일반 Delphi 응용 프로그램에서 .Net 코드를 사용할 수 있습니까? – mjn

+0

예, .NET 어셈블리를 Delphi 응용 프로그램에서 사용할 수 있습니다. –

2

COM 아마 내 선택이 될 것입니다. 그러나 어떤 이유로 COM을 피하고 싶다면 Robert Giesecke의 매우 멋진 Unmanaged Exports을 살펴볼 수 있습니다.

관리되지 않는 내보내기는 기본적으로 .NET 어셈블리의 정적 함수를 일반 네이티브 DLL 내보내기로 내보낼 수있게 해주는 MSBuild 작업입니다.