Есть одна технология для создания веб сервисов WCF (Windows Communication Foundation), построена на принципе контрактов (точно также как фирмы заключают контракты друг с другом, что куда где и как), с помощью этих контрактов описывается формат взаимодействия, данных и сообщений.
Контракты служб [ServiceContract] описывают операции (методы), которые могут выполняться клиентом с помощью службы. Включает контракты необходимых операций [OperationContract] ;
Контракты данных [DataContract] определяют, какие типы данных принимаются и передаются службой. При передаче объекта или структурного типа в параметре операции, в действительности, надо передать лишь его состояние, а принимающая сторона должна преобразовать его обратно к своему родному представлению. Это называется маршалтинг по значению. Он реализуется посредством сериализации, когда пользовательские типы переводятся из CLR представлений в XML содержимое SOAP-конвертов. При приёме параметров происходит десериализация, т.е. набор XML преобразуется в объект CLR и дальше передаётся для обработки;
Контракты ошибок [FaultContract] определяют, какие исключения инициируются службой, как служба обрабатывает их и передаёт своим клиентам;
Контракты сообщений [MessageContract], [MessageHeader] [MessageBodyHeader] позволяют службам напрямую взаимодействовать с сообщениями и моделировать структуру всего конверта SOAP.
WCF если вкратце это прокачанный ASMX может все тоже самое плюс дополнительные возможности .
ASMX:
Легко и просто написать и настроить
Поддерживается только IIS
Вызов только по HTTP
Большой вариант размещения классический в 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. Попробуем это сделать.