Natrafiłem na ten interesujący artykuł: How I Came to Love COM Interoperability on CodeProject, co skłoniło mnie do myślenia ...
Autor twierdzi, że nie chce żadnych COM w swojej bibliotece .NET, ponieważ odbiera to piękno ich biblioteki .NET. Zamiast tego wolą napisać osobną bibliotekę Interop, która udostępnia ich bibliotekę .NET COM. Ta biblioteka Interop poradziłaby sobie z faktem, że COM nie obsługuje konstruktorów z parametrami, metodami przeładowanymi, rodzajowymi, dziedziczeniem, metodami statycznymi itp.
I choć myślę, że jest to bardzo nowatorskie, czy to nie tylko komponuje projekt?
- Teraz musisz przetestować jednostkę bibliotekę .NET ORAZ bibliotekę Interop.
- Teraz musisz poświęcić czas na zastanawianie się, jak obejść swoją piękną bibliotekę .NET i udostępnić ją COM.
- Musisz podwoić lub potroić liczbę swoich klas.
Z pewnością rozumiem, czy potrzebujesz swojej biblioteki do obsługi zarówno COM, jak i non-COM. Jeśli jednak zamierzasz używać modelu COM, czy tego rodzaju konstrukcja przynosi korzyści, których nie widzę? Czy zyskujesz tylko zalety języka C #?
A może ułatwia wersjonowanie biblioteki, zapewniając opakowanie? Czy sprawia, że testy jednostkowe przebiegają szybciej, ponieważ nie wymagają użycia COM?