问题标签 [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.

0 投票
1 回答
1368 浏览

c# - N 层 - 依赖注入 - Net Core

我正在 ASP.NET Core 中构建解决方案架构。

我在 web 项目中引用存储库来声明依赖注入,ConfigureServices()你可以吗?

我认为理想的情况是只引用服务项目,因为控制器应该只使用服务而不是存储库。

我有这些项目:

  1. Web App (ASP.NET Core) - 引用所有项目。

    /li>
  2. 业务(类库 - .NET 标准)

    /li>
  3. IRepository(类库 - .NET 标准)

    • IEvents存储库
  4. 存储库(类库 - .NET 标准)

    • 使用 EF 访问 BD

      /li>
  5. 实用程序(类库 - .NET 标准)

  6. 实体(类库 - .NET 标准)

    • 从 BD EF 映射

非常感谢 !

0 投票
2 回答
2566 浏览

.net - 了解 ONION 和 N 层架构之间的区别

我正在构建基于.Net 的应用程序的结构。目前,我使用的是 MVC 5。以下是系统不同组件的详细信息。
1. 数据库– 这是底层数据库,将包含数据
2. OData API – 此 API 将与数据库交互,并将仅执行与数据库相关的操作 (CRUD)。我希望这个 API 成为访问和操作数据的唯一平台。它将提供通过不同方式(IQueryable、SQL 查询、存储过程)检索数据的功能。
3. 商务服务——它将包括两件事。引擎和 API。引擎中将包含业务逻辑,其中可能包含业务规则,例如 WorkflowEngine 将处理所有工作流操作。驻留工作流操作 (CRUD Ops) 和非驻留工作流操作(提交、批准、发回)。API 将在 UI 和 Engine 之间进行通信。然后引擎将运行业务逻辑并与 OData 通信。BusinessAPI 将是专有 API,对这些 API 的访问将基于订阅(付费访问)。
4. UI – 用户界面将基于 MVC,仅与业务 API 交互,并且仅负责显示数据并将数据发送回 BusinessAPI。


它看起来像一个 N-Layed 架构。如果我引入接口,它是否可以与 ONION 架构相媲美。 如何在不影响安全性可扩展性性能
的情况下将其转换为 ONION 架构。依赖关系图 项目依赖

0 投票
1 回答
756 浏览

c# - Azure Key Vault 连接字符串和 N 层设计

这个问题与以下可能有帮助的帖子有关:Azure DevOps CI/CD and Separating Connection Strings from Source Control

我目前正在根据 Imar Spaanjaars 的一篇名为ASP.NET N-Layered Applications的文章开发一个 N-Layered 项目

我正在尝试实施Azure Key Vault,我猜你可以说,从应用程序本身抽象秘密。

目标

我想使用这个 N 层概念实现Azure Key Vault 。我有一个位于NLayer-Spaanjaars.ContactManager的示例项目

问题

我试图弄清楚如何使用Key Vault Syntax Reference来正确检索带有实体框架的秘密(连接字符串)。

更新 2019/2/22

如评论中所述,我试图找出如何在运行时使用非核心应用程序上的值injectoverride连接字符串。Key Vault.Net Web API

0 投票
1 回答
45 浏览

typeorm - 测试我的课程方法的问题

我一直在尝试用 Jest 测试我的课程,但没有成功。

在示例中,我有一个带有参数的方法,当我在 playgroung 上尝试它时,它的响应令人满意,但在测试中它给我带来了问题,我已经看到了一些示例,但它们对我没有太大帮助。该库也没有文档或示例。

我有一个包含以下层的 n 层应用程序:应用程序(解析类)、域和体系结构。

我尝试了这两种方法:

但我有这些错误。

错误笑话

你可以帮帮我吗?

0 投票
1 回答
467 浏览

c# - 三层架构。表示层中的 EF

我尝试创建 3 层架构应用程序。有 2 个类库(数据访问、业务逻辑)和 asp.net MVC(演示)。对于数据库连接,我使用实体框架。在 DataAccess 中,我配置了 DatabaseContext,我的连接字符串存储在 web.config 中。如果我尝试从演示文稿中添加原始数据库,我会收到错误

找不到具有不变名称“System.Data.SqlClient”的 ADO.NET 提供程序的实体框架提供程序。”

我的理解是在表示级别安装 EF 是不好的做法。我考虑添加参考 System.Data.SqlClient 但认为这也是不好的做法。也许有人遇到了类似的问题。如有任何帮助,我将不胜感激。

0 投票
2 回答
93 浏览

oop - 图书馆应用场景中的 DDD、Aggregate Root 和实体

我正在构建一个图书馆应用程序。假设我们有一个要求,让图书馆中的注册人员在某个默认时间段(4 周)内借书。

我开始使用以下代码调用 AggregateRoot 对我的域进行建模Loan

我的Book实体看起来像这样:

如您所见,我正在使用静态工厂方法来创建我的 Loan 聚合根,其中我传递了借书的身份和将要借书的用户身份。我应该在这里传递对这些对象(书籍和用户)的引用而不是 id 吗?哪种方法更好?如您所见,我的 Book 实体也有一个属性,它指示一本书的可用性(InStock属性)。我是否应该在下一个用例中更新此属性,例如在 的处理程序中LoadCreatedEvent?还是应该在我的 AggregateRoot 中更新它?如果它应该在我的聚合中更新,我应该传递整个书籍参考,而不仅仅是一个 ID 以便能够调用它的方法_book.Borrow()

我被困在这一点上,因为我想用 DDD 方法做得非常正确。还是我从错误的角度开始做,我错过了一些东西或以错误的方式思考?

0 投票
1 回答
38 浏览

c# - 是否有更好的实践来管理类的实例化?

因此,为了提供一些上下文,我正在为一个体系结构类制作一个项目,并且我正在尝试调试我的 WebService 的一些问题,为此我创建了一个模仿 WebService 的功能和逻辑的库类。但是我发现每次发现一些错误时我都需要更改大量代码,并且我认为可能有一种更好更聪明的方法来解决这个我根本还不知道的问题。

这是我处理大部分函数和方法的方式:

关于我刚刚向您展示的代码,这是我关心的一行:

这种方法有点简单,不需要实例化很多其他类,但是当我尝试调试或集成WebService层时,我每次都需要更改数百行......所以我认为这真的是效率低下,也许有更好的方法来处理这个问题。

0 投票
1 回答
37 浏览

c# - BLL 层或单独层中的数据传输对象?

我有:

  • DAL 层-> 实体和 DbContext(实体框架)
  • BLL 层-> 服务
  • UI 层-> Razor 页面

我在 BLL 层的服务将实体转换为数据传输对象,并将数据传输对象返回给 UI 层。UI 层还将数据传输对象传递给 BLL 服务。

我应该将数据传输对象放在 BLL 层还是创建一个单独的层?

0 投票
1 回答
36 浏览

docker - Net Core MVC Dockeri 文件不起作用。我的本地项目没有错误

我有在分层架构中运行的 net core mvc 项目。它在本地运行良好,但不适用于 docker

图层图像

Dockerfile 调试镜像

Dockerfile 输出图像

错误图像

0 投票
0 回答
20 浏览

c# - System.AggregateException 与 MessageHandler 和 IParser

我正在用 N 层架构编写我的 Telegram Bot。我问了关于访问处置上下文的问题并在这里得到了答案。我编写了 HostedService 类和 MessageHandler,但出现了一个新错误,无法解决。

托管服务类:

消息处理程序类:

启动配置方法:

您可以在我之前的问题中看到 BLL 和 DAL 注入。

当我从 Telegram 发送请求时,我收到以下错误:

System.AggregateException:“无法构造某些服务(验证服务描述符时出错“ServiceType:TelegramBot.WebApi.Handlers.MessageHandler Lifetime:Scoped ImplementationType:TelegramBot.WebApi.Handlers.MessageHandler”:无法解析服务类型'TelegramBot.BLL.Services.ParserService' 尝试激活'TelegramBot.WebApi.Handlers.MessageHandler'。)'

InvalidOperationException:尝试激活“TelegramBot.WebApi.Handlers.MessageHandler”时无法解析“TelegramBot.BLL.Services.ParserService”类型的服务。