问题标签 [three-tier]

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.

0 投票
1 回答
17523 浏览

c# - 什么是 Microsoft.Practices.EnterpriseLibrary.Data

我想知道Microsoft.Practices.EnterpriseLibrary.Data.dll我们使用这个程序集是什么以及为什么使用这个程序集。

这个dll有什么好处?

我想在 3 层架构上创建一个项目,并对执行 sql 查询的最佳方式感到好奇。

我应该使用这个 dll 还是使用简单SqlCommandDataAdapter. 目前我正在以这种方式工作:(DAL文件中的代码:)

如果我应该更好地使用Microsoft.Practices.EnterpriseLibrary.Data和使用DatabaseFactory.

0 投票
1 回答
220 浏览

architecture - 多层架构中的默认函数值

想知道在多层应用程序结构中设置默认值的最佳方式。具体来说,如果某个工作流程需要一组嵌套的函数调用,是在所有函数上指定默认值,还是仅在顶层函数上指定并向下传递?还是完全是其他模式?

例如,考虑一个具有 3 层的 Web 应用程序:

  • 资源层处理 HTTP 请求和响应,从客户端获取 HTTP 参数
  • 业务层执行确定需要哪些信息所需的业务逻辑
  • 数据层访问数据库并返回请求的数据。

假设客户想要获得一个对象——对于这个例子,假设它是一个Place对象。地点对象有一个type——城市、州、镇、县等。

资源函数可能如下所示(使用 Django HTTP 对象):

那么另外两个可能是:

这个堆栈中资源层“下方”的两个函数是否也应该默认类型为无? 我的一部分认为这样做会违反 DRY。我的另一部分认为,最可预测和模块化的方法是堆栈中的每个函数都将默认类型“明智地”设置为 None。

0 投票
3 回答
3100 浏览

java - 三层架构和异常

对应用程序的每一层(即 、 等)都有一个例外被认为是一种很好PresentationExceptionServiceException做法PersistenceException。但是如果我的服务层直接调用 DAO 方法(持久层的方法)而不需要额外的操作怎么办。

像这样:

我应该用一个块包装这个 DAO 方法调用try-catch并将可能的异常重新抛出为ServiceException?每个 DAO 方法都应该只抛出PersistenceException吗?

0 投票
1 回答
155 浏览

transactions - 继承业务逻辑的最佳实践

我正在构建一个三层应用程序,例如 DAL、BLL、UI 层。DAL 公开一个 EF 包装器(UnitOfWork 和通用存储库模式)。

BLL 组件是具有一些基本业务逻辑规则的 DAL 包装器。本质上,BLL 公开了一个带有虚拟 CRUD 和验证方法的 BusinessObjectBase 类(T 是 POCO 类),然后是一个 BusinessTransactionBase 来协调一个以上的 CRUD 操作。

您可以将 BLL 组件视为一种 ObjectContext Wrapper:BusinessObject = ObjectSet,每个实体都有业务逻辑。BusinessTransaction = ObjectContext 以及其他一些最小逻辑

此外,我的组件的主要目标是为不同的项目提供一组基本逻辑。今天我可以使用我的程序集来构建一个关于 MusicStore 的应用程序,明天我可以构建一个关于文档管理的应用程序,但我总是想使用我的基础组件 (BLL)

简单的片段:

好吧,我有两个问题:

1) 如何确保在 GetBusinessObject 方法上正确构建 BusinessObjectBase?我应该从我的基类中构建一个继承对象,并且我不知道任何 ctor 参数。

2) 如何确保 IUnitOfWork 在 BusinessTransactionBase 和 BusinessObjectBase 类之间共享?我必须这样做,因为我已经说过,BusinessObjectBase 和 BusinessTransactionBase 是紧密相关的。

0 投票
1 回答
125 浏览

c# - 三层从两个表中选择日期

我试过用谷歌搜索很多东西,但找不到答案——所以我希望有人能帮助我!

我正在尝试做的事情:在我的 winform 应用程序上,我需要通过组合框选择计算机名,选择后,我的列表框将填充有关计算机的一些数据(软件名称、版本和内容)

组合框正在工作,但我只得到 id,而不是所有其他字段。

我的 Listview 正在使用数据库调用,如下所示:

我的数据库调用(工作和测试)/ clSoftwarePerPC:

* 现在选择: select * from [table names]我尝试使用像这样的完整位置:Software.Version,但这也不起作用。ZoekId 是我选择计算机的组合框中的值。

数据库:我的数据库如下所示:pbs.twimg.com/media/BJw-wD9CMAACZiO.jpg:large 我需要以下字段:SoftwareOpComputer.Versie、SoftwareOpComputer.UpdateDatum、Software.Softwarenaam、Software.Ontwikkelaar。

当我使用此方法并仅使用一个表(我的应用程序的其他页面)时,它可以工作,但是当我使用此屏幕并需要 2 个表时,它不起作用。

0 投票
1 回答
161 浏览

database - 三层架构

我有一个移动应用程序,它收集传感器数据并在将其发送到服务器之前对其进行处理。服务器的作用是将数据更新或插入到适当的数据库表中,而数据库是存储所有数据的中央存储库。请问这个架构可以叫三层架构吗?

0 投票
1 回答
81 浏览

java - 实体在应该被管理时被分离

考虑 Controller-Service-Repository 架构。

TokenService 中的成功方法声明我是正确的。

现在我们在控制器处理程序映射中调用先前的服务方法并提取令牌:

正如您从评论中看到的那样,下一个setTokenType内部控制器调用没有做任何事情,因此我打电话save检查状态,无需进一步猜测就通知我实体已分离。

这是否意味着我必须在服务类中进行所有更改?控制器上下文有什么问题,如果我只需要调用一个 mutator 我不想被迫创建整个存储库服务链来从控制器 Oo

我记得在我脑海深处的某个地方,需要一些神奇的过滤器来解释控制器上下文,但那是很久以前的事了,我不记得需要什么样的过滤器。也许我完全错了。

我怀疑我是否能够进入控制器,因为每当我忘记声明服务事务时,mergeasfaik 甚至会抛出异常。.flush而且我怀疑直接声明控制器处理程序方法事务和自动装配持久性上下文只是为了调用合并是可能的,甚至是正确的。

理想的场景当然是保持实体的持久状态,即使它被控制器链调用检索。

0 投票
3 回答
8213 浏览

c# - 将 DTO 传递给服务层

将 DTO 对象传递给服务层不是不好的做法吗?

现在我的服务层方法如下所示:

从 DTO 到业务实体 (MyEntity) 的映射值在表示层上完成

但我想将方法​​签名更改为:

之后,从 DTO 到业务实体的映射将发生在服务层。

编辑:我想要它,因为从 DTO 映射到业务对象时我需要打开休眠会话,因此实体上的所有更改都将自动刷新。

0 投票
2 回答
224 浏览

asp.net-mvc - 模型在我的解决方案中属于哪里?

这是我第一次使用 MVC 做一个 web 项目,我试图让它基于三层:MVC、DAL(数据访问层)和 BLL(业务逻辑层)。

我也在尝试使用存储库,并且我正在使用代码优先。

无论如何,我已经在网上搜索了很多,但如果你对我有很好的参考,我会很高兴看到它。

我当前的项目如下所示:

当前的项目

这是我的问题:

  1. 代表表的 Product 和 User 类应该在哪里?看来我需要在 BLL 中使用它们,而在 DAL 中我并不真正需要它们,而是用于PASContext.

  2. 我在哪里启动PASContext?在我在互联网上看到的所有示例中,没有人在存储库中使用 0 参数创建构造函数,这意味着上下文不是在存储库中创建的(我已经阅读了一些原因,为什么所有存储库都会这样使用一个上下文)。

如果我试图在编译器中启动PASContextProductBLL,它说它无法识别它并且我缺少一个引用(尽管我已经添加了所需的引用并且名称PASContext被标记为蓝色,就像 vs 确实识别它一样)

PASContext是继承自的类DbContext

下面是一些代码来演示:

  1. 关于视图模型,例如,如果我想为客户提供产品列表,我是否需要创建一个ProductViewModel,从中获取ProductsBLL具有产品列表的数据并将其转换为列表ProductViewModel然后发送到控制器?

此外,在 中ProductController,我是否只发起ProductsBLL?我没有启动任何存储库或上下文,对吗?

如果有人可以向我展示一些使用存储库、三层架构并从数据库中获取数据的项目,将其传输到 BLL 并从那里传输到 MVC 层并使用ViewModel向客户端展示它会很棒。

0 投票
0 回答
307 浏览

java - 三层架构系统,Android 客户端无 REST

我想创建与 Android 客户端交互的基于 Web 的应用程序。客户端通过 EDGE/GPRS 使用不可靠的连接,传输量非常有限,所以我想避免使用带有所有这些 HTTP 协议开销的 REST。我已经在 J​​ava 中创建了这样的项目,其中 Android 客户端通过套接字将 JSON 与服务器通信,并且我想将我的应用程序移植到三层架构中 - 是否可以使用某种应用程序服务器实现相同的结果:JBoss还是玻璃鱼?