2010-02-04 14 views
10

Od osoby, która chce dowiedzieć się więcej o Windows Internals, czytając książkę "Windows Internals" i chcąc dostać się do rozwoju sterowników, uczy się dobrego programowania COM?Nauka COM nadal przy użyciu?

Jak głęboko powinienem się w to wciągnąć? Po prostu zrozum podstawy lub czy zrozumienie powinno być zaawansowane, biorąc pod uwagę powyższe.

Odpowiedz

4

Model COM nie jest obecnie wykorzystywany w obecnej rozbudowie, ale istnieje ogromna ilość oprogramowania, które wciąż go używa. Tylko zrozumienie podstaw powinno wystarczyć.

+4

"COM nie jest używany w obecnej rozbudowie" .. naprawdę? Pracuję głównie w .net, ale spędzam * dużo * czasu na współpracy z komponentami opartymi na COM! – Rob

+0

Interfejs do starszego oprogramowania, tak - dlatego powiedziałem, że powinien nauczyć się podstaw. Tworzenie nowych składników COM, nie za bardzo. – Joel

+2

Jeśli otrzymasz ofertę pracy, w której będziesz rozwijać COM, biegnij tak szybko, jak to możliwe w przeciwnym kierunku. –

4

Sterowniki urządzeń Windows nie mają nic wspólnego z COM. Możesz być tego świadomy.

+2

. istnieje forma COM używana przez stos sterowników multimediów. –

+2

+1 za bycie prawdą, ale istnieje zaskakująca liczba interfejsów API niższego poziomu, z których może korzystać plakat, które korzystają z interfejsu "podobnego do COM". Wpadłem na to z VSS API, który ma oddzielną implementację IUnknown. Poznanie COM pozwoliło mi szybciej zrozumieć API. – codekaizen

7

COM nie ma zbyt wiele wartości dla rozwoju sterowników trybu jądra, ale jest potencjalnie przydatny dla sterowników trybu użytkownika. DirectShow to na przykład COM, a nawet lekki analog COM używany w filtrach DShow w trybie jądra.

Istnieje wiele kodu tam, gdzie jest COM, a starsza wersja kodu musi minąć lata lub dekady. Ale, co ważniejsze, IMO to fakt, że zestaw .NET wygląda jak obiekty COM, gdy jest używany z C/C++, więc myślę, że nadal istnieje pewna wartość w poznawaniu COM , jeśli zamierzasz dalej pisać kod C/C++.

Jeśli planujesz przełączyć się na język C#, Java lub jeden z kilkudziesięciu innych języków bez wskaźników, które (sądząc po pytaniach podanych tutaj), większość programistów przyjęła, to nie, nie warto. koszt.

+4

Kiedy obrażasz tutaj ludzi, oni reagują, ignorując twoje odpowiedzi, więc przejdę. :RE –

1

Z jednej strony, COM wydaje się być preferowaną przez Microsoft metodą współdziałania między natywnym i zarządzanym (.Net) kodem. I szczerze mówiąc, .Net dobrze radzi sobie z COM.

Z drugiej strony, w nieśmiertelne słowa Lino Tadros:

com jest jak palenie: Jeśli jeszcze nie rozpoczął, nie powinno się rozpocząć już teraz, jeśli już to robi, to jest czas, aby zatrzymać.

Osobiście używam go kiedy muszę rozmawiać z istniejących obiektów COM (jak MSXML), lub jeśli jest to absolutnie konieczne, aby porozmawiać z zestawu .NET od natywnego kodu gdzie coś takiego eksportu niezarządzani nie jest rozwiązaniem , ale nie uważaj tego za przydatne dla nowego rozwoju.