Во-первых, XOML 3.0;WF4 использует прямой XAML.
Для этого есть два варианта.Это зависит от того, нужно ли вам обновлять длительный рабочий процесс в процессе, или вы хотите обновить рабочий процесс и использовать его для всех новых экземпляров, сохраняя текущие экземпляры в предыдущей версии.Давайте назовем эти две опции стратегиями upgrade и multiversion .
Re multiversion :
Я делаю это в настоящее время.По сути, вы должны изолировать каждую другую версию одного и того же рабочего процесса в домене приложения.Десериализация из xaml или создание экземпляра типа new
- это одно и то же - обе они приводят к загрузке сборки в текущий AppDomain.Если v1 рабочего процесса определен в сборке A.1, а v2 рабочего процесса определен в сборке A.2, вы можете столкнуться с проблемами связывания, если не будете осторожны.Изоляция каждой версии в своем собственном домене приложений помогает снизить вероятность этого.
Re upgrade :
В настоящее время это не поддерживается, но есть планы включить это в (ближайший) будущий выпуск.Рон Джейкобс выступил с докладом на PDC10 в октябре прошлого года с подробным описанием фьючерсов на WF4.В презентации были упомянуты три вещи (я помню): ошибки метаданных, нарушающие сборку, конечный автомат и предоставление пути обновления рабочих процессов во время выполнения.Я могу сказать вам, что конечный автомат был выпущен в недавнем обновлении Platform , и мне сказали, что функция metadata-error-breaks-the-build также скоро появится.Я предполагаю, что функция обновления также появится в ближайшее время.