2010-08-14 3 views
5

Я хочу знать цель .NET и COM,Является ли замена .NET для COM?

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

Связанный http://stackoverflow.com/questions/2280639/is-net-all-com-underneath –

ответ

6
  1. Одна из причин COM, что если вы разработали C++ библиотеки в строителе Borland C++ вы не можете использовать его в 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?»? но это сводится к тому, почему мы используем OO? ИМО для инкапсуляции. Таким образом, возникает вопрос: «Обеспечивает ли COM хорошую инкапсуляцию?». Ответ - да (ИМО).

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

+0

Я использую для шутки с моим боссом, что компетенция C++ + COM скоро будет соответствовать компетенции COBOL.Там не так много рабочих мест, но даже меньше людей, которые это знают, поэтому мы сможем установить свои собственные зарплаты, поскольку для этой технологии связано столько же стоимости бизнеса. – FuleSnabel

1

Вы можете найти этот видеоролик 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 поможет устранить эти проблемы низкого уровня, которые возникают, но если это не ваша основная или вторичная карьера, я бы не потратил на это много времени.

+0

Я буду смотреть это, но моя реакция на коленный рефлекс: Нет, не снова !!! Создание каждого класса COM-класса в то время представляло собой блестящую идею, но это действительно беспорядок из-за увеличения стоимости разработки. Также хочу ли я показывать все мои внутренние классы нашим пользователям? И с DCOM он залил сеть пингом. С веб-службами я думаю, что это еще хуже, как интерфейс веб-службы, которую вы не создаете, так же, как и класс, который у вас есть в памяти (веб-служба часто использует короткие методы для сокращения накладных расходов). Также веб-служба может исчезнуть всякий раз, когда объект inmemory не будет. – FuleSnabel

+0

@FuleSnabel Я не согласен с несколькими вашими моментами, когда говорю о некоторых более болтливых привязках ... Возможно, одна вещь, которая мешает теории стать реальностью, - это необходимость сделать все частные интерфейсы общедоступными. Один из способов исправить это может заключаться в том, чтобы сделать класс «Int» службой WCF. Если бы это произошло, то, может быть, вы можете держать своих рядовых в частном порядке. Кроме того, вы можете посмотреть на привязку namedpipes для большей эффективности, но общая точка заключается в том, чтобы легко разрешить параллельное программирование с использованием WCF за счет эффективности потока. – LamonteCristo

Смежные вопросы