问题标签 [layered]

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 回答
4846 浏览

web-services - REST API 中的分层系统约束

我正在尝试更熟悉休息,并尝试了解分层系统在 REST 架构中的含义。据我了解,这意味着如果 API 有数据库,它应该在不同服务器上的不同机器上,并且 api 在需要时调用它。与业务逻辑相同,如果调用应该通过一些逻辑调用被转移到其他一些服务器并在那里执行。如果存在,这也将有助于解决性能问题。我对吗?请提供任何其他信息

0 投票
1 回答
802 浏览

magento - 在 magento 1.9 的前端中,前面的工作 magento 扩展分层导航不可见

我想要按自定义产品属性过滤产品功能。为此,我添加了名为分层导航的提前工作 magento 扩展。我已经设置了所有的管理设置,但无法在前端查看

0 投票
0 回答
481 浏览

arrays - 从纹理二维数组中仅渲染一层

我有一个用于分层渲染的 Texture 2D 数组。我想知道如何从我的分层纹理中只渲染一层。
我有一个几何着色器,可以将不同的图元发送到不同的图层,我想选择在屏幕上绘制哪个图层。

0 投票
1 回答
966 浏览

magento - Magento 忽略分层导航中的子属性

我有一些具有相关属性的捆绑产品。子产品也具有与其关联的相同属性,但有时它们是不同的。我的问题是,使用分层导航时,它会同时查看捆绑产品和所有子产品的属性。我想知道是否有任何方法可以编辑分层导航以忽略捆绑产品的子产品。谢谢!

有关更多信息:我正在为 HVAC 设备开设商店。我有一个名为标称容量的属性。空气冷凝器单元可能是2吨,盘管可能是1.5到2吨。当我将它们放在捆绑产品中时,我将捆绑产品的标称容量属性设置为 2 吨,但是分层导航仍然显示 1.5 到 2 吨,而当我需要它时仅显示 2 吨时显示 2 吨。

0 投票
1 回答
290 浏览

c# - 从表示层映射到后端的通用方式

我有一个(webforms)具有分层层(presentation-BLL(service)-DAL和具有实体框架的存储库的 Web 应用程序,并且以通用方式进行。

系统功能非常好,但问题是我将域对象直接暴露给表示层。我想switchover/mapping在服务层做一个,但我不知道如何用通用的方式做到这一点。

在我的表示层中,我有以下调用:

在我的服务层中,该方法如下所示:

这一切都包含在一个unitofwork(iow)中。

我头疼的是表示层引用了一个实体模型,它基本上是扁平的域对象。Servicelayer 也引用了这个模型,当然还有与数据库对话的域模型。在表示层中的语言实体的情况下,全名是Model.Language,在服务层中它将是DAL.Language(向后传递)。

我无法弄清楚如何将类型更改为下一个调用,一般来说:

有什么建议么...?

0 投票
1 回答
432 浏览

filter - Prestashop。为什么单击某些类别后分层导航块会消失?

我正在使用主题Shop-it,我正在尝试更改添加分层导航块的类别页面。在我钩住该块后,它出现在类别页面上,但在我单击某个类别并显示结果后,分层导航块消失了。

我看到,当您单击某个类别时,它会发出一个请求,而当我查看响应时,它似乎 filterblock 变量为空。但我不明白为什么。

有谁知道为什么会这样?

0 投票
1 回答
89 浏览

javascript - 分层视差滚动?

我正在尝试为我的网站创建一个动态背景,该背景具有纯色背景,图像分层在(标志的)顶部,视差因此以不同的速度滚动到页面。

有没有人可以提出任何可以让我这样做的项目?

谢谢!

0 投票
0 回答
944 浏览

architecture - Onion and Layers Architecture 真实世界示例

你们能给我一个真实世界的小型企业案例示例,其中洋葱架构比 3 层架构更好吗?

谢谢,

米格尔

0 投票
1 回答
2112 浏览

c# - 如何在不引用数据访问层的情况下使分层解决方案的 UI 项目解析 EF 实体

我正在开发一个 WinForms 应用程序,该应用程序由 3 层构成,每一层都是一个单独的项目,如下所示:

解决方案中的项目

在 SampleNtierDAL 项目中有一个 DalServices 类,其定义如下:

在 SampleNtierBLL 项目中有一个 BllServices 类,定义如下:

Te SampleNtierUI 项目有一个 WinForm 按钮事件,它应该要求 BllServices 获取员工列表,如下所示:

这里的问题是 WinForm 无法看到由 Entity Frameworks 6 创建的名为“Employee”的实体模型。 SampleNtierBLL 项目类 BllServices 看到该类是因为它引用了 SampleNtierDAL 并在顶部有一个 use 语句来解决员工类。我曾考虑在 WinForm 中添加类似的引用来解析 Employee 类,但我在其他文章中看到您不应该引用数据访问层,但这些文章没有显示如何解决我遇到的这个问题。
有人可以告诉我如何在不引用实体框架生成名为 Employee 的实体的数据访问层的情况下让 UI(WinForm)识别实体模型(Employee 类)吗?提前致谢。

更新到我的帖子 2015 年 11 月 5 日下午 5:13

在对我在 2015 年 11 月 5 日下午 3:14 添加的过程进行了更多测试后,我发现它实际上也适用于带有 .NET 4.5.2 的 Visual Studio 2015。

更新到我的帖子 2015 年 11 月 5 日下午 3:14:

感谢 Reza 为提供响应信息所做的所有工作。我无法使您的解决方案与 Visual Studio 2013 或 Visual Studio 2015 一起工作,因为它已记录在案。但是,我确实在 Pluralsight.com 上找到了 Julie Lerman 的一个互联网视频,它确实提供了一个解决方案。她的解决方案没有提到使用您使用的 NuGet 管理部分,因此我将其添加到组合中并最终得到了一个工作项目。Julie Lerman 的视频标题为:

“从 EDMX 中分离生成的域类”,位于此处:

http://www.pluralsight.com/training/player?course=entity-framework5-getting-started&author=julie-lerman&name=ef5-m6-solutions&clip=2&mode=live

通过将您的部分程序与她的程序相结合,我以以下步骤结束,这些步骤适用于 Visual Studio 2013,但不适用于 Visual Studio 2015。

我的示例最初有以下项目:

  • 样品NtierDAL
  • 样品NtierBLL
  • SampleNtierUI

在这个项目列表中,我添加了第四个名为 SampleNtierModels 的项目,所以现在的列表如下:

  • 样品NtierDAL
  • 样品NtierBLL
  • SampleNtierUI
  • SampleNtierModels

步骤如下: 1) 设置项目引用如下:

  1. SampleNtierBLL 参考 SampleNtierDAL 和 SampleNtierModels
  2. SampleNtierDAL 参考 SampleNtierModels
  3. SampleNtierDAL 没有引用任何项目
  4. SampleNtierUI 引用 SampleNtierBLL 和 SampleNtierModels

2) 接下来,启动文件资源管理器程序(用于浏览文件系统文件的工具)并将 ModelEmployee.tt 文件从 DAL 项目文件夹移动到模型文件夹。

3) 使用 Visual Studio 解决方案资源管理器,转到 SampleNtierModels 项目,右键单击并选择 Add Existing Item。在对话框中,选择“All Files”以查看 ModelEmployee.tt 文件并选择它以将其添加到项目中(不要选择链接文件)。

4)接下来,选择 SampleNtierDAL 项目,然后右键单击 ModelEmployee.tt 文件并删除它,这也会自动删除它下面的所有 .cs 文件。完成后,ModelEmployee.tt 节点应该消失了。

5) 选择 SampleNtierModels 项目,然后单击 ModelEmployee.tt 节点,这将在编辑器中打开 MoadelEmployee.tt 文件。内容的顶部是对 const 字符串 inputFile 的分配。设置此字符串以定位 ModelEmployee.edmx 文件,如下所示:

5) 接下来,选择 SampleNtierDAL 项目并打开 ModelEmployee.Context.tt 文件并向下滚动引用 using 子句的部分并添加 SampleNtierModels 命名空间,如下所示:

7) 选择 SampleNtierBLL 项目,打开 BLLServices.cs 文件并添加以下 using 语句:

8) 选择 SampleNtierDAL 项目,打开 DalServices.cs 文件并添加以下 using 语句:

7)选择SampleNtierUI工程,打开Form1.cs文件,添加如下using语句:

8) 单击菜单栏中的工具,然后单击 NuGet 包管理器

  1. 选择已安装的包
  2. 搜索实体框架
  3. 选择显示的 EntityFramework 包,然后单击其“管理”按钮
  4. 在列表框中确保选择了以下内容:SampleNtierBLL、SampleNtierDAL、SamleNtierUI

9) 选择 SampleNtierDAL 项目,右键单击 ModelEmployee.Context.tt 节点并选择“运行自定义工具”。

10) 选择 SampleNtierModels 项目,右键单击 ModelEmployee.tt 节点并选择“运行自定义工具”。

11)将SampleNtierDAL项目中App.Config文件的全部内容复制到SampleNtierUI项目的App.Config文件中。

下面是一个示例图片,显示了项目最终的样子,以及一个示例调试会话,显示了从实体框架返回的 3 行数据,这些数据源自 DAL,然后是 BLL,最后是 UI。Winform UI 还显示不需要对 DAL 的引用。

这个问题现在已经解决了,所以再次感谢 Reza 帮助解决这个问题。我已向 Juile 留言,要求更新此处的流程,其中包括 Visual Studio 2015。

在此处输入图像描述

0 投票
2 回答
354 浏览

rest - 你的小型 REST 系统应该有多少层?

我正在使用 Spring Boot 构建可部署的简单 REST。决定通过首先使用失败的验收测试然后使用 TDD 直到它的绿色来创建它。

我的模块很简单,我有 3 个 API:

  1. 从数据存储中检索数据列表。
  2. 将项目添加到数据存储区。
  3. 从数据存储中删除项目。

我觉得抽象数据存储并可能由 Map 数据结构支持以进行测试是个好主意,如果我想用于部署/发布和端到端测试,可以将其与 NoSQL 或 SQL db 一起使用。

在服务层方面,我不确定,因为它只会将调用委托给没有逻辑的存储库。

所以标准方法是控制器->服务->存储库。在我的案例中,服务做的不多(可能有一些异常处理,但不多),我最终会得到接口和实现作为额外的代码以及几行代码。在我的情况下,我喜欢使用控制器-> 存储库解决方案,但这不是我见过的做法,也不确定其他人会如何看待它。

实现这种系统的最佳方法是什么?