#wcf #serialization #encoding
#wcf #сериализация #кодирование
Вопрос:
Я изо всех сил пытаюсь понять ответ на один вопрос.
-
стандартные типы .net сначала преобразуются в стандартные сообщения. Это мы называем сериализацией и будет выполнено одним из сериализаторов WCF.
-
Эти стандартные сообщения преобразуются в поток байтов. Это называется encoding и выполняется кодировщиками, а какой кодировщик будет это делать, определяется привязкой, которую мы выбираем.
Мой вопрос в том, почему эта сериализация сохраняется между ними, Why.net объекты преобразуются в пары байтов непосредственно механизмом выполнения WCF и передаются по.
Комментарии:
1. @marc_s по крайней мере, опубликуйте это как ответ, чтобы OP мог пометить его как таковой, если он отвечает на их вопрос… это не просто комментарий.
Ответ №1:
Единственное, что соединяет клиента и сервер в WCF, — это контракт и сериализованный формат XML для обмена сообщениями между двумя сторонами.
WCF — это совместимая служба обмена сообщениями — она не может ни на что полагаться для другой стороны. WCF НЕ является системой удаленного управления объектами .NET или чем-то подобным. WCF не может полагаться на то, что другая сторона связи является приложением .NET, поэтому она не может просто обмениваться .СЕТЕВЫЕ объекты.
WCF может взаимодействовать с чем угодно и обслуживать данные для чего угодно — Ruby, Java — чего угодно. Наименьшим общим знаменателем для этого являются сериализованные XML-сообщения. Таким образом, WCF сериализует ваши сообщения в формат XML (текстовый или двоичный) и отправляет их по сети.
Комментарии:
1. Привет, Марк, на стороне службы WCF сначала выполняется сериализация, и объект .net преобразуется в сообщения, а затем эти сообщения преобразуются в последовательность байтов только на стороне службы. Мой вопрос в том, почему эта сериализация происходит, если в конце другая сторона собирается получить последовательность байтов.
2. Как я пытался объяснить: поскольку служба WCF может полагаться только на XML-сериализованное сообщение, она должна преобразовывать любые типы .NET в совместимое XML-сообщение, которое любой клиент — . NET или иначе — может затем читать и интерпретировать. Как еще вы могли бы заставить Ruby-клиент понимать ваш объект данных .NET??