Я смещаюсь к Flex, так как я делал разработку Flash/Flex с 2000. Я думаю для ответа на вопрос, хотя, он действительно сводится к уровню интерактивности и сложности, Вы хотите достигнуть.
Flex собирается позволить Вам сделать вещи, которые были бы почти невозможны в среде JavaScript (Ajax ASP.NET, jQuery, GWT), такой как простая 3-я графика. Создание сложной интерактивности действительно тривиально в Flex. Также это очень быстро и может обработать много анимированных объектов за один раз. Flex может связаться беспрепятственно с.NET или Java с помощью веб-сервисов. Оборотная сторона использования Flex - то, что похоже на встраиваемое приложение на Вашем веб-сайте, а не чем-то, что тесно интегрируется.
, Если бы Вы собираетесь придерживаться подхода JavaScript, обычно я предложил бы использовать что-то агностик языка как jQuery. Но так как у Вас уже есть опыт GWT, который может работать хорошо на Ваш проект. Оборотная сторона - то, что GWT в конце является все еще JavaScript, таким образом, Вы собираетесь быть ограниченными скоростью и интерактивностью того, что возможно в браузере.
Вы можете xml сериализовать класс в поле xml. Мы все время используем это для регистрации исключений в ETL.
Используя XmlSerializer, вам может понадобиться вспомогательный метод где-нибудь, который сериализует класс в строку ...
public static string SerializeToXml<T>(T value)
{
StringWriter writer = new StringWriter(CultureInfo.InvariantCulture);
XmlSerializer serializer = new XmlSerializer(typeof(T));
serializer.Serialize(writer, value);
return writer.ToString();
}
Затем просто поместите строку в базу данных, как любой другой .
Я сериализовал объекты как XML и без проблем поместил их в базу данных. Поскольку мы знали максимальный объем текста, мы использовали тип данных varchar (max) вместо того, чтобы переходить в форматы TEXT или Binary.
Это было веб-приложение OLTP, и мы обнаружили, что использование столбца с типом данных xml вызывает некоторые значительное использование процессора, так как xml проверялся при каждой вставке. В нашем случае xml никогда не запрашивался ни о чем, поэтому отсутствие возможностей xml-запросов сработало для нас.
Наилучший способ хранить данные в базе данных - в столбцах (для каждого свойства), чтобы их можно было запрашивать и индексировать. В этом помогут инструменты ORM.
Однако также возможно сериализовать класс как CLOB / BLOB ( varchar (max)
/ varbinary (max)
и т. Д.
Это то, что вы хотите, избегайте всего, что связано с реализацией или нетерпимостью к версии; поэтому, в частности, не используйте BinaryFormatter
. Все, что основано на контракте, должно работать; XmlSerializer
, DataContractSerializer
и т. Д. Или для быстрых двоичных файлов, возможно, стоит взглянуть на protobuf-net.
Но я подчеркиваю; столбцы были бы лучше.
Ознакомьтесь с Linq-to-SQL ( вопросы по SO , ресурс в MSDN ) или другие параметры ИЛИ сопоставления .
Есть несколько вариантов:
Сериализация во время выполнения, сериализуемые объекты помечены значком Атрибут Serializable, и в этом случае класс IFormatter выполняет всю работу по сериализация. Сериализуемый объект может быть ISerializable, но тогда вы будете необходимо реализовать метод GetObjectData (). Проблема с сериализацией во время выполнения заключается в том, что программа, читающая XML-данные, должна иметь знание типов CLR.
Xml-сериализация: Отключите сериализацию во время выполнения, в этом случае вы получите хорошую совместимость. Тип XmlSerializer содержит методы Serialize () и Deserialize (), поэтому любой объект может быть сериализован в XML и сохранен в базе данных, и когда вы получите его обратно, вы может легко десериализовать его.
Для чтения данных из базы данных вы можете использовать класс SqlCommand метод, выполняющий SQL-запросы, а именно ExecuteXmlReader (). ExecuteXmlReader () возвращает экземпляр XmlReader, который будет читать ваши XML-данные.