2010-12-21 2 views
2

Ich habe eine einfache Desktop-Anwendung mit C#/WPF geschrieben und ich bin jetzt auf der Suche nach einer anderen, größeren Anwendung, die einen Großteil der Funktionalität teilen wird. Ich denke, dass ich drei separate Projekte erstellen sollte: eines mit dem gemeinsamen Code und jeweils eines für die beiden Apps.Tipps/Ressourcen zum Strukturieren von Shared Code-Bibliotheken in C#/WPF?

Mein Problem ist, dass ich nicht vollständig mit .NET/WPF vertraut bin, also weiß ich nicht, ob es einige Best Practices für diese Art von Sache gibt. Kann jemand gute Informationsquellen, Beispielprojekte oder nur einen kurzen Rat anbieten?

Bearbeiten: Um ein wenig mehr Details in das Szenario zu bringen, ist die erste Anwendung ein spezialisierter Editor und die zweite Anwendung nimmt diesen Dateieditor und wickelt ein Projektmodell um eine Art grundlegende IDE zu erstellen.

+0

bearbeitet in Reaktion auf Ihre Bearbeitung. – Firoso

Antwort

1

Ehrlich, es hängt davon ab, auf welcher Ebene der Code, den Sie teilen möchten, ist. Zum Beispiel ist es völlig plausibel, den gesamten Geschäftslogik-Code in eine Projekt-/Klassenbibliothek zu schreiben und unabhängig zu verwalten, aber das Mischen von Geschäftslogik mit benutzerdefinierten WPF-Steuerelementen sollte dringend unterbunden werden. Denken Sie über die Schichten der Abstraktion nach, die Sie modularisieren, und über die Abhängigkeiten, die Sie einführen und entsprechend umgestalten.

Edit:

Als Antwort auf Ihre oben genannten Änderungen Ich schlage vor, die folgenden: Die Logik und DAL im Zusammenhang mit dem oben sollte in ein Projekt als separate Namensräume geschoben werden. Die visuellen Elemente (View, Viewmodel) sollten höchstwahrscheinlich in ein separates Projekt und Namespace verschoben werden. Sobald Sie diese zusammenführen und von einer EXE starten können, die ein Host-Fenster und ein UserControl für den Rest Ihres gehosteten visuellen Inhalts enthält, können Sie dann wahrscheinlich mit der Integration in Ihr größeres IDE-Projekt fortfahren. Der Schlüssel hier ist:

Visuelle Schicht- und anzeigen Logik -> Editor.Visual.dll

Biz Logic & Data Access -> Editor.Core.dll

Ich hoffe, das hilft.

+0

Nun, es geht im Wesentlichen darum, die gesamte kleinere App zu übernehmen und in ein Steuerelement umzuwandeln, das dann in die größere App eingebettet werden kann. Mir geht es gut mit den Konzepten der Trennung von UI und Geschäftslogik von einer Code-Layering-Perspektive, aber ich bin mir nicht sicher, ob es einen starken Grund gibt, diese über mehrere Projekte hinweg aufzuteilen. – mwtb

+0

Das hört sich nach einem höchst ungewöhnlichen Szenario an ... Ich bin mir nicht sicher, ob ich so etwas implementieren würde ... wenn es sich um winzige persönliche Werkzeuge handelt, ist das vielleicht kein wirklich großes Problem. – Firoso

+1

Scheint ein vernünftiger Ort zu beginnen. Danke für die Antwort. – mwtb