4 Stimmen

Bewährte Verfahren zum Einrichten eines "Unternehmens"-Projekts in Visual Studio?

Ich bereite mich auf die Entwicklung einer Unternehmensanwendung für ein sehr kleines Unternehmen mit 6 Mitarbeitern vor (einschließlich mir selbst - bevor Sie sich fragen, warum ein 6-Personen-Unternehmen eine Unternehmensanwendung benötigt, wir haben eine Menge zu tun, mit einer Menge von Prozessen und Tools, die zur Vereinfachung benötigt werden). Wie immer versuche ich, bei der Einrichtung des Projekts die besten Praktiken zu befolgen; ich werde .NET 3.5 verwenden, wobei die Datenbank auf Windows Server 2003/SQL Server 2005 läuft.

Sollte ich, während ich die Lösung entwickle und teste, alles in meinem Hauptprojekt haben? Was ich meine, ist... In Visual Studio 2008 Professional können Sie sowohl "Datenbankprojekte" als auch alle anderen Projekttypen verwenden. Für diese Anwendung werde ich benötigen:

  • Datenbankprojekt mit den Erstellungs- und Testskripten für das neue Datenschema
  • C#-Projekte, die den eigentlichen Code/die Anwendung enthalten:
    1. Kundenseitige Website(s) mit ASP.NET MVC
    2. Backend-Auftragsabwicklungssystem, wahrscheinlich webbasiert, aber möglicherweise ein "Smart Client".
  • SSIS-Projekt mit Paketen zur ETL der "Live"-Anwendungsdaten, die von unseren Anbietern bereitgestellt werden, und zur Migration bestehender Kunden- und Auftragsdaten aus der alten Datenbank.
  • Berichtsprojekt für SQL Server Reporting Services

Grundsätzlich frage ich mich, ob es eine gute Idee ist, alle diese Komponenten als Teil einer großen Visual Studio-Lösung (nennen wir sie "EnterpriseSolution") zu haben, oder ob ich sie aufteilen und separat angehen sollte. In den meisten Büchern und Websites, die ich mir angesehen habe, sind sie alle zusammen enthalten, aber sie gehen auch von einem Team aus Entwicklern, DBAs, Architekten und dergleichen aus - in diesem Fall bin ich alle in einem Team. Das Datenbankprojekt und zumindest einige ETL-Prozesse müssen fertiggestellt und in die Produktion geladen werden, bevor der Rest der Anwendung geschrieben wird, da wir die Produkte des neuen Anbieters in eine Live-Umgebung laden müssen (um mit dem Verkauf zu beginnen).

Ich bin ein wenig überfordert, wie ich das Ganze strukturieren soll, aber ich möchte mir einen Gesamtplan zurechtlegen, bevor ich anfange, die Dinge auszulegen und zu programmieren.

Haben Sie Vorschläge, wie man ein solches Projekt in Angriff nehmen kann?

2voto

Jozef Izso Punkte 1695

Es ist auf jeden Fall eine gute Idee, eine Lösung zu verwenden, die mehrere Projekte enthält. Wenn Sie ASP.NET MVC verwenden möchten, definieren Sie ein C#-Projekt für jede Schicht: MVC Web, Service Layer, Data Access Layer und ein separates Testprojekt. Sie können von Rob Conery's Schaufenster Beispielanwendung oder Oxit .

Sie können auch versuchen, die Guidance Packages aus der Gruppe Patterns & Practices zu verwenden:

http://msdn.microsoft.com/en-us/practices/default.aspx

2voto

Tom A Punkte 568

Ich habe festgestellt, dass es am bequemsten ist, den clientseitigen und den serverseitigen Code in getrennten Lösungen zu verwalten. Dies setzt voraus, dass der Server eine stabile Schnittstelle wie z. B. einen Webdienst oder eine WCF-Schnittstelle bietet.

Mit der Zeit wachsen die Dinge, Sie verwenden vielleicht mehr als eine Client-Technologie (Windows, Web...) und diese Technologie-Cluster in eigenen Lösungen getrennt zu halten, macht die Dinge einfacher.

Wenn Sie auf der Suche nach einem guten Architekturbeispiel sind, sehen Sie sich die Northwind Starter Kit bei CodePlex. Ich fand dies beim Lesen " Microsoft .Net: Architektur von Anwendungen für das Unternehmen ", von Dino Esposito und Andrea Saltarello.

Das Northwind Starter Kit ist ein Muster Anwendung, die von Managed Designs ( http://www.manageddesigns.it ) und soll als Blaupause verwendet werden beim Entwurf und der Implementierung einer .NET Anwendungsarchitektur zu verwenden. Die Anwendung verwendet den Standard Northwind-Datenbank, wie sie in Microsoft SQL Server und Microsoft Access enthalten ist: Es sind keine Änderungen am Datenbankschema sind nicht erforderlich, um um das Starterkit zu installieren und auszuführen.

Ich stimme mit @Chris Ballance überein, dass die Einbeziehung eines Datenbankprojekts sehr hilfreich sein kann. Beachten Sie aber, dass das DB-Projekt ein wenig kompliziert erscheinen kann, da es die Projekt- und Referenz-DB-Strukturen synchronisiert.

+tom

1voto

Bryan Sebastian Punkte 423

Ich würde empfehlen, zunächst eine "leere Lösung" zu erstellen, d. h. eine *.sln-Datei (z. B. EnterpriseSolution.sln), die sich in einem Ordner namens EneterpriseSolution befindet. Eine leere Lösung kann über "Andere Typen" erstellt werden. Ich würde dann die zusätzlichen Teile, die Sie beschrieben haben, als separate Projekte hinzufügen, jedes in seinem eigenen Ordner unter dem Ordner "EnterpriseSolution".

Zum Beispiel würde jede Ihrer Kunden-Websites ihren eigenen Projektordner haben. Es sieht so aus, als hätten Sie mehr als eine Website, also müssen Sie sicherstellen, dass Sie verschiedene "Ports" für jede Website einrichten, unter denen sie ausgeführt wird, wenn Sie einen Solution Wrapper verwenden. Sie können jedoch auch verschiedene Solution Wrapper" erstellen (als leere Solution zum Starten und dann die gewünschten Projekte referenzieren), um jede Website einzeln in Ihre Ordnerstruktur einzubinden, damit Sie sich auf einen Teil Ihrer Unternehmenslösung konzentrieren können. Aber physisch werden Sie wissen, wo sich alles befindet und wie es organisiert ist.

Auf diese Weise sehen Sie, wenn Sie Ihren Enterprise Solution-Ordner über den Windows-Explorer betrachten, nur Ihre Solution-Datei(en) und Ihre Projektordner.

Vielen Dank und viel Erfolg bei Ihrem Projekt.

0voto

Igor Zelaya Punkte 4107

Ich habe separate Lösungen für jeden unabhängigen Teil des Projekts erstellt und dann begonnen, sie in komplexere Lösungen zu integrieren. Auf diese Weise können Sie nur einen Teil der Anwendung für Unit-Tests oder Debugging laden.

Bei einer mehrschichtigen Anwendung würde ich zum Beispiel eine unabhängige Lösung für die Datenschicht und ein Unit-Test-Projekt erstellen. Eine andere Lösung würde die Datenschicht und die Geschäftsobjektebene umfassen, die mit Unit-Tests zusammenarbeiten. Die vollständige Lösung würde die oben genannten Projekte plus das UI-Projekt umfassen

Auf diese Weise kann ich jeden Teil meiner Anwendung separat laden und testen.

0voto

Jack Ryan Punkte 8258

Ich beginne gerne mit einer einzigen Lösung, bis sie so groß ist, dass die Erstellungszeiten merklich langsam sind.

Wie Sie dies tun, hängt davon ab, wie die verschiedenen Teile des Systems miteinander verbunden werden sollen. Am einfachsten ist es, eine dienstorientierte Architektur zu verwenden. Dann kann jeder Dienst eine andere Lösung haben und das Frontend seine eigene Lösung.

Ich würde jedoch empfehlen, sich auf eine Lösung zu beschränken und die Dinge nur dann zu verkomplizieren, wenn es notwendig ist. Es ist schön, wenn man alles mit einem Klick bauen kann.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X