Qual è l'approccio migliore alla mappatura tra Entity, View Model o dataContract.
Ad esempio ho visto le seguenti strutture di modellazione per SOA.
WCF - > DataContract distribuito al client.
Livello intermedio - > Modelli e interfacce con quindi mappati al tipo di repository ed eventualmente una classe concreta che implementa un ORM.
In alcuni casi ho visto il riflesso usato, altri solo impostando le proprietà e le librerie di terze parti come AutoMapper per C #.
Qual è il modo più efficace per mantenere il sistema "di facile manutenzione" e funzionale o per i corsi di cavalli?
EDIT: la domanda non era incentrata su Microsoft, ho usato SOA per java e lo stesso problema si è verificato per quanto riguarda la mappatura. Sto chiedendo di mappatura diretta vs riflessione ed ecc.? Non ha niente a che fare con gli ORM.
per es.
thesolution.models.interfaces
public interface IProduct { //bundle of properties and method signatures }
thesolution.models
public abstract class Product implements IProduct { //implementation }
thesolution.repositories.sapMD
public class Product extends Product implments IProduct { //implements and do stuff}
thesolution.repositories.sapCRM
public class Product extends Product implments IProduct { //implements and do stuff}
thesolution.controllers
public class ProductController
{
public IActionResponse Save(IProduct product)
{
//save to sapMD repository
IAction actionMd = ((thesolution.repositories.sapMD.Product)product).Save();
//save to sapCRM repository
IAction actionCrm = ((thesolution.repositories.sapMD.Product)product).Save();
IActionResponse response = new thesolution.message.product.ActionResponse();
response.Actions.Add(actionMd);
response.Actions.Add(actionCrm);
return response;
}
}
thesolution.DataContracts
//XSD JAXB or etc.
thesolution.Services
//your service method
public class ProductServices ... {
public thesolution.DataContracts.ResponseAction Save(thesolution.DataContracts.Product product){
// so now how do you map back to IProduct manually, reflection or etc.
}
}