Методы сериализации в .NET Framework
Microsoft .NET Framework 2.0 поддерживает четыре технологии удаленного взаимодействия – Message Queuing, Enterprise Services, Remoting, Web services. Какая бы технология не была выбрана, в любом случае передача данных между удаленными компонентами является одним из основных моментов удаленного взаимодействия. Данные могу передаваться как сообщение в очереди (MSMQ) или как параметры удаленного вызова и результат вызываемой функции (остальные технологии). В любом случае, для реализации распределенной системы необходимо определить процедуры сериализации и десериализации для передаваемых классов.
Классы, производящие сериализацию и десериализацию в .NET Framework, называются классами форматирования (formatters). Не считая служащего для обеспечения совместимости ActiveXMessageFormatter, в .NET Framework выделяется три различных независимых класса форматирования: XmlSerializer, SoapFormatter, BinaryFormatter. Они используются как для записи и чтения объектов из потоков ввода-вывода, так и для построения распределенных систем:
– технология веб‑служб ASP.NET использует XmlSerializer;
– технология Remoting использует SoapFormatter, BinaryFormatter или созданный пользователем класс;
– при работе с сообщениями MSMQ используется XmlSerializer (через XMLMessageFormatter), или BinaryFormatter (через BinaryMessageFormatter), или созданный пользователем класс;
– технология Enterprise Services основана на Remoting и использует BinaryFormatter.
Можно провести классификацию возможных методов сериализации по следующим основным признакам.
1. Классификация по виду обрабатываемого графа:
– универсальные методы: граф произвольного вида с циклами;
– произвольный ациклический граф;
– дерево.
2. Классификация по формату хранения информации в хранилище:
– бинарные методы, использующие двоичный формат хранения данных, который не пригоден для чтения человеком без использования специальных средств;
– текстовые методы, используют XML или иные текстовые форматы, пригодные для чтения или редактирования человеком при использовании текстового редактора.
3. Классификация по спецификации формата данных, полученного в результате сериализации:
– закрытые методы: спецификация задается только при помощи интерфейсов всех классов, объекты которых образуют граф; в этом случае обе удаленные компоненты должны быть созданы на одной языковой платформе, причем обе стороны должны иметь как минимум описание интерфейса сериализуемых классов;
– открытые методы: спецификация может быть задана в виде общепринятого формата, например схемы XSD.
По данной классификации XmlSerializer реализует открытый текстовый неуниверсальный метод, BinaryFormatter – закрытый двоичный универсальный метод, SoapFormatter – текстовый открытый метод. Дополнительной особенностью каждого из классов, за исключением BinaryFormatter, является ограничения на классы, которые подлежат сериализации. Данные ограничения будут рассмотрены далее.
Дата добавления: 2015-08-14; просмотров: 665;