Versionatge de WCF (II)

L’arquitectura de serveis ha de mostrar certa flexibilitat a l’hora d’incloure noves funcions i contractes de dades.

Afegir noves propietats a una classe del contracte implicarà el trencament del mateix. Això ho solucionarem amb el versionatge i fent estàtiques les funcions i propietats de les classes que s’implementen a cada versió, augmentant quan es requereixi canviar-les.

Doncs és oportú desar la lògica en un nucli consultable per les diferents versions: la BE (Business Entities) on s’especificaran entitats que seran fàcilment convertibles via cast des el DAL a les diferents versions. La BLL implementarà al lògica pròpia de consultes, accessos i demés a les dades, implementada via interfície de getters per poder accedir a diferents tipus de lògiques. La DAL serà la classe que més variarà en cada canvi de dades i que estarà redefinida via Entity Framework.

 

Versionatge de WCF (I)

El canvi de propietats d’un contracte, des afegir una propietat o treure-la a quelcom més comú com afegir més elements a un enum pot implicar el trencament de contractes.

Per aquest motiu és fa important tenir un versionatge dels [DataContracts] així com també de les funcions en si.

Treballant amb WCF hi ha un element que ens facilitarà força la posibilitat de múltiples versions d’un contracte treballant en un mateix servei: els namespace. Per aquesta raó, aïllar les versions en namespaces diferents ens afegirà possibilitat de treballar en diferents versions sense necessitat de canvis traumàtics que impliquin renovar referències en múltiples projectes de cop.

<%@ ServiceHost Language="C#" Debug="true" Service="Agrifood.CloudFI.Service.v1.FormulaIntegrationCloudService" CodeBehind="ServiceCloudFI.svc.cs" %>

Referències:

https://msdn.microsoft.com/en-us/library/ff384251.aspx
https://msdn.microsoft.com/en-us/library/ms731060(v=vs.110).aspx
http://devproconnections.com/development/versioning-wcf-services-part-i