Есть одна технология для создания веб сервисов WCF (Windows Communication Foundation), построена на принципе контрактов (точно также как фирмы заключают контракты друг с другом, что куда где и как), с помощью этих контрактов описывается формат взаимодействия, данных и сообщений.
Контракты служб [ServiceContract] описывают операции (методы), которые могут выполняться клиентом с помощью службы. Включает контракты необходимых операций [OperationContract] ;
Контракты данных [DataContract] определяют, какие типы данных принимаются и передаются службой. При передаче объекта или структурного типа в параметре операции, в действительности, надо передать лишь его состояние, а принимающая сторона должна преобразовать его обратно к своему родному представлению. Это называется маршалтинг по значению. Он реализуется посредством сериализации, когда пользовательские типы переводятся из CLR представлений в XML содержимое SOAP-конвертов. При приёме параметров происходит десериализация, т.е. набор XML преобразуется в объект CLR и дальше передаётся для обработки;
Контракты ошибок [FaultContract] определяют, какие исключения инициируются службой, как служба обрабатывает их и передаёт своим клиентам;
Контракты сообщений [MessageContract], [MessageHeader] [MessageBodyHeader] позволяют службам напрямую взаимодействовать с сообщениями и моделировать структуру всего конверта SOAP.
WCF если вкратце это прокачанный ASMX может все тоже самое плюс дополнительные возможности .
ASMX:
Легко и просто написать и настроить
Поддерживается только IIS
Вызов только по HTTP
WCF :
Большой вариант размещения классический в IIS плюс Windows Service , приложение Winforms, консольное приложение – полная свобода (пример хостинга в консольном приложении)
Поддерживает HTTP (REST и SOAP), TCP/IP, MSMQ и другие протоколы
- HTTP: http://localhost:8001/MyService (в глобальной сети)
- TCP: net.tcp://localhost:8002/TestService (в лок. сети)
- IPC (именованные каналы): net.pipe://localhost/TestService (на одном компьютере)
- MSMQ (механизм очередей): net.msmq://localhost/TestService
- Одноранговые сети: net.p2p: (например, узлы GRID)
Улучшена безопасность
Работает быстрее
В общем WCF призван полностью заменить ASMX. Попробуем это сделать.
Создадим веб сервис WCF в Visual Studio. Для этого создадим пустое приложение ASP.NET и добавим туда WCF сервис. Реализуем два метода сложение двух чисел Sum и разность двух чисел Substract.
При этом создаются 2 файла
1. IService1.cs — файл с интерфейсом (контрактом) службы;
2. Service1.cs — файл с классом, реализующим интерфейс (т.е. функционал службы).
Опишем наши два метода Sum и substract.
Теперь опубликуем на сервере IIS.
Проверим его на сервере
Протестировать можно утилитой wcftestclient из комплекта Visual Studio Tools
Вызываем нужный метод по двойному клику и радуемся что все работает)
+ Немного юмора
Нашёл мужик в пустыне лампу Алладина,потёр её, а оттуда Джин Джин: - Чего хочешь мужик? Мужик: обливаясь потом - Хочу домой!
Джин: берёт мужика за руку - Пошли. Мужик облизывая пересохшие губы: - Ты не понял, я хочу быстро домой! Джин: - Ну, тогда побежали.