Ich habe ernsthafte Zweifel am Design meiner Webanwendung.
Ich wollte die Geschäftslogik von der Schnittstelle trennen, also habe ich eine Web-API erstellt, die alle Anforderungen an die Datenbank verarbeitet.
Es ist eine ASP.NET-Web-API mit Entity-Framework und einer Arbeitseinheit sowie einem generischen Repository-Muster. Bisher ist alles gut.
PROBLEM
Wenn ich Hilfe benötige, kann ich keine effiziente Methode zum Freigeben von Objekten zwischen der API und der Anwendung finden.
Ich möchte das Entitätsobjekt nicht direkt serialisieren. Ich dachte, es wäre eine schlechte Praxis, denn wenn sich das Entitätsmodell ändert, könnte ich ohne Grund große Objekte serialisieren.
Wie es jetzt implementiert ist
Da meine Schnittstelle eine ASP.NET-Webanwendung in C # und meine API in C # ist, habe ich eine gemeinsame Bibliothek mit der Definition aller meiner Klassen erstellt, die ich zwischen ihnen teilen möchte.
Ich weiß, dass die Lösung nicht funktioniert, wenn ich eine Android-App entwickle. Ich muss meine Klassen erneut in Java erstellen, aber das ist nicht mein größtes Problem.
Das Problem ist, dass ich das Gefühl habe, meine Objekte immer zu konvertieren.
BEISPIEL
Hier ist ein Beispiel für meinen Arbeitsablauf:
Ich beginne mit einem Modell mit allen Objekten und den Datenanmerkungen für mein Formular, dann würde der Benutzer dieses Modell an einen Controller senden.
Im Controller muss ich dieses Modell in eine Klasse in meiner gemeinsamen Bibliothek konvertieren und dieses Objekt dann an meine API senden.
Dann fängt ein Controller in meiner API den Aufruf ab und konvertiert dieses Objekt in ein Entitätsobjekt, um die Datenbank zu aktualisieren.
Ich habe also 3 Klassen
- Das Modell für die Ansicht mit allen Datenanmerkungen für die Validierung (Client)
- Die allgemeinen Bibliotheksklassen zum Freigeben der Objekte (DLL)
- Die Entitätsklassen (API)
Ich habe das Gefühl, dass ich etwas wirklich falsch mache. Gibt es etwas eleganteres? Ich möchte sicherstellen, dass ich eine gute Lösung für dieses Problem habe, bevor das Projekt zu groß wird.