2012-04-24 2 views
2

Есть ли хороший способ для версии типов данных и методов в WCF-сервисах?Пути к версии услуг WCF

Что-то вроде этого было бы неплохо включить метод в версии 1.0 в версию 4.5.

[ServiceContract()] 
interface ITradeTrackingService 
{ 
    [OperationContract()] 
    [Version(1.0, 4.5)] 
    void PublishQuote(Quote quote); 
} 

И что-то похожее на типы данных.

Тогда я хотел бы в моих URL сделать так:

server.com/ws/2.3/ 

А потом в моем Global.asax BeginRequest сделать что-то вроде этого:

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
    Service.Version = someParsingOfUrl(); // return 2.3; 
} 

И тогда правильные методы были подвергнуты и были показаны правильные значения в типах данных.

Является ли это только мечтой или это может быть сделано каким-то образом?

+1

Возможный дубликат [Лучшие практики для управления версиями ваших сервисов с помощью WCF?] (Http://stackoverflow.com/questions/36999/best-practices-for-versioning-your-services-with-wcf) – Cheeso

ответ

7

Существует bunch of stuff об обслуживании версий - есть много вещей, которые вам нужно учитывать.

Самое низкое трение статье я прочитал о версионности изложена here, однако, кажется, немного «Hacky» в тех местах, где конкретно вы использовать наследование интерфейса до версии вашего контракта конечной точки (см пример here).

У самих Microsoft довольно много об этом говорят (here).

1

Корпорация Майкрософт опубликовала отличную статью о Versioning Strategies в WCF.

В статье автор рассматривает два основных метода контрактов Versioning службы:

Проворного Versioning: Положитесь на обратной совместимости для как можно дольше и избежать формального контракта и конечные версий до совместимости не нарушается. Этот подход полезен в гибких средах, требующих частого обновления производственного кода.

enter image description here

Строгий Versioning: Выполнение официального контракта и конечной точки управления версиями для любого изменения контракта на оказание услуг, договор данных, контракт сообщения или других связанных с контрактом или изменения конечных точек, связанных с. Этот подход лучше всего подходит для сред, в которых используются менее частые производственные обновления, или которые требуют подробного отслеживания любых изменений.

enter image description here

Существует также подход, описанные называется Пол-Строгого Версионность, которая лежит между гибким и Строгими версиями.

В связанной статье обсуждается также управление версиями Data Contracts.

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