Muszę nauczyć się COM dla mojego obecnego projektu. Jestem noobem i nie byłem w stanie znaleźć dobrych punktów wyjścia do COM. Patrzyłem na MSDN i googling ... Znalazłem kilka ciekawych artykułów na codeproject.com, ale nie jestem zadowolony. Dlaczego używamy COM? Dlaczego to istnieje? W jakich miejscach to istnieje? ..... itd. Czy możesz mi powiedzieć, gdzie mogę znaleźć odpowiedzi na te pytania?
13
Odpowiedzi:
Nauka IUnknown to pierwszy krok.
Dobrym interfejsem COM odpowiednim do nauki dla początkujących jest interfejs IStream. Możesz ćwiczyć COM, wdrażając interfejs IStream przy użyciu wielu różnych sposobów przechowywania danych.
Dodano 2012/09/28:
Po wynalezieniu mechanizmu COM ludzie w firmie Microsoft odkryli, że mechanizmy te otwierają drzwi do niezwykłych sztuczek programistycznych, które nie są ortodoksyjnymi operacjami operacyjnymi. Na najniższym poziomie
IUnknown.QueryInterface
jest tylko metodą; może zrobić wszystko. Te sztuczki sprawiają, że COM jest zastraszające dla uczniów, ponieważ mogą unieważnić podstawowe rozumowanie, które można pożyczyć od OOP.Dokumentacja Microsoft w MSDN spędza dużo czasu mówiąc „COM nie jest ...” lub „Nie zakładaj” wyjaśniając, w jaki sposób te niezwykłe sztuczki mogą złamać Twój kod.
Projektanci COM używają Liskov Substitution Principle („L” w SOLID ), aby upewnić się, że ich liczne interfejsy i użycie sztuczek nie unieważniają podstawowego rozumowania OOP lub działania programu.
Jeśli twój projekt nie używa tych sztuczek, możesz zobaczyć COM tylko z punktu widzenia OOP. Jeśli twój projekt używa tych sztuczek, będziesz musiał zobaczyć COM jako kod samodmodyfikujący.
źródło
Głównym powodem modelu COM jest zapewnienie zorientowanego obiektowo interfejsu komunikacyjnego między aplikacją a innymi aplikacjami i bibliotekami DLL, które mogą znajdować się w różnych przestrzeniach pamięci oraz między obiektami, które mogą mieć różne wewnętrzne reprezentacje obiektów.
Podczas uczenia się COM należy pamiętać, że w tym czasie C ++ był królem, a aplikacje nazywane dll używają C. Nie było wspólnego ABI (jak mówi @rwong), a COM było rozwiązaniem Microsoft.
Prawdopodobnie warto zajrzeć do Active Template Library (ATL) dla studia wizualnego, co sprawia, że nieco łatwiej jest również korzystać z COM.
Kilka książek, które uznałem za przydatne w ciągu dnia
http://www.amazon.com/Essential-COM-Don-Box/dp/0201634465/ref=sr_1_1?ie=UTF8&qid=1304946825&sr=8-1
http://www.amazon.com/Understanding-ActiveX-OLE-Developers-Technology/dp/1572312165/ref=pd_sim_b_4
hth
źródło
Pierwotnie nauczyłem się o COM z książki Learning DCOM (DCOM to tylko rozszerzenie COM, książka głównie o COM). Ma ponad dziesięć lat i powinien być tani, jeśli go wykorzystasz (ponieważ COM nie jest już tak naprawdę gorący, nawet w świecie Microsoft, nawet jeśli jest nadal używany do interopu).
Głównym powodem istnienia modelu COM jest ułatwienie rozwoju opartego na komponentach, co w zasadzie oznacza, że zamiast łączyć biblioteki podczas kompilowania kodu, odwołujesz się do interfejsu (opis sposobu komunikowania się z komponentem zewnętrznym) i używasz pewnej implementacji że podczas wdrażania. Stanowi podstawę większości własnych technologii Microsoft.
System obsługuje niektóre funkcje, które były fajne, zanim wszystko się zarządzało (takie jak liczenie referencji i samoopisanie (przez IDispatch)).
źródło
COM to standard stworzony w latach 90., aby umożliwić różnym programom komunikowanie się ze sobą. Najważniejszy jest standard binarny, który pozwala jednemu oprogramowaniu utworzyć obiekt lub powiązać go z obiektem, a następnie wywołać ten interfejs. Pozwala to na tworzenie bibliotek DLL w C ++, które mogą być wywoływane przez stronę ASP (obiekty COM), lub tworzenie kontrolki w Delphi, którą można umieścić w oknie dialogowym VB (formanty ActiveX) lub arkuszu programu Excel. Kiedy wklejasz obraz do Worda, używa on również COM, osadzając osobną aplikację w Word. Mniej popularna jest metoda DCOM, która ma wywoływać obiekty zdalne, zwykle są to prostsze sposoby.
Więc Com / ActiveX / DCOM był bardzo popularny 10 lat temu z VB, VBA, C ++ / ATL, Delphi. Dotnet jest jednak znacznie prostszy, a C # zastąpił większość zastosowań COM i VB itp
Wciąż istnieje wiele interfejsów COM, które można wywołać z aplikacji dotnet lub Java lub C ++. (Nie mówisz)
Jeśli potrzebujesz wywołać interfejsy COM, VB to najprostszy sposób, aby to zrobić. W Dotnet 4.0 C # ma dynamiczne słowo kluczowe, które znacznie ułatwia wywoływanie interfejsów IDispatch, co jest prawdopodobnie doskonałym rozwiązaniem, na które powinieneś spojrzeć.
Jeśli chcesz poznać wiele szczegółów, naprawdę potrzebujesz C ++ i ATL, wywołaj interfejsy API C, takie jak CoCreateInstance. Unikaj tego, jeśli potrafisz jako stara technologia i nie ma większego zastosowania, trzymaj się powyższych zaleceń.
Nie jestem pewien, na jakie oprogramowanie monitorujące się patrzysz, ale prawdopodobnie będzie ono dostępne za pośrednictwem klas System.Management w dotnet.
źródło
Poniższe informacje mogą być przydatne w przeglądzie COM:
http://www.youtube.com/watch?v=-uodiz25YNE
http://progtutorials.tripod.com/COM.htm
Pierwsze wideo mówi o ogólnej idei tworzenia komponentów binarnych w celu ponownego wykorzystania kodów napisanych w różnych językach (niezależnych od języka) i znajdujących się w różnych maszynach (procesach) (niezależne od lokalizacji / przezroczyste). Ta technologia jest wykorzystywana w niektórych firmach programistycznych do integracji z innym oprogramowaniem (firmami) zamiast kupowania ich oprogramowania i osadzania ich we własnym oprogramowaniu lub pisania kodów od zera w ich systemach.
Ta technologia ma trzy różne wersje (implementacje):
OLE / COM / DCOM / ActiveX dla programistów C ++ (ATL służy do ułatwienia pracy programisty)
JavaBeans / RMI / EJB dla programistów Java
CORBA / IIOP
Pomyśl o tym jako o technologii, która jest przydatna, gdy masz oprogramowanie napisane w Javie i chcesz dodać do niego funkcjonalność, która już istnieje w pakiecie, ale jest napisana w C ++, a nawet może znajduje się na innym komputerze, a nie w Twoja lokalna maszyna. Jak nazywasz „nowy”, jak tworzysz obiekty i wywołujesz z nich metody?
Następujące książki, które widziałem ludzi, którzy kodują COM, mają jedno z nich na swoich półkach:
Warsztat programisty na COM i ATL 3.0
Inside Com
Essential COM
źródło