Биты и байты.

Биты и байты.

вторник, 29 июля 2014 г.

Веб сервисы WCF

Есть одна технология для создания веб сервисов 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
Вызываем  нужный метод по двойному клику и радуемся что все работает)
+ Немного юмора
Нашёл мужик в пустыне лампу Алладина,потёр её, а оттуда Джин Джин: - Чего хочешь мужик? Мужик: обливаясь потом - Хочу домой!
Джин: берёт мужика за руку - Пошли. Мужик облизывая пересохшие губы: - Ты не понял, я хочу быстро домой! Джин: - Ну, тогда побежали.

About