На прошлой неделе я потратил много времени на сериализацию. За это время я нашел множество примеров, использующих либо BinaryFormatter, либо XmlSerializer. К сожалению, я не нашел примеров, подробно описывающих различия между ними.
Возникновение моего любопытства заключается в том, почему BinaryFormatter может десериализоваться непосредственно в интерфейс, а XmlSerializer - нет. Джон Скит в ответ на "приведение к нескольким (неизвестным типам) во время выполнения" предоставляет пример прямой двоичной сериализации в интерфейс. Стэн Р. предоставил мне средства для достижения моей цели с помощью XmlSerializer в своем ответе на вопрос "Десериализация объекта XML в интерфейс."
Помимо очевидного того, что BinaryFormatter использует двоичную сериализацию, в то время как XmlSerializer использует XML, я хотел бы более полно понять фундаментальные различия. Когда использовать тот или иной, а также плюсы и минусы каждого из них.