多个项目的结构,我想在下列情况下使用的最佳方法一些建议......N层体系结构 - 在VB.NET
我将有一个Windows应用程序和Web应用程序(演示这些都将访问公共业务层。业务层将查看配置文件以查找它将在运行时创建引用的dll(数据层)的名称(这是最佳方法?)。
在运行时创建引用到数据访问层的原因是应用程序将根据客户端使用的内容与不同的第三方记帐系统进行接口。所以我会有一个单独的数据访问层来支持每个会计系统。这些可以是独立的设置项目,每个客户端都可以使用其中一个或另一个,他们不需要在两者之间切换。
项目:
MyCompany.Common.dll - 包含接口,其他所有项目都这一个参考。
MyCompany.Windows.dll - Windows窗体项目,引用MyCompany.Business.dll
MyCompany.Web.dll - 网站项目,引用MyCompany.Business.dll
MyCompany.Busniess.dll - 商务层,参考文献MyCompany.Data *(在运行时)
MyCompany.Data.AccountingSys1.dll - 会计系统数据层1 MyCompany.Data.AccountingSys2.dll - 会计系统数据层2
该项目MyCompany.Common.dll将包含所有的接口,每个其他项目将有一个引用到这一个。
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
项目MyCompany.Data.AccountingSys1.dll和MyCompany.Data.AccountingSys2.dll将包含类,如下列:
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
项目MyCompany.Business。 dll将提供业务规则并从数据层检索数据:
Public Class Companies
Public Shared Function CreateCompany() As ICompany
Dim factory as New MyCompany.Data.CompanyFactory
Return factory.CreateCompany()
End Function
End Class
任何意见/建议将不胜感激。
我会试试看,谢谢。 – 2010-03-18 22:04:47
+1你忘了提及一段时间后''Common' lib的一半也会被废弃,没有人会解开它。您可能也有兴趣的想法(主要在我的意见IMNSHO)在http://stackoverflow.com/questions/925453/wcf-service-proxy-name-namespace-naming-strategy/2430056#2430056 – 2010-03-19 08:48:35
+1谢谢!我们只是实施了类似的东西,很好地看到其他人已经思考过,并像我们一样来到相同的结构。 – 2010-05-02 01:19:12