В чем разница с WCF и другими веб-сервисами? - PullRequest
5 голосов
/ 05 января 2009

Я запутался с WCF и другими веб-сервисами (такими как asp.net ASMX, .net Remoting), кто-нибудь может мне сказать, в чем разница с WCF и другими, и когда мне следует его использовать, спасибо!

Ответы [ 3 ]

10 голосов
/ 05 января 2009

WCF - это коммуникационный стек, который позволяет предоставлять сервисы через HTTP (например, ASMX) и TCP (например, Remoting), а также по именованным каналам (что в действительности является межпроцессным вызовом внутри машины), MSMQ и .NET 3.5 REST.

Это позволяет это, потому что это отделило коммуникационные части сервиса от бизнес-логики. Все, что вам нужно сделать, это украсить ваши классы обслуживания, методы и DTO с помощью соответствующего атрибута контракта ([SeriviceContract], [OperationContract] и [DataContract] соответственно.)

Преимущество этого заключалось в том, что можно было написать сервис один раз и позволить многим различным типам клиентов использовать один и тот же сервис (т. Е. Клиенты Java могут использовать HTTP, клиенты .NET могут использовать TCP, устаревшие могут использовать MSMQ и т. Д.). ).

WCF по-прежнему позволит вам использовать все функции каждого транспорта, включая безопасность, транзакции, надежный обмен сообщениями и т. Д., Но вам необходимо проявлять осторожность. Не все функции работают на всех транспортных средствах, и вам необходимо разработать соответствующий дизайн. WCF позволяет вам указать в вашем контракте, какие функции требуются. Это препятствует тому, чтобы кто-то попытался представить вашу службу способом, который не поддерживает требуемый набор функций (то есть, если ваша служба требует транзакций, среда выполнения WCF не позволит получить доступ к службе через базовую конечную точку HTTP).

WCF также можно расширять с помощью пользовательских поведений (которые влияют на работу среды выполнения WCF) и пользовательских каналов (которые управляют взаимодействием служб WCF с внешним миром.)

WCF имеет некоторую кривую обучения по сравнению с ASMX, но преимущества АБСОЛЮТНО превосходят эту кривую обучения.

Надеюсь, это поможет.

4 голосов
/ 05 января 2009

WCF - это коммуникационная библиотека, которая является надмножеством как удаленного взаимодействия .NET, так и «старого» веб-сервиса ASMX и является преемником обеих этих библиотек.

Веб-службы WCF намного лучше поддерживают стандарты WS- * и имеют меньше проблем с совместимостью.

По сути, вы должны использовать WCF, поскольку .net Remoting и ASMX могут рассматриваться как легенда (и, если я правильно помню, некоторые ошибки .NET Remoting были исправлены только в WCF и никогда в .NET Remoting)

2 голосов
/ 05 января 2009

Я думаю, что будет справедливо сказать, что WCF заменяет ASMX и удаленное взаимодействие. Вы можете достичь всего, что могли, с ASMX и удаленным взаимодействием, а также с WCF, но у вас гораздо больше возможностей и, как правило, намного больше контроля над происходящим.

Так что я считаю, что если вы можете, вы должны использовать WCF.

...