2009-11-02 2 views
3

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

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

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

EDIT: Я говорю конкретно о распределенных приложениях и дистанционном управлении - например, сервер может вызвать запуск диалогового окна на рабочей станции, рабочие станции могут вызывать методы на сервере для отправки ответов и т. Д. Я добавил 'D 'к моему названию соответственно.

+0

Возможно, объясните свои основные прецеденты. Будет легче ответить на ваш вопрос по конкретным сценариям – Manu

ответ

1

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

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

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

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

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

8

WCF никогда не предназначался для замены COM. Сама среда .NET - это замена COM.

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

+0

+1 yup точно - каждый класс .NET ** IS ** COM-компонент, в основном –

2

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

-1

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

Сценарий, где использовать COM:

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