我希望能就以下情况提供一些建议:我将拥有一个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将包含所有接口,每个其他项目都将引用此项目。
任何意见/建议将不胜感激。
之所以在运行时创建与数据访问层的引用,是因为应用程序将根据客户使用的第三方会计系统不同而进行接口。因此,我将有一个单独的数据访问层来支持每个会计系统。这些可以是单独的设置项目,每个客户端将使用其中一个,他们不需要在两者之间切换。
项目:
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
任何意见/建议将不胜感激。
Common
库的一半也会变得无用,而且没有人会解开它。你可能还会对我的想法感兴趣(主要在我的评论中),链接为https://dev59.com/ukfRa4cB1Zd3GeqP_8je#2430056。 - Ruben Bartelink