Windows Communication Foundation (WCF) - это платформа для создания сервис-ориентированных приложений. Независимо от своего возраста, WCF по-прежнему является основой, которая позволяет вам создавать действительно сложные решения, контролировать все аспекты вашего потока данных и остается основным навыком любого опытного разработчика .NET.
Q1: что такое WCF?
Сложность: ⭐
Windows Communication Foundation (WCF) - это платформа для создания сервис-ориентированных приложений. Используя WCF, вы можете отправлять данные в виде асинхронных сообщений из одной конечной точки службы в другую. Конечная точка службы может быть частью постоянно доступной службы, размещенной в IIS, или она может быть службой, размещенной в приложении.
Конечная точка может быть клиентом службы, которая запрашивает данные у конечной точки службы. Сообщения могут быть простыми, например, один символ или слово, отправленное в виде XML, или сложными, как поток двоичных данных.
Q2: Основные компоненты службы WCF?
Сложность: ⭐⭐
Взгляните на эту карту, чтобы ориентироваться в сервисных компонентах WCF:
Q3: Что такое SOA?
Сложность: ⭐⭐
SOA означает сервис-ориентированную архитектуру. Сервис-ориентированная архитектура - это архитектурный подход в разработке программного обеспечения, когда приложение организовано как «Сервисы». Сервисы - это группа методов, которые содержат бизнес-логику для подключения к БД или другим сервисам. Например, вы идете в отель и заказываете еду. Ваш заказ сначала идет на рецепцию, а затем идет на кухню, где готовится еда, и, наконец, официант подает еду.
Некоторые важные характеристики сервис-ориентированной архитектуры
- Сервисы SOA должны быть независимыми от других сервисов. Изменение службы не должно влиять на клиента, вызывающего службу.
- Услуги должны быть автономными. Службы должны иметь возможность определять себя (на языке описания веб-служб (WSDL)). Они должны быть в состоянии сказать клиенту, какие все операции они выполняют, какие типы данных используют и какое значение будут возвращать.
Q4: что такое транспорт в WCF?
Сложность: ⭐⭐⭐
Программная модель WCF отделяет операции конечной точки (как выражено в контракте на обслуживание) от транспортного механизма, который соединяет две конечные точки. Это дает вам гибкость при выборе способа предоставления ваших услуг сети. Транспортный уровень находится на самом низком уровне стека каналов. Транспорт отправляет или получает сериализованную форму сообщения в или из другого приложения. Основными транспортными средствами, используемыми в Windows Communication Foundation (WCF), являются:
- HTTP,
- HTTPS,
- TCP.
Q5: Что такое WCF Binding и сколько из них вы знаете?
Сложность: ⭐⭐⭐
Привязки указывают, как конечная точка службы Windows Communication Foundation (WCF) взаимодействует с другими конечными точками. По своей сути привязка должна указывать используемый транспорт (например, HTTP или TCP). Вы также можете установить другие характеристики, такие как безопасность и поддержка транзакций, через привязки.
WCF предоставляет девять встроенных привязок:
- BasicHttpBinding: базовая связь с веб-сервисом. Объявляет службы WCF как устаревшие веб-службы ASMX. Используется для совместимости. Нет безопасности по умолчанию.
- WSHttpBinding: веб-сервисы с поддержкой WS- *. Поддерживает транзакции и надежный обмен сообщениями.
- WSDualHttpBinding: веб-сервисы с поддержкой дуплексных контрактов и транзакций.
- WSFederationHttpBinding: веб-службы с федеративной безопасностью. Поддерживает транзакции.
- MsmqIntegrationBinding: связь напрямую с приложениями MSMQ. Поддерживает транзакции.
- NetMsmqBinding: связь между приложениями WCF с использованием очередей. Поддерживает транзакции.
- NetNamedPipeBinding: связь между приложениями WCF на одном компьютере. Поддерживает дуплексные контракты и транзакции.
- NetPeerTcpBinding: связь между компьютерами через одноранговые сервисы. Поддерживает дуплексные контракты.
- NetTcpBinding: связь между приложениями WCF между компьютерами. Поддерживает дуплексные контракты и транзакции.
Q6: Каковы возможные способы размещения службы WCF?
Сложность: ⭐⭐⭐
Для размещения службы Windows Communication Foundation нам нужен как минимум управляемый процесс, ServiceHost экземпляр и Endpoint. Возможные подходы для размещения услуги:
Хостинг в управляемом приложении/Self Hosting:
- Консольное приложение
- Приложение для Windows
- Служба Windows
Хостинг на веб-сервере:
- IIS 6.0 (приложение ASP.NET поддерживает только HTTP)
- Служба активации Windows (WAS), т.е. IIS 7.0 поддерживает HTTP, TCP, NamedPipes, MSMQ.
Q7: Назовите несколько разных типов контрактов в WCF
Сложность: ⭐⭐⭐
В WCF существует четыре типа контракта:
Data Contract - описывает формат ваших данных и определяет, как данные должны быть сериализованы/десериализованы. Чтобы определить DataContract для вашего сервиса, вы можете использовать DataContract, DataMember.
Сервисный контракт - он описывает операции, выставленные службой. Он также может описывать шаблон обмена сообщениями. Сервисный контракт может быть определен с использованием атрибутов [ServiceContract] и [OperationContract].
Message Contract - он дает нам контроль над SOAP-сообщением. Если вы используете только контракт с данными, все данные будут находиться в теле сообщения SOAP, но если вам нужен элемент управления/доступ к заголовку сообщения SOAP, вы можете использовать MessageContract. Контракт сообщения может применяться к типу с использованием атрибута MessageContract. Пользовательский заголовок и тело могут быть включены в сообщение с использованием атрибутов MessageHeader и MessageBodyMember.
Fault Contract - это специальный контракт, позволяющий клиенту знать, что что-то не так со стороны обслуживания. Если выбрано исключение, он не может достичь клиента так, как он есть. WCF обрабатывает его и передает сообщение об ошибке клиенту, используя SOAP Fault Contract. Вы также можете определить для вас один контракт на отказ. Вам необходимо украсить вашу операцию с помощью [FaultContract(typeof(YouCustomFault))] и YouCustomFault с YouCustomFault DataContract, DataMember.
Q8: зачем нам нужна потоковая передача?
Сложность: ⭐⭐⭐
Когда у вас есть большой объем данных для передачи, режим потоковой передачи в WCF является реальной альтернативой стандартному поведению буферизации и обработки сообщений в памяти.
В WCF любое получающее сообщение доставляется только после получения всего сообщения. Я имею в виду, что первое сообщение буферизуется на принимающей стороне, и как только оно полностью получено, оно доставляется получающей стороне. Основная проблема с этим подходом заключается в том, что сторона получателя не отвечает, пока сообщение буферизуется. Таким образом, по умолчанию способ обработки сообщений в WCF подходит для сообщений небольшого размера, но для сообщений большого размера этот подход не годится. Поэтому для преодоления этой проблемы Streaming в WCF вступают в действие.
Q9: Что такое совместимость и как она достигается с помощью служб WCF?
Сложность: ⭐⭐⭐⭐
Функциональная совместимость - это способность общаться с другими платформами через стандартные протоколы (такие как SOAP). Одним из основных преимуществ SOAP является то, что он не зависит от платформы.
WCF разработан и создан для взаимодействия с веб-сервисами, которые поддерживают спецификацию веб-сервисов, известную как спецификации WS- . Таким образом, WCF поставляется с тремя системными привязками, которые облегчают взаимодействие:
- BasicHttpBinding : службы WCF могут использовать эту привязку для настройки и предоставления конечных точек. Эти конечные точки, в свою очередь, могут взаимодействовать с веб-службами на основе * .asmx, а также с клиентами и службами, которые соответствуют Основному профилю WS-I 1.1.
- WsHttpBinding : поддерживает распределенные транзакции, а также безопасные и надежные сеансы.
- WsDualHttpBinding : поддержка двусторонней связи и связи через посредников SOAP.
Q10: Можем ли мы использовать WSHttpBinding с шаблоном обмена Request-CallBack (также называемым дуплексным)?
Сложность: ⭐⭐⭐⭐⭐
Протокол HTTP не поддерживает дуплексную связь - ответы действительны только для каждого запроса, поэтому ответ отрицательный. Это предотвращает привязки на основе HTTP, такие как BasicHttpBinding и WSHttpBinding от поддержки дуплекса. Чтобы устранить это ограничение, WCF предоставляет WSDualHttpBinding. Эта привязка использует составную дуплексную связь, что означает, что созданы два канала связи для поддержки вызовов в обоих направлениях.
Q11: Что заменяет WCF в .Net Core?
Сложность: ⭐⭐⭐⭐⭐
Клиентская часть WCF уже поддерживается в .NET Core. Серверная часть WCF не поддерживается в .NET Core, поскольку это технология, специфичная для Windows, тогда как .NET Core должна быть кроссплатформенной. WCF вряд ли будет портирован на .NET Core, потому что большая часть базы кода зависит от внутренних библиотек Windows. Есть несколько альтернатив, которые вы могли бы использовать для серверной части:
- IpcServiceFramework - облегченная среда межпроцессного взаимодействия .NET Core, позволяющая вызывать службу через именованный конвейер и/или TCP (аналогично WCF, который в настоящее время недоступен для .NET Core). Безопасная связь через SSL также поддерживается.
- gRPC - высокопроизводительная среда RPC с открытым исходным кодом, изначально разработанная Google. Структура основана на клиент-серверной модели удаленных вызовов процедур. Клиентское приложение может напрямую вызывать методы серверного приложения, как если бы оно было локальным объектом.
- Core WCF - это порт Windows Communication Framework (WCF) для .NET Core. Цель этого проекта - дать возможность существующим проектам WCF перейти на .NET Core.
0 комментариев
Добавить комментарий