2012-03-06 2 views
2

У меня есть тип, который динамически загружается. Переменная часть считывается из поля xml в db. Например.Обеспечение обратной совместимости для динамически загружаемых типов

class SomeClass 
{ 
    public int Id {get; set;} 
    public string Name {get; set;} 
    public string Url {get; set;} 
} 

название и URL части являются contructed, читая раздел XML из

<element> 
    <name>Name</name> 
    <type>string</type> 
</element> 
<element> 
    <name>Url</name> 
    <type>string</type> 
</element> 

Позже класс будет динамически загружен:

class SomeClass 
{ 
    public int Id {get; set;} 
    public string Name {get; set;} 
    public string Url {get; set;} 
    public string FallbackUrl {get; set;} 
} 

из

<element> 
    <name>Name</name> 
    <type>string</type> 
</element> 
<element> 
    <name>Url</name> 
< type>string</type> 
</element> 
<element> 
    <name>FallbackUrl</name> 
    <type>string</type> 
</element> 

Как выглядит обратная совместимость Является ли это продолжением класса, как я могу заверить, что когда более новая версия при развертывании в более старой версии dbs (которая когда-нибудь может быть так) не сработает?

+2

Можете ли вы более четко рассказать о том, что вас беспокоит? Я хорошо знаком с версиями DTO и т. Д., Но ваши намерения не ясны. –

+0

, чтобы обеспечить обратную совместимость, то есть если версия, содержащая расширенные типы, развернута на более раннем db, она не разбивается и функционирует нормально только с меньшим подмножеством или свойствами. – Elena

+0

Вы десериализируете Xml? Или просто чтение Xml и присвоение значений? Для получения наилучших результатов и контроля ознакомьтесь с IXmlSerializable в MSDN. – IAbstract

ответ

3

Есть прочитанный: http://www.xfront.com/Versioning.pdf

В частности (аннотация):

Рассмотрим два случая для изменений схем XML:

Случай 1. Новая схема изменяет интерпретацию некоторых элемент. Например, конструкция, которая была действительной и значимой для предыдущей схемы, не проверяет новую схему.

Дело 2. Новая схема расширяет пространство имен (например, путем добавления новых элементов), но не делает недействительными ранее действующие документы.

Некоторые опции для идентификации новой версии схемы являются:

  1. Изменение (внутренней) схемы версия атрибута.
  2. Создайте атрибут schemaVersion для корневого элемента.
  3. Изменение целевого пространства имен схемы.
  4. Изменение имени/местоположения схемы.

XML Schema версирования Best Practices

[1] Захват версии схемы где-то в схеме XML.

[2] Определите в документе экземпляра, какую версию/версию схемы, с которой экземпляр совместим.

[3] Сделать доступными предыдущие версии XML-схемы.

[4] Когда XML-схема только расширена (например, новые элементы, атрибуты, расширения для перечисляемого списка и т.д.), следует стремиться не к аннулированию существующих экземпляров документов

[5] Где новая схема меняет интерпретацию какого-либо элемента (например, конструкция , которая была действительной и значимой для предыдущей схемы, не проверяет новую схему ), следует изменить целевое пространство имен.

 Смежные вопросы

  • Нет связанных вопросов^_^