- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想要一些关于在以下情况下使用的最佳方法的建议......
我将有一个 Windows 应用程序和一个 Web 应用程序(表示层),它们都将访问一个公共(public)业务层。业务层将查看配置文件以查找将在运行时创建引用的 dll(数据层)的名称(这是最好的方法吗?)。
在运行时创建对数据访问层的引用的原因是,应用程序将根据客户端使用的内容与不同的第 3 方会计系统进行交互。所以我会有一个单独的数据访问层来支持每个会计系统。这些可以是单独的设置项目,每个客户都会使用其中一个,他们不需要在两者之间切换。
项目:
MyCompany.Common.dll - 包含接口(interface),所有其他项目都有对这个的引用。
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 的数据层
项目我的公司.Common.dll 将包含所有接口(interface),每个其他项目都会引用这个。
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
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
Public Class Companies
Public Shared Function CreateCompany() As ICompany
Dim factory as New MyCompany.Data.CompanyFactory
Return factory.CreateCompany()
End Function
End Class
最佳答案
几点评论。
我会避免使用 MyCompany.Common.dll
部件。这些通常最终会充满各种不相关的东西,然后经常需要重新构建所有程序集。
我会用应用程序名称和公司名称来命名您的程序集。 MyCompany.MyApplication.Business.dll
优于 MyCompany.Business.dll
.然后更容易将应用程序拆分为子部分并重用来自多个应用程序的代码。
最好为您将拥有的每种类型的实现程序集提供单独的契约(Contract)程序集。在您的情况下,我会建议以下内容:
MyCompany.MyApplication.Windows-Contract.dll
MyCompany.MyApplication.Windows.dll
MyCompany.MyApplication.Web-Contract.dll
MyCompany.MyApplication.Web.dll
MyCompany.MyApplication.Business-Contract.dll
MyCompany.MyApplication.Business.dll
MyCompany.MyApplication.Data-Contract.dll
MyCompany.MyApplication.Data.AccountingSys1.dll
MyCompany.MyApplication.Data.AccountingSys2.dll
AccountingSys1
和
AccountingSys2
程序集共享一个公共(public)合约,因此两个实现程序集只有一个合约程序集。
Data.AccountingSys1
Data-Contract
Data.AccountingSys2
Data-Contract
Business
Business-Contract
Data-Contract
Windows
Windows-Contract
Business-Contract
Data-Contract (maybe)
Web
Web-Contract
Business-Contract
Data-Contract (maybe)
*.Data.AccountingSys.dll
为两个特定的会计系统程序集定义基类。
*-Factory.dll
包含您的工厂方法的程序集。
关于vb.net - N-Tier Architecture - 在 VB.NET 中具有多个项目的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2466293/
Java EE 中的这些是什么.表示层.业务层.集成层 我想通过示例了解这些模式是什么 最佳答案 表示层:用户看到的内容,通常是网络应用程序。 业务层:执行应用程序的所有逻辑的地方。 集成层:将系统连
通过转到工具->选项并设置哪些程序集将成为分析的一部分(并忽略其余程序集),我能够在早期版本的 nDepend 中执行此操作。 nDepend 试用版的最新版本让我可以设置它,但它似乎忽略了设置并始终
上周我和我的前辈讨论了 3 层架构。我是说它有一个 UI 层、业务逻辑层和数据访问层。我讲完之后他就跟我说,我说的是三层架构,不是三层架构。然后我问他有什么区别,他分配给我的任务是制作有关差异的文档。
我使用分级价格,并对 1 到 4 之间的数量设定了固定价格,对超过 4 的数量设定了每件商品的价格。 我想修改我的购物车,为数量 >= 1 && 数量 <=4 的商品设置固定价格 我该怎么做? 这是我
十多年来,我们一直在构建三层架构。划分表示层、逻辑层和数据层应该允许我们在需要时单独交换每一层,无论是通过更改的需求还是新技术。 我从未见过它在实践中起作用...... 主要是因为(至少)以下原因之一
我意识到已经有很多关于 n 层设计的帖子,这可能是我在思考问题和兜圈子,但我现在自己都很困惑,希望从社区中得到一些澄清请。 我正在尝试将我创建的一个项目(一开始在架构上设计得不是很好)分成不同的层(每
Closed. This question is opinion-based。它当前不接受答案。 想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。 3年前关闭。
我一直在尝试镜像一些功能在另一个网站上看到的 Magento (v1.6) 中。在示例中,店主已设置将销售价格应用于层级的能力。(很可能是 tierprices.phtml 作为包装)通过应用销售价格
“层”和“层”有什么区别? 最佳答案 Logical layers are merely a way oforganizing your code. Typical layersinclude Pre
我想听听你的一些想法 资源名称/分类 资源地点 让我告诉你应用范围: 3 种或更多支持的语言 3个MVC网站[有很多共享资源,也有一些独特的资源] 1 个共享 MVC 扩展库 1 个核心业务库,具有共
最近,我一直在讨论在 n 层架构中处理链上通信的最佳方式。 目前我正在做的方法是在层之间抛出和处理异常以查找错误,并使用事件/委托(delegate)进行其他通信(更新进度条等)。这些是最好的方法,还
我有一个在纸面上很简单的问题,但我很难用代码解决。在我继续之前,这不是字符串拆分问题。 我有一个本质上是带状时间表应用程序。比例因客户而异,但一个例子是一个月的前三个小时为 80,接下来的三个小时为
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
工具:Mvc4、Sql server、Nhibernate 我正在学习 Ntier 架构,并计划通过一个小示例来学习它。这将是一个学生注册申请,其中包含一个表格一种。名b.姓C。地址d.学生卡该应用程
我正在开发一个将使用 LINQ to SQL 的个人项目 (C#/ASP.NET)。解决方案将有(到目前为止)一个 Webform 项目、一个命名空间项目(业务逻辑)和一个测试项目。到目前为止,我处于
根据pricing page ,将于 2016 年 1 月 1 日为 BigQuery 引入新的分层定价模型。 我们希望能够预测这可能对我们的应用程序产生的任何成本影响。因此,我们查看了一些更复杂查询
如何解决:使用 MongoDB Atlas 时出现“MongoError: $where is not allowed in this atlas tier”的问题? 这是我的代码: async fu
Out 团队正在构建一个 N-Tier 应用程序,它将处理大量的数据库和网络方法。 基本上我们设计了以下层(从下到上): 数据层:可以是 Oracle 或 SQL(基本上是使用 Database Fi
Get-azdisk -disk diskname -resourcegroup RG 提供高级硬盘层,但不显示标准 HDD 驱动器层,知道为什么吗? 谢谢 最佳答案 是的,你是对的@ArunCO。我
我有一个 azure 函数,旨在自动与 API 管理进行交互。 因此,在 Http Trigger 上,它会创建一个 api 管理用户。 这是开发人员层,一切正常 - 我已经测试了它和一切。 自从从开
我是一名优秀的程序员,十分优秀!