问题标签 [n-layer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
n-layer - n层设计混乱
任何人都可以为我提供一个 Web 链接,显示正确的 n 层设计方法以及 VS2005 和 C# 中的示例源代码吗?
我有一点感到困惑,如果我正在创建如下图层:
那么我怎样才能实现真正的OOP呢?
因为在 OOP 中,所有活动都应该封装在一个对象中。
根据我的想法,这应该是这样分层的:
但是当尝试像这样设计图层时,我遇到了循环参考问题。
我的一个朋友告诉我,他用反射解决了这个问题。
那么将 ac# 应用程序分层的行业标准方法是什么?
一个亟待解决的问题是,哪一层承载了 OR-Mapping?
agile - 敏捷/XP 和分层方法
敏捷/XP 可以与分层方法一起使用吗?
敏捷/XP 应该与分层方法一起使用吗?
将源代码分层需要额外的努力,从而显着增加开发时间。
注意:“层”是指带有 POCO、DA 等的单独组件。
.net - N 层开发中的 DDD 概念
在花了几个月的时间研究 DDD 方法之后,我现在开始将这些概念应用到我公司的实际产品中。事实上,我的任务是为未来的开发创建一个合适且可维护的架构。
我们决定使用以下技术:EF4(真正的 v2)、Unity
我获得的信息量最有启发性,但是,在最佳实践中我还有几个问题:
问题 #1: DTO - 最佳实践
我有我的域对象(POCO 类)。有几种方法可以实现这些类。
- 传统方法:创建包含公共 getter/setter、验证和适当业务逻辑的 POCO 类。还可以创建 DTO 并使用映射技术来管理它们。(自动映射器)
- 传统 - DTO:创建如上所述的 POCO 类,但是,使用您的 POCO 作为传输对象。我的理解是业务对象永远不应该离开域。
- Hybrid:我偶然发现了一篇有趣的博客文章,其中作者创建了他的 POCO 对象和 DTO。在他的领域对象中,他创建了一个 DTO 实例。这使得可维护性更容易,因为您不会像 #1 那样复制您的属性。像这样:
问题 #2: UI/服务层应该返回哪些对象?
这就是 DTO 的重点。一个非常简单的轻量级对象,仅包含裸属性。它也不包含任何验证结果。如果我将我的 DTO 序列化回客户端,则应假定客户端需要任何验证结果,例如 InvalidRules 集合。
例如,假设我正在使用亚马逊的 API。我想在我的个人商店中添加一本书。如果我尝试在不发送 ISBN 的情况下添加一本书,该服务可能会返回某种包含验证结果错误的响应组。
我错过了什么吗?我的印象(至少来自 DDD “纯粹主义者”)认为 DTO 不应该包含业务逻辑。在我看来,DTO 没有提供足够的信息作为传输对象。要么,要么我需要一种封装 DTO 和验证结果的新型 Response 对象。
问题 3: 多少 IoC 太多了?
在我看来,我应该遵循黄金法则:
“识别应用程序中不同的部分,并与那些保持不变的部分分开。”
对我来说,这在应用 IoC 方面是有道理的。为了减少依赖,我的表示层、业务逻辑层和数据访问层都通过 IoC 容器进行通信。我的应用层包含通用接口和抽象。比这更多地使用 IoC 似乎有点矫枉过正。我喜欢我可以创建模拟测试存储库这一事实 - 只需更改 Unity 的配置,我就可以使用 TDD。
我希望我已经清楚地说明了这些问题。提前感谢您的帮助!
entity-framework - n 层应用程序中的实体框架 - 延迟加载与急切加载模式
这个问题让我无法入睡,因为一年以来我一直在努力寻找解决方案,但是......我的脑海里仍然没有任何事情发生。也许你可以帮助我,因为我认为这是一个非常普遍的问题。
我有一个多层应用程序:表示层、业务逻辑层、模型层。为简单起见,假设我的应用程序在表示层中包含一个允许用户搜索客户的表单。现在用户通过 UI 填充过滤器并单击一个按钮。发生了一些事情,请求到达表示层的方法如CustomerSearch(CustomerFilter myFilter)
. 这个业务逻辑层现在保持简单:在模型上创建查询并返回结果。
现在的问题是:您如何面对加载数据的问题?我的意思是业务逻辑层不知道该特定方法将仅由该表单调用。所以我认为它不知道请求表单是否只需要返回 Customer 对象或带有链接 Order 实体的 Customer 对象。
我试图更好地解释:我们的表单只想列出按姓氏搜索的客户。它与订单无关。所以业务逻辑查询将类似于:
现在这工作正常。两天后,您的老板要求您添加一个表格,让您可以像其他人一样搜索客户,并且您需要显示每个客户创建的订单总数。现在我想重用该查询并添加附加(包含)订单并取回该逻辑的部分。
你会如何处理这个请求?
这是我从现在开始的最好的(我认为)想法。我想听听您的意见:我在 BLL 中的 CustomerSearch 方法不会直接创建查询,而是通过组成 ObjectQuery 的私有扩展方法传递,例如:
和
但这并不能说服我,因为它看起来太复杂了。
谢谢,马可
architecture - N 层架构有什么好处?
N 层架构有什么好处?这如何使应用程序变得更好?
asp.net-mvc - 使用 EF POCO 类作为 MVC 2 模型(带有数据注释)
我有一个用 C#... .Net 4.0 编写的 4 层 Web 应用程序:
- 界面层
- 业务层
- 数据访问层
- 实体层
我的数据层包含一个 edmx 我的实体层包含我的 POCO 对象(由 t4 脚本生成),并且该层在所有其他层中都被引用。
例如,在创建 MVC 表单以创建新客户时....我的实体层中已经有了包含名字、姓氏等字段的客户类,但是自动生成的 POCO 类没有数据注释用于验证... IE [必填] 等用于提交表单时
我现在的解决方案是创建与我的 poco 类几乎相同但也有这些额外验证注释的新模型类。
我想知道的是,是否有一种简单的方法可以在 MVC 模型(在 UI 层)中使用某些 POCO 对象,而无需几乎重写类......并且也无需修改生成这些 POCO 类的 t4(因为我在 t4 上跟不上速度)。
我从stackoverflow http://automapper.codeplex.com/上的另一篇文章中看到了这一点......不确定这是否会做到或者是最好的解决方案。
architecture - n 层架构 - BLL、DAL 和接口。什么是最佳实践?
我有一个关于 n 层架构的问题。在问这个问题之前,我想了很久很久,因为这里已经有很多类似的问题了……但是,在看了一天半并阅读了这些其他答案之后,我仍然不确定。各种看似相似的术语和不同的方法让我感到困惑。
如果我在不同的类库中有一个 BLL 和一个 DAL,那么在 BLL 和 DAL 之间进行通信的一种方法是使用一个接口,有点像在 BLL 和 DAL 都引用的另一个单独的 DLL 中定义的 DTO。BLL 中的域模型实体将实现此接口,DAL 中的任何 ORM 生成的对象也将实现。为了保存我的业务实体,我可以将它们传递给 DAL,DAL 会很好地接受它们,因为它们实现了共享接口。我还可以将对象传递回实现此接口的 BLL。这似乎是合理的,因为 BLL 和 DAL 只需要了解基本接口,而不是彼此的具体实现。
我的问题是在另一边创建对象的最佳方法是什么?例如,如果我在 BLL 中有一个实现 IPerson 的 Person 对象,以及一个 PersonDataObject 或 DLL 中也实现 IPerson 的任何东西,我将 Person 传递给 DAL 中的一个方法,该方法采用 IPerson 的参数,然后在 DAL 中我d 必须重建 PersonDataObject 才能持久化。这甚至是最好的方法吗?
抱歉,我可能没有很好地解释这一点,因为我很困惑。非常感谢虚拟答案的最佳实践。
asp.net - 一个现代的 n 层 asp.net Web 应用程序示例?
所以我的 asp.net 非常生锈,我正试图回到最佳实践,什么不是。所以,我翻出谷歌,开始寻找示例、示例和教程,但我能找到什么?甚至在“最新”技术在石器时代发布之前就倾向于编写旧的硬壳内容。
当然,这些概念可能仍然成立。但是实际的实现基本上是没用的。我正在寻找使用 Linq、n 层(不是层。层可以是层,但层不一定是层)某种当前 ORM(L2S、EF 等)和一些现实世界的东西东西,而不是随意和无用的例子。
有没有人有任何指示?
model-view-controller - MVC 模式相对于老式的 3 层模式的主要优势是什么
我正在考虑在我的新项目中使用 MVC 模式,我可以清楚地看到能够将数据层(模型)更靠近表示层(视图)的主要优势,这将允许稍微增加在应用速度上。但是除了性能方面,MVC 与视图-逻辑-数据分层类型模式相比还有其他优势吗?
编辑: 对于那些有兴趣的人,我刚刚上传了一个我创建的示例 PHP 代码,用于测试 MVC 的使用。我故意省略了所有安全检查以使代码更易于阅读。请不要过多批评它,因为我知道它可能会更加精致和先进,但是 - 它有效!欢迎提出问题和建议:这里是链接: http: //www.sourcecodester.com/sites/default/files/download/techexpert/test_mvc.zip
.net - Microsoft N 层示例
您如何看待http://microsoftnlayerapp.codeplex.com/?我对数据访问实现(UnitOfWork、存储库、事务)很感兴趣。它是在微软技术上实现此问题的“最佳”示例吗?如果您有一些有趣的示例或帖子描述了使用事务管理实现 UnitOfWork + Repository,请分享它们。
编辑:我只想知道专家对此实现的一些想法或一些可以帮助我解决问题的有用链接。