Есть ли жизнеспособный аналог DCOM в .NET? - PullRequest
3 голосов
/ 02 ноября 2009

Я знаю, что .net имеет WCF, который, как я полагаю, рекламировался как замена COM, когда он имел кодовое название Indigo (?), Но действительно ли он подходит для использования в приложении .NET, обеспечивая ту же функциональность, что и C ++ / Приложение DCOM?

Приложение DCOM в системе клиент-сервер может быть проблематичным, но я думаю, что оно довольно эффективно по сравнению с другими вариантами, такими как веб-сервисы, которые в любом случае имеют другие проблемы.

Итак, является ли WCF истинным преемником (D) COM или у него другие цели?

РЕДАКТИРОВАТЬ: я говорю конкретно о распределенных приложениях и удаленном управлении - например, сервер может вызвать запуск диалога на рабочей станции, рабочие станции могут вызывать методы на сервере для отправки ему ответов и т. Д. Я добавил 'D' соответственно моему названию.

Ответы [ 4 ]

8 голосов
/ 02 ноября 2009

WCF никогда не предназначался для замены COM. Платформа .NET сама по себе является заменой COM.

WCF предназначен для предоставления общего интерфейса для написания клиент-серверных приложений, таких как веб-службы SOAP, и удаленных приложений независимо от используемого протокола / транспорта / механизма сериализации.

2 голосов
/ 02 ноября 2009

Вы можете использовать WCF очень эффективно, выбрав правильное поведение / сериализацию / протокол. На самом деле использование COM / DCOM с dot-net сегодня будет менее эффективным, т.к. переход от dot net к com происходит медленно.

1 голос
/ 03 ноября 2009

Я не знаю ни одного официального руководства, которое называет преемника для DCOM, но .NET имеет две платформы, которые могут заменить использование DCOM. Это WCF и .NET Remoting.

WCF может использоваться в качестве замены для всех функций транспорта, предоставляемых DCOM, и других. Если вы находитесь в ситуации, когда вы не можете использовать .NET 3.0 или более новые версии; у вас есть только удаленное взаимодействие .NET. Обе платформы в .NET позволяют вам выполнять вызовы и передавать управление выполнением хостам в других потоках, процессах и компьютерах. Удаленное взаимодействие, вероятно, должно было стать заменой DCOM, и оно также может обрабатывать почти все транспортные функции, но адаптация не была такой большой.

В целом, большинство людей предпочитают WCF сейчас, потому что все четко определено и есть множество функций для управления аспектами вызовов, совершаемых через WCF. Регулярное удаленное взаимодействие .NET в настоящее время несколько не используется, потому что вам нужно будет управлять информацией о типах данных по обеим сторонам провода, что не является значительным улучшением нагрузки по сравнению с DCOM. Кроме того, он не имеет транспорта с разделяемой памятью, поэтому связь между потоками и процессами настраивается только с использованием связи на основе сокетов и зависит от ограничений производительности сокетов петли.

Что касается общих сценариев, которые вы упоминаете, почти любое приложение может быть доступно для подключения к другим приложениям через WCF или Remoting. Большинство сложных вопросов связано с взаимодействием с размещенными компонентами в веб-приложениях. Как правило, это обычно не делается - звонки исходят от них, но редко принимаются вне веб-активности http / https. Управление безопасностью и идентификацией также может быть сложным, но значительно улучшено по сравнению с настройкой на основе конфигурации DCOM.

В целом, как WCF, так и .NET Remoting значительно лучше, чем DCOM. Их проще в настройке и обслуживании, и они не испытывают тех же трудностей при регистрации, что и компоненты COM для использования в DCOM. Кроме того, вы получаете внутренние преимущества, такие как естественные исключения библиотек для условий отказа в .NET; в то время как в DCOM вам придется беспокоиться о корректной обработке неудачной доставки и тайм-аутов в коде приложения. Одно это должно значительно сократить объем кода, который вы должны написать для обработки таких условий, и с помощью асинхронных вызовов вы также можете отказаться от длительной операции, когда захотите. Это довольно сложно сделать хорошо в DCOM.

0 голосов
/ 07 августа 2013

У каждой технологии есть своя сила. WCF не является заменой для COM.

Сценарий использования COM:

Мы можем использовать существующие технологии из приложения .Net. Причина: так много организаций (банковские / телекоммуникационные / медицинские системы) могут вкладывать большие средства в свою автоматизацию. Они любят мигрировать с использованием новейших технологий (не все бизнес-процессы должны быть частью процесса). Итак, тогда можете выбирать новейшие технологии. Но они следуют бизнес-процессу из существующего кода (код может быть любым, COM ...). Таким образом, это уменьшит стоимость разработки, время, отладку и другие факторы. Каждая технология должна обеспечивать обратную совместимость, иначе она не будет вписываться в этот конкурентный мир. Вот почему .Net представила ИНТЕРОПРИВОДНОСТЬ. (RCW, CCW и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...