2009-03-13 3 views
1

저는 리눅스의 모노 리모팅과 통신하는 Windows WinForms 앱을 가지고 있습니다. 그것은 모노의 system.data.dll을 얻을 수 있고 .net에 내장 된 대신 윈도우에서 사용할 수 있습니까?Windows에서 모노의 시스템 데이터 만 사용할 수 있습니까?

이진 형식의 remotingformat을 사용하고 양쪽 끝이 제대로 serialize/deserialize 할 수 있는지 확인하고 싶습니다.

답변

2

Microsoft의 .Net 설치를 손상시키지 않으면 서이 문제를 해결할 수 있습니다. CLR이 DLL을로드하려고 시도 할 때마다 항상 호환되는 버전이 있으면 GAC에서 가져옵니다.

WinForms는 여러 경우에 System.Data.dll을 암시 적으로로드하며 CLR은 GAC 검사를 수행합니다. WinForms의 MS 버전을 사용하는 경우이 버전은 GAC에있는 MS 버전으로 해결됩니다. GAC를 수정하지 않고이를 중단 할 방법이 없습니다.

모든 MS 어셈블리는 AFAIK, 모노가 복제 할 수없는 개인 키로 서명됩니다. 따라서 DLL을 내장 된 GAC DLL보다 먼저로드 할 수있는 방법이 없어서이를 대체 할 방법이없는 것처럼 보입니다.

0

모노가 사양을 따르고 있다면, MS와 바이너리 호환이 가능해야합니다. IIRC의 경우입니다.

실제로 문제가 있다면 클라이언트 측에서 모노도 사용하지 않는 것이 어떻습니까?

+0

.net의 winforms 구현에는 아무런 문제가 없으므로 remotingformat이 xml 형식이 아닌 binary 형식 인 경우에도 serialization/deserialization이 보장되므로 양쪽 모두 공통 System.Data를 사용하려고합니다. – Hao

1

Mono 어셈블리는 Windows뿐만 아니라 Linux 및 Mac에서도 잘 작동합니다. 다양한 방법으로 Mono 어셈블리를이 방법으로 몇 번 사용했습니다.

Windows에서 전체 Mono 클라이언트를 사용하는 것은 항상 바람직하지 않습니다. Windows 클라이언트는 .net 클라이언트와 다른 런타임 동작을하기 때문에 항상 바람직하지 않습니다. Microsoft CLR과 같은 수준의 성능과 기능 (모든 시간이 점점 더 가까워지고 있지만)은 그리 높지 않습니다.

관련 문제