Является ли замена .NET для COM? - PullRequest
5 голосов
/ 14 августа 2010

Я хочу знать назначение .NET и COM,

  • .NET имеет то же назначение, что и COM?Потому что основная цель COM состоит в том, чтобы обеспечить возможность взаимодействия языков так же, как и в .NET?
  • Если так, то почему многие компании все еще используют COM для своих проектов развития?
  • Стоит ли изучать COM, когда мы можем использовать .NET?

Ответы [ 2 ]

6 голосов
/ 14 августа 2010
  1. Одной из причин COM было то, что если вы разрабатывали библиотеку C ++ в Borland C ++ builder, вы не могли бы использовать ее в VB6. Но вы также не могли использовать его в VC6 (кстати, COM намного старше этих продуктов). Таким образом, COM является C-подобным протоколом для взаимодействия между приложениями и библиотеками. .NET обеспечивает взаимодействие между управляемыми приложениями. Если вы хотите взаимодействовать с C ++, используйте C ++ / CLI. Но что вы будете делать, если у вас есть устаревшее приложение COBOL, которое хочет использовать компонент .NET? Представление этого компонента как COM будет одним из способов приблизиться к нему. Предоставление C-подобного API - это еще один способ.

  2. Неудивительно, поскольку COM существует с конца 80-х (я думаю), и многие технические ценности были основаны на технологии COM. Это не имеет никакого делового смысла и слишком дорого и рискованно переписывать работающие приложения в .NET просто для удовольствия. Поэтому компании, которым приходится поддерживать устаревшие приложения, естественно, имеют много инструментов и приложений на основе COM.

  3. Все зависит от вашего бизнеса. Можете ли вы обойтись только с платформой .NET? Полагаю, вам не нужно знать COM (хотя COM используется платформой .NET, и иногда ошибки просачиваются). Если вы используете библиотеки COM, предоставляемые операционной системой или другими библиотеками, имеет смысл знать некоторые основные правила COM.

PS. Мне нравится COM. Мне не нравится часть регистрации, мне не нравится DCOM, и я думаю, что COM-апартаменты в итоге смутили больше, чем помогли разработчикам (изначально она была разработана, чтобы помочь разработчикам избежать условий гонки и связанных с этим проблем). Но ядро ​​COM вполне приличное. Некоторые бои были закончены "COM OO?" но это сводится к тому, почему мы используем ОО? ИМО, чтобы дать инкапсуляцию. Тогда возникает вопрос: «Дает ли COM хорошую инкапсуляцию?». Ответ - да (ИМО).

PS. В последний раз я проверял, что Firefox использовал что-то под названием XPCOM, которое выглядело мне как COM

1 голос
/ 14 августа 2010

Вы можете найти это видео Channel9 интересным.Джувал Лоуи, эксперт Microsoft COM / WCF, считает, что может иметь смысл каждый класс службы WCF, сродни DCOM

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

Эта ссылка утверждает, что компромиссы заключаются впроизводительность для простоты использования и простоты разработки с течением времени.Поскольку эта тенденция продолжается, потребность в низкоуровневом программировании COM / DCOM уменьшается.Конечно, это не охватывает каждый сценарий, но оно охватывает многие некритические потребности бизнеса.

Стоит ли изучать COM?В настоящее время WCF (и другие части .NET) основаны на COM.Понимание COM поможет устранить проблемы, возникающие на низком уровне, но если бы вы не занимались основной или вспомогательной карьерой, я бы не стал тратить на это много времени.

...