2013-08-21 19 views
7

Jesteśmy bliscy napisania usługi internetowej w języku C#, która ujawni funkcjonalność zawartą w natywnej aplikacji GUI Delphi. Dlaczego miałbym wybrać zawijanie kodu Delphi w rodzimej bibliotece dll i dlaczego miałbym chcieć opakować go w serwer COM? Innymi słowy: jakie czynniki należy wziąć pod uwagę przy wyborze jednego z nich? Interesują mnie czynniki związane z kodowaniem, debugowaniem, (zautomatyzowanym) testowaniem, wdrażaniem (instalacja u klientów) i wydajnością (narzut?).Dlaczego miałbym raczej używać natywnego dll lub serwera com do wywoływania kodu Delphi z C#?

+1

Czy nie można po prostu re-write funkcjonalności w C#? Brzmi jak koszmar utrzymania! – Belogix

+0

To brzmi jak koszmarny projekt, czy kod delphi jest w exe czy podzielony na biblioteki? W każdym razie, serwery COM wymagałyby instalacji na kliencie, gdzie biblioteka C musiałaby być po prostu dołączona do reszty plików. – CurlyPaul

+0

@Bogogix: To może być/jest celem końcowym, ale w tej chwili nie jest opcją ograniczenia czasowe, w których jesteśmy. Alternatywą byłoby stworzenie usługi internetowej Delphi, ale dostępność programistów mówi, że musimy przejść w stronę C#. –

Odpowiedz

3

COM dodaje kilka istotnych zalet w stosunku do zwykłego DLL:

  • Wsparcia dla OOP (klas, interfejsów)
  • automatycznego zarządzania pamięcią na smyczki (BSTR), tablic i obiektów (poprzez interfejsy)
  • Nie ma potrzeby korzystania z wywoływania platformy po stronie .NET

Więc chciałbym wybrać COM.

Aby użyć klasy Delphi w .NET przy użyciu biblioteki DLL, musisz spłaszczyć klasę po stronie Delphi i przewinąć ją po stronie .NET, co jest dość brzydkie.

Wiele artykułu Rudy w sprawie Delphi i C++ kod C# dotyczy także:

http://rvelthuis.de/articles/articles-cppobjs.html

+0

Dobre punkty, dzięki. Czy widzisz jakieś wady korzystania z COM (oprócz konieczności rejestracji serwera COM podczas instalacji)? –

+2

Zwykły DLL może ujawnić wskaźnik interfejsu klientowi w taki sam sposób, jak robi to serwer COM. – OnTheFly

+1

W nowszych wersjach systemu Windows dostępna jest również wersja bez rejestracji. –