2017-04-11 3 views
-3

Design Ich muss Entitäten, z. B. Produkte Daten, von unserem lokalen System zu einem externen Client über Web-API verfügbar machen. Die Feldnamen der Entitäten & sind in beiden Systemen unterschiedlich, z.B. Kategoriedaten müssen ProductCategroy zugeordnet werden, ähnliche Datumsformate können ebenfalls variieren. Es können auch zusätzliche Geschäftsregeln für die Feldformate vorhanden sein.Wie Mapping-Entities zwischen zwei verschiedenen System in Web-API

Anstatt dann die Felder im Code mit einem Mapping-Tools wie Automapper oder entwickeln benutzerdefinierte Mapper zuordnen Ich möchte Config-Dateien verwenden, so dass wir nach dem Hinzufügen/Aktualisieren von Feldern nicht neu kompilieren müssen.

z.B. wir eine Person Einheit aussetzen müssen, sind die Feldnamen anders als unter

Person 
NationalityIsoCode <--Will need mapped to--> NATIONALITY 
BirthDate <--Will need mapped to--> DATEOFBIRTH 
IsPersonDisabled <--Will need mapped to--> DISABLED 
StartDate <--Will need mapped to--> DATEFROM 

Diese sehr leicht in AutoMapper gehandhabt werden kann. Das Problem, das wir haben, ist, dass, wenn ein neues Feld extern hinzugefügt/entfernt/exponiert werden muss, ich den Code neu kompilieren muss, nachdem ich diese Eigenschaft hinzugefügt habe. Ich möchte, dass diese Eigenschaften konfigurierbar sind, um eine Neukompilierung zu vermeiden.

Kann jemand ein Tool/Beispiele oder einen Ansatz vorschlagen, die helfen könnten, dies zu entwickeln? danke

+2

Es ist nicht klar, wie Ihre Entitäten in Ihrem lokalen System repersentiert werden, so dass Sie die Neukompilierung des Web-Service theoretisch vermeiden können, wenn Sie einer Entität ein Feld hinzufügen. Ohne das "Quellformat" des Mappings zu kennen, ist es schwierig, Vorschläge zu machen. – SergGr

+0

Clientanforderungen an unsere API für Daten, diese Daten werden auf dem SQL Server gespeichert und über Serviceendpunkte verfügbar gemacht. Unsere Middleware-API empfängt diese Anfrage vom Client und ruft die internen Endpunkte auf. Nachdem Daten empfangen wurden, speichern Geschäftsmodellobjekte wie 'Produkt' vorübergehend diese Daten. Anschließend transformiert die Serviceebene diese Daten basierend auf den Geschäftsregeln um verschiedene Felder im Modell. Nach der Transformation werden die Daten zurückgegeben. Ich habe oben eine Entität "Person" mit verschiedenen Feldnamen beschrieben – rumi

+0

Schauen Sie sich [diesen Beitrag] an (https://losetechies.com/jimmybogard/2011/02/09/autoprojecting-linq-queries/). Sie projizieren Abfragen an andere Klassen, die Eigenschaftsnamen prüfen, indem sie Ausdrucksbäume verwenden. Verwenden spezifischer: MemberInit. Sie können das bearbeiten, um die Konfiguration der Quell- und Zieleigenschaften von Ihrem XML zu laden. Ich kann ein vollständiges Beispiel für deine Wünsche veröffentlichen. –

Antwort

-1

APIs schaffen Endpunkte, wo zwei Systeme zusammentreffen. Die Zuordnung geschieht auf der Verbraucherseite. Ihre System-API sollte native Daten bereitstellen. Dann hat die API, die verbindet, die Last der Zuordnung. Der springende Punkt ist, Abhängigkeiten zu entfernen, nicht in den Mix einzubauen.

Wenn Sie beide APIs schreiben, setzen Sie die Zuordnung auf die Partnerseite - die primäre API sollte immer nativ bleiben, damit andere APIs eine Verbindung herstellen können.

Siehe: Trennung von Bedenken.

Verwandte Themen