2010-08-14 11 views
5

Chcę wiedzieć cel .NET i COM,Czy .NET zastępuje COM?

  • Czy .NET ma ten sam cel, jak w COM? Ponieważ głównym celem COM jest umożliwienie interoperacyjności językowej, tak jak w przypadku .NET?
  • Jeśli tak, dlaczego wiele firm wciąż używa COM dla swoich projektów deweloperskich?
  • Czy warto uczyć się COM, kiedy możemy korzystać z .NET?
+0

Powiązane http://stackoverflow.com/questions/2280639/is-net-all-com-underneath –

Odpowiedz

6
  1. Jednym z powodów było to, że COM jeśli opracowali biblioteka C++ w Borland C++ Builder nie można go używać w VB6. Ale nie można go używać w VC6 (COM jest o wiele starsze niż te produkty). Tak więc COM jest protokołem podobnym do C, zapewniającym współzależność pomiędzy aplikacjami i bibliotekami. .NET pozwala na współzawodnictwo między aplikacjami zarządzanymi. Jeśli chcesz współdziałać z C++, użyj C++/CLI. Ale co zrobić, jeśli masz starszą aplikację COBOL, która chce używać składnika .NET? Ujawnienie tego komponentu jako modelu COM byłoby jednym ze sposobów podejścia do niego. Odsłanianie API typu C to inny sposób.

  2. Nie zaskakująco, ponieważ COM istnieje już od późnych lat 80. (jak sądzę) wiele wartości biznesowych zostało zbudowanych na technologii COM. Nie ma sensu biznesowego i jest zbyt kosztowne i ryzykowne, aby przepisać działające aplikacje na .NET tylko dla zabawy. Firmy, które muszą korzystać ze starszych aplikacji, mają oczywiście wiele narzędzi i aplikacji opartych na COM.

  3. Wszystko zależy od Twojego przypadku biznesowego. Czy możesz uciec z platformą .NET tylko chyba nie musisz znać COM (chociaż COM jest używany przez platformę .NET i czasami błędy przeciekają). Jeśli korzystasz z biblioteki COM wyeksponowanej przez system operacyjny lub inną bibliotekę, ma sens znajomość podstawowych zasad COM.

PS. Lubię COM. Nie podoba mi się część rejestracyjna, nie lubię DCOM i myślę, że mieszkania COM w końcu zdezorientowały bardziej niż pomogły deweloperom (pierwotnie opracowano je, aby pomóc deweloperom w unikaniu wyścigów i związanych z tym problemów). Ale rdzeń COM jest całkiem przyzwoity. Niektóre walki się skończyły "Czy COM OO?" ale to sprowadza się do tego, dlaczego używamy OO? IMO, aby dać hermetyzację. Zatem pytanie brzmi: "Czy COM daje dobre hermetyzacje?". Odpowiedź brzmi: tak (IMO).

PS. Ostatnio sprawdziłem, czy Firefox używał czegoś o nazwie XPCOM, które dla mnie wyglądało jak COM.

+0

Używam żartować z moim szefem, że kompetencja C++ + COM wkrótce będzie jak kompetencja COBOL.Nie ma zbyt wielu miejsc pracy, ale jeszcze mniej osób, które to znają, więc będziemy mogli ustalać nasze własne pensje, ponieważ jest tak wiele wartości biznesowej związanej z tą technologią. – FuleSnabel

1

Ten film z kanału Channel 9 może być interesujący. Juval Lowy, ekspert Microsoft COM/WCF twierdzi, że może to mieć sens maja każda klasa usług WCF, zbliżona do DCOM

http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Every-Class-a-WCF-Service-with-Juval-Lowy/

Związek ten twierdzi, że kompromisy są pod względem wydajności dla łatwości użytkowania i łatwość rozwoju w czasie. W miarę trwania tego trendu zmniejsza się potrzeba programowania niskopoziomowego COM/DCOM. Oczywiście nie obejmuje to wszystkich scenariuszy, ale obejmuje wiele niekrytycznych potrzeb biznesowych.

Czy powinieneś nauczyć się COM? W obecnej postaci WCF (i inne części .NET) oparte są na COM. Posiadanie wiedzy na temat COM pomoże w rozwiązywaniu problemów niskiego poziomu, które pojawiają się, ale jeśli nie jest to podstawowa lub drugorzędna koncentracja na karierze zawodowej, nie poświęciłbym na to dużo czasu.

+0

Będę to oglądać, ale moja reakcja szarpnięcia kolanem: nie, nie znowu! Uczynienie każdej klasy klasą COM wydawało się wtedy świetnym pomysłem, ale to naprawdę bałagan ze względu na wzrost kosztów rozwoju. Czy chcę też udostępnić naszym użytkownikom wszystkie moje wewnętrzne klasy? Z DCOM zalała sieć pingami. Z usługami internetowymi Myślę, że jest jeszcze gorzej, jako interfejs usługi sieciowej, której nie projektuje się w taki sam sposób, jak klasa, którą masz w pamięci (usługa sieciowa często używa masywnych metod w celu zmniejszenia narzutu połączeń). Usługa sieciowa może również zniknąć, ilekroć obiekt inwazyjny nie będzie. – FuleSnabel

+0

@FuleSnabel Nie zgadzam się z kilkoma z twoich punktów, kiedy mówię o niektórych z bardziej gadatliwych wiązań ... Być może jedną z rzeczy, która uniemożliwia realizację teorii, jest potrzeba publicznego udostępnienia wszystkich prywatnych interfejsów. Jednym ze sposobów naprawy może być uczynienie klasy "Int" usługą WCF. Gdyby tak się stało, może uda ci się zachować prywatność swoich szeregowców. Możesz również spojrzeć na bindowanie nazwanych potoków dla większej wydajności, ale ogólnie rzecz biorąc, łatwo jest pozwolić na równoległe programowanie przy użyciu WCF kosztem wydajności na wątek. – LamonteCristo

Powiązane problemy