ich auf dem besten Ansatz einige Ratschläge in der folgenden Situation verwenden möchte ...N-Tier-Architektur - Struktur mit mehreren Projekten in VB.NET
wird ich eine Windows-Anwendung und eine Web-Anwendung (Präsentation Schichten), die beide auf eine gemeinsame Business-Schicht zugreifen. Die Business-Schicht untersucht eine Konfigurationsdatei, um den Namen der DLL (Datenschicht) zu finden, auf die sie zur Laufzeit einen Verweis erstellen wird (ist dies die beste Vorgehensweise?).
Der Grund für das Erstellen der Referenz zur Laufzeit auf der Datenzugriffsebene besteht darin, dass die Anwendung je nach dem, was der Client verwendet, mit einem anderen 3rd Party Accounting System verbunden ist. Ich hätte also eine separate Datenzugriffsschicht, um jedes Buchhaltungssystem zu unterstützen. Diese könnten separate Setup-Projekte sein, jeder Client würde das eine oder das andere verwenden, sie müssten nicht zwischen den beiden wechseln.
Projekte:
MyCompany.Common.dll - Enthält Schnittstellen, alle anderen Projekte haben einen Verweis auf diese ein.
MyCompany.Windows.dll - Windows Forms-Projekt, Referenzen MyCompany.Business.dll
MyCompany.Web.dll - Website-Projekt, MyCompany.Business.dll Referenzen
MyCompany.Busniess.dll - Geschäft Schicht, Referenzen MyCompany.Data * (zur Laufzeit)
MyCompany.Data.AccountingSys1.dll -. Datenschicht für Abrechnungssystem 1 MyCompany.Data.AccountingSys2.dll - Datenschicht für Abrechnungssystem 2
Das Projekt MyCompany.Common.dll würde alle Schnittstellen enthalten, jedes andere Projekt hätte einen Verweis auf dieses.
Public Interface ICompany
ReadOnly Property Id() as Integer
Property Name() as String
Sub Save()
End Interface
Public Interface ICompanyFactory
Function CreateCompany() as ICompany
End Interface
Das Projekt MyCompany.Data.AccountingSys1.dll und MyCompany.Data.AccountingSys2.dll würde die Klassen wie folgt enthalten:
Public Class Company
Implements ICompany
Protected _id As Integer
Protected _name As String
Public ReadOnly Property Id As Integer Implements MyCompany.Common.ICompany.Id
Get
Return _id
End Get
End Property
Public Property Name As String Implements MyCompany.Common.ICompany.Name
Get
Return _name
End Get
Set(ByVal value as String)
_name = value
End Set
End Property
Public Sub Save() Implements MyCompany.Common.ICompany.Save
Throw New NotImplementedException()
End Sub
End Class
Public Class CompanyFactory
Implements ICompanyFactory
Public Function CreateCompany() As ICompany Implements MyCompany.Common.ICompanyFactory.CreateCompany
Return New Company()
End Function
End Class
Das Projekt MyCompany.Business. dll würde die Geschäftsregeln bereitstellen und Daten von der Datenschicht abrufen:
Public Class Companies
Public Shared Function CreateCompany() As ICompany
Dim factory as New MyCompany.Data.CompanyFactory
Return factory.CreateCompany()
End Function
End Class
Alle Meinungen/Vorschläge würden sehr geschätzt werden.
Ich werde es versuchen, danke. –
+1 Sie haben vergessen zu erwähnen, dass nach einer Weile auch die Hälfte einer "Common" -Bibliothek außer Gebrauch ist und niemand es jemals entwirrt. Sie könnten auch an den Ideen interessiert sein (hauptsächlich in meinen Kommentaren IMNSHO) in http://stackoverflow.com/questions/925453/wcf-service-proxy-name-namespace-naming-strategy/2430056#2430056 –
+1 danke! Wir haben gerade etwas Ähnliches implementiert, gut, um andere zu sehen, die es durchdacht haben und zu der gleichen Struktur wie wir gekommen sind. –