Замена для сериализации XML

Класс PDO заменяет эти методы. Пример для Mysql или MariaDB:

$BDD_SQL = new PDO('mysql:host='.BDD_SQL_SERVER.';dbname='.BDD_SQL_BASE.';charset=utf8', 
        BDD_SQL_LOGIN, BDD_SQL_PWD, 
        array(
          PDO::ATTR_EMULATE_PREPARES => false,
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, //launch exception if error
          PDO::ATTR_DEFAULT_FETCH_MODE=> PDO::FETCH_ASSOC
                ));

Источник: PDO Class

24
задан John Saunders 27 July 2009 в 22:38
поделиться

6 ответов

XmlSerializer полностью поддерживается, но имеет некоторые ошибки:

  • относительно медленно; но обычно этого все еще достаточно быстро
  • поддерживает только публичных членов; может быть проблемой
  • требует списков средств доступа записи - просто уродливо

Однако я ожидаю, что это будет продолжаться в течение значительного времени; ИМО, именно BinaryFormatter имеет настоящие проблемы (при использовании для сохранения).

Я очень предвзят (поскольку я автор), но я бы выберите protobuf-net ; двоичный сериализатор, использующий проводной формат "буферов протокола" Google; быстрый, переносимый между языками / платформами, очень малый объем вывода, устойчивый к версиям и т. д. (и, конечно, бесплатный). Ясно, что это не xml - поэтому человек не может прочитать его.

14
ответ дан 29 November 2019 в 00:20
поделиться

Что касается XML Serializer, то он «поддерживается» и «поддерживается».

Все большее число отчетов об ошибках Connect в XML Serializer возвращаются, подтверждая ошибки и заявляя, что ошибки не будут исправлены.

Я уверен, что если вы столкнетесь с критической ошибкой безопасности в XML Serializer, она будет исправлена. Тем не менее, я думаю, что вряд ли будут исправлены другие ошибки, которые не столь критичны.

4
ответ дан John Saunders 29 November 2019 в 00:20
поделиться

Вот библиотека, которая заменяет XmlSerializer:

http://www.sharpserializer.com/en/index.html

0
ответ дан MatthewMartin 29 November 2019 в 00:20
поделиться

jSON намного быстрее, чем XML. Вы можете использовать Json.NET, чтобы прочитать его. Он имеет встроенную сериализацию.

http://james.newtonking.com/pages/json-net.aspx

1
ответ дан 29 November 2019 в 00:20
поделиться

Я думаю, что это очень интересный проект, из которого вы могли бы многому научиться. Вот небольшой материал для чтения по теме управления памятью. В нем рассматриваются некоторые основы управления памятью, приводится простая реализация malloc, а затем затрагивается пара более сложных тем.

Внутреннее управление памятью

Кроме того, поскольку вы упомянули, что хотите создать диспетчер памяти, который полезен для отладки, вы можете прочитать этот документ от разработчиков Memcheck / Valgrind (замечательный отладчик памяти для Linux). В нем подробно описано, как они отслеживают все метаданные (независимо от того, определен ли конкретный байт, инициализирован и т.д.) в memchck. Это немного подробно, но это хорошее чтение о том, как сделать масштабируемую и эффективную проверку динамической памяти. XmlSerializer поддерживается, его поведение известно, и он хорошо работает. Это не плохо". Он очень общий, хорошо задокументирован, содержит множество примеров. Производительность, вероятно, очень хорошая для того, что вам нужно. Вероятно, он делает то, что вам нужно.

Есть люди, у которых есть особые потребности, которые не решаются с помощью XmlSerializer. Из этих требований мы получаем такие вещи, как protobufs, DataContractSerializer и другие параметры.

Но XmlSerializer по-прежнему является очень общим и, вероятно, наиболее широко применяемым сериализатором в городе. Это, пожалуй, самый безопасный вариант для сериализации контента.


Что касается поддержки ...
MS может тормозить исправление ошибок. Я сравниваю это с WinForms. WinForms больше не является основной платформой пользовательского интерфейса, продвигаемой Microsoft. Но он все еще зрелый, хорошо работает, хорошо работает. XmlSerializer то же самое.

Что касается поддержки в будущем. У MS есть политика поддержки 5 + 5 - они поддерживают продукт в течение 5 лет после его выпуска, а затем вы можете купить для него 5-летнюю дополнительную поддержку. .NET Framework не является поддерживаемой "вещью" - это ОС Windows, которая включает .NET, которая поддерживается. Windows 7 будет включать .NET 3.5 (я думаю, это версия 3.5?), Поэтому все в .NET 3.5, включая WinForms и XmlSerializer, будет «официально поддерживаться» в течение дополнительных 5 лет, начиная с октября или после выхода Win7. Если это .NET 4.0, то все, что есть в 4.0 (включая WinForms и XmlSerializer), будет поддерживаться в течение 5 лет. Пятилетние часы перезапускаются каждый раз, когда новый продукт поставляется с .NET.

Что касается среды выполнения VB6, то изначально она была поставлена ​​с Visual Studio 6 в 1998 году. С тех пор он был включен в Windows, включая Windows Server 2008 R2, выпущенную в этом году. Таким образом, среда выполнения VB будет поддерживаться как минимум до 2014 года. Это как минимум 16 лет основной поддержки.

Вам не о чем беспокоиться, поскольку официальная поддержка . Вы говорите не о проекте с открытым исходным кодом. Это не временное предложение, такое как WSE или SOAP Toolkit.

Это правда, что есть степени поддержки, и приоритет старых .NET API снижается по мере того, как новые запускаются и продвигаются. Но более старые, по-видимому, более стабильны к тому времени, когда они выходят на плато. Вы в полной безопасности.

Вам не о чем беспокоиться, поскольку официальная поддержка . Вы говорите не о проекте с открытым исходным кодом. Это не временное предложение, такое как WSE или SOAP Toolkit.

Это правда, что есть степень поддержки, и приоритет старых .NET API снижается по мере того, как новые запускаются и продвигаются. Но более старые, по-видимому, более стабильны к тому времени, когда они выходят на плато. Вы в полной безопасности.

Вам не о чем беспокоиться, поскольку официальная поддержка . Вы говорите не о проекте с открытым исходным кодом. Это не временное предложение, такое как WSE или SOAP Toolkit.

Это правда, что есть степень поддержки, и приоритет старых .NET API снижается по мере того, как новые запускаются и продвигаются. Но более старые, по-видимому, более стабильны к тому времени, когда они выходят на плато. Вы в полной безопасности.

к тому времени они выходят на плато. Вы в полной безопасности.

к тому времени они выходят на плато. Вы в полной безопасности.

1
ответ дан 29 November 2019 в 00:20
поделиться

Если вы можете использовать .Net 3.5 (желательно с пакетом обновления 1), я бы посмотрел на DataContractSerializer . Хотя он менее настраиваемый, чем XmlSerializer, он быстрее, с ним проще работать (по крайней мере, по моему опыту) и более переносимым (например, для веб-сервисов). SP1 изменил его поведение по умолчанию на отказ, поэтому вы можете сериализовать любой класс без явного определения атрибутов всего, что вам нужно сериализовать.

Я бы рекомендовал внимательно прочитать документацию по нему, прежде чем вкладывать в него как изменение. В зависимости от того, насколько настроена ваша сериализация, она может не работать для вас.

1
ответ дан 29 November 2019 в 00:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: