Ich versuche, die beste Lösung für ein großes Problem mit der Code-Duplizierung zu finden. Wir haben ein ASP.NET Web Api
Backend mit einem Angular
Frontend. Unsere Backend-Lösung hat auch mehrere Projekte, die die Business Logic
und DAO
für den Zugriff auf die Datenbank enthalten.Strategien zur Vermeidung von Code-Duplizierung in Web-Anwendung
Nun, das Problem ist, wir haben mehrere Kunden, jeder hat eine andere Benutzeroberfläche mit manchmal anderen Javascript
Code, aber das Backend bleibt gleich. Also, derzeit, für jeden Kunden erstellen wir ein neues Projekt in Visual Studio
mit fast allen Client-Seite Code dupliziert wird + die Benutzeroberfläche ändert und auch alle Controllers
aus dem Backend dupliziert werden, sowie Dateien wie Global.asax
, OWIN Auth, etc .
Dies wird zum Albtraum, es gibt eine Menge Code doppelt und es ist ein Schmerz zu pflegen. Ich habe einige Optionen denken:
- eine unterschiedliche
.js
,.css
,.html
Datei für jeden Kunden, sondern nur für die Dateien, die wir ändern, dann, wenn die Bereitstellung,Visual Studio
sagen, welche Datei entsprechend der Konfiguration zu implementieren (I weiß nicht, ob dies möglich ist) - ein Tool finden, die uns Code bedingt zu ändern, in der gleichen Art und Weise in Javascript erlaubt
Visual Studio
tut mitWeb.config
für die verschiedenen Konfigurationen deploy - Suchen Sie nach einer anderen Ansatz/Architektur für den Code?
wäre dies besser für programmers.se geeignet? – jleach
Wenn ein Moderator das denkt, dann zögern Sie nicht nach oben zu gehen :) – Andres
Ich gebe das nicht als Antwort, weil es wirklich schwer zu tun ist und möglicherweise von Ihrem VC-System abhängig ist. Ich teile das Projekt tatsächlich auf, wobei sich der Backend-Code in einem Verzeichnis befindet und der Front-End-Code für jedes Projekt in einem anderen Verzeichnis liegt, mit dem gemeinsamen angularJS-Code in einer git-Unterstruktur. Um ein neues Kundenprojekt zu starten, haben wir [gabel] (http://www.woodcp.com/2014/01/how-to-fork-git-repositories-on-visual-studio-online/) unser Basisprojekt Front-End und verzweigen das Back-End (so können wir Verbindungsstrings und so weiter). Clientspezifische Änderungen gehen außerhalb des Teilbaums im Client-Projekt. –