Comment concevoir une application (classes, interfaces dans la bibliothèque de classes) dans .NET lorsque nous avons une conception de base de données fixe de notre côté et que nous devons prendre en charge les importations de données sources de données tierces, qui seront probablement en XML?Importation de données à partir d'une source de données tierce (conception d'architecture ouverte)
Par exemple, nous disons que nous avons dans notre DB une table de produits qui comporte des colonnes Id Titre Description de TaxLevel Prix
et de l'autre côté, nous avons par exemple les produits: ProductId ProdTitle Texte Prix de base Quantité.
Actuellement, je le faire comme ceci: Avoir le XML tiers convertir en cours et et de XSD puis désérialiser son contenu dans des objets typés forts (ce que nous obtenons à la suite de ce processus est des classes comme ThirdPartyProduct, ThirdPartyClassification, etc.).
, j'ai des méthodes comme celle-ci:
InsertProduct(ThirdPartyProduct newproduct)
Je ne me interfaces pour le moment mais je voudrais. Ce que je voudrais, c'est implémenter quelque chose comme
public class Contoso_ProductSynchronization : ProductSynchronization
{
public void InsertProduct(ContosoProduct p)
{
Product product = new Product(); // this is our Entity class
// do the assignments from p to product here
using(SyncEntities db = new SyncEntities())
{
// ....
db.AddToProducts(product);
}
}
// the problem is Product and ContosoProduct have no arhitectural connection right now
// so I cannot do this
public void InsertProduct(ContosoProduct p)
{
Product product = (Product)p;
using(SyncEntities db = new SyncEntities())
{
// ....
db.AddToProducts(product);
}
}
}
où ProductSynchronization sera une interface ou une classe abstraite. Il y aura très probablement de nombreuses implémentations de ProductSynchronization. Je ne peux pas coder en dur les types - classes comme ContosoProduct, NorthwindProduct pourrait être créé à partir du XML tiers (de préférence je continuerais à utiliser la désérialisation).
J'espère que quelqu'un comprendra ce que j'essaie d'expliquer ici. Imaginez que vous êtes le vendeur et vous avez de nombreux fournisseurs et chacun utilise son propre format XML propriétaire. Cela ne me dérange pas le développement, qui sera bien sûr nécessaire chaque fois qu'un nouveau format apparaît, car il ne faudra que 10 à 20 méthodes pour être implémentées, je veux juste que l'architecture soit ouverte et supporte cela. Dans vos réponses, veuillez vous concentrer sur le design et pas tellement sur les technologies d'accès aux données car la plupart sont assez simples à utiliser (si vous avez besoin de savoir, EF sera utilisé pour interagir avec notre base de données).
Désolé, mais je ne pose pas de questions sur la cartographie des scénarios, la question est plus sur la conception. Comment mes classes et interfaces doivent-elles être conçues? Je savais que la question n'était pas assez claire mais je ne peux pas mieux l'expliquer. – mare
Édité ma réponse. Parfois, la façon dont vous cartographiez les données est une grande partie de la conception réelle. –
J'ai accepté votre solution comme probablement la meilleure mais je ne vais pas y aller à cause de mon manque de connaissances XSLT. – mare