问题标签 [bll]

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 投票
2 回答
269 浏览

architecture - 我应该如何实现我的业务逻辑层?

假设我有一个 80% 复杂业务逻辑和 20% CRUD 的应用程序,反之亦然。

在过去,我使用过某种命令模式,并且有类似ComplexFooCMDor的类,EvenMoreComplexBarCMD但总是以一堆InsertFoo,UpdateFooDeleteFoo以及SelectFoosCMD一些UpdateSomeValuesOfFooor结尾SelectSomeFoos。所有这些都生活在 BLL 中。

最近在不太复杂的业务逻辑应用程序中,我使用了带有类的服务模式,FooService但这些类也包含预期的insertFoo,updateFooselectSomeFoo. 在每个服务上都有这些方法,甚至有只存在将这些方法暴露给表示层的服务,感觉就像很多样板代码。

是否有适合 CRUD 部分和应用程序其余部分的模式,或者我应该为应用程序的不同部分使用不同的模式?

0 投票
4 回答
9151 浏览

c# - 如何在 UI、BLL、DAL 之间使用 DTO

我正在尝试编写一个在 BLL 和 DAL 之间具有非常严格界限的小型应用程序,现在我想知道在层之间传递数据(域传输对象)的最佳方法是什么。

我在 BLL 和 DAL 都可以访问的域级别(类库)中实现了一些类。这些类基本上只包含属性/数据成员,目前反映 DAL 数据。前任:

然后我在 BLL 中实现了一些类:

在我的 DAL 中,我通过 Linq-to-Sql 从数据库中获取客户记录。然后我通过以下方式将 linq 对象映射到我的 Domain 对象:

因此,我的想法是,我现在在请求时将 CustomerData 实例从我的 DAL 到 BLL(并且我应该将 Customer 实例传递给我的 UI)。

因此,在我的 BLL 中,我将收到一个 CustomerData 实例,但现在我想从中创建一个 Customer。

问题:

  1. 我现在是否必须在我的 BLL 中创建一个客户实例并再次复制所有字段成员?
    客户 c = 新客户;c.field = CustomerData.field;
  2. 如何在没有字段复制步骤的情况下从 CustomerData 创建客户?
  3. 我应该而不是使用 composition 吗?
    类客户 { 客户数据数据;}
  4. 在我当前的布局中是否有更有效的方法(更少的编码等)来做到这一点?
  5. 有没有更好的方法来做到这一点?
  6. 一般有什么意见吗?

谢谢 !

0 投票
2 回答
521 浏览

c# - 包装从 DAL 到 BLL 返回产品列表的方法的最佳实践(保持简单)

下面是我的控制台应用程序中调用 DAL 方法的方法。将它包装在 BLL 方法中以便可以直接从演示文稿中调用的最佳方法是什么?我过去从事过一些项目,我们从 DAL 中调用所有内容,如下所示,但是最好从 BLL 中获取所有内容吗?

0 投票
1 回答
266 浏览

asp.net - ASP.NET 业务层代码仍然存在,但我不确定它存储在哪里?

我现在对 ASP.NET 感到非常困惑。我相信每次你检索到该页面所引用的网页业务模型都会被创建,并且在将显示发送给用户之后,它会再次被拆除。

一位同事向我展示了这个简单的 Web 应用程序,它似乎在页面获取之间存储业务层代码,而不使用会话、缓存、应用程序、视图状态、查询字符串或帖子(据我所知)。

代码如下:

页面加载:

和单例类:

现在,当我加载页面时,每次按下按钮时计数器都会增加。但是我不知道 Singleton 实例在框架中的持久化位置?我确信它不会在页面加载之间存在。有人可以对此有所了解吗?这让我疯狂。

0 投票
2 回答
5650 浏览

asp.net-mvc - ASP.NET MVC:BLL 和 DAL 到存储库设计

我们正在从 ASP.NET Web 窗体迁移到 MVC 2.0。在我们的大多数项目中,我们都有一个与数据库通信的典型设置。

常见(对象/实体,如“SiteMenu”和“用户”)

业务逻辑层(调用数据访问层)

数据访问层

DAL 有一个具有通用数据库操作的 DatabaseHelper、一个具有数据库特定操作(例如 MySQL)的 OdbcHelper 和一个具有所有存储过程的 StoredProcedure 类。

这种设计如何转化为存储库设计?我们想使用我们自己的数据库助手而不是 NHibernate 等。

你有什么建议?

0 投票
1 回答
3404 浏览

c# - C# .NET4.0 TableAdapter.Update() 不会插入新记录

我有一个小型应用程序,它由 DAL、BLL 和应用程序本身组成,它们都位于 Visual Studio 2010 中的一个解决方案下的不同项目中。

我的 DAL 使用 xsd 文件来查询数据库,而我的 BLL 具有从 DAL 获取信息并对其进行处理的方法。

目前,我正在尝试使用应用程序背后的代码插入记录,以调用 BLL 中的方法,然后尝试使用在 DAL 的 xsd 文件中生成的 Tableadapter.Update() 方法插入记录。

我已经可以毫无问题地选择和更新记录,但我无法插入记录。

据我所知,如果我向 TableAdapter.Update() 方法提供新行,它应该知道插入新记录,但是它返回的值为 0 - 意味着 0 行受到影响,因此它不起作用。

我要插入的表称为 tblRoles。

它有一个“ID”列,它是一个 int、主键和标识列。它有一个采用 nvarchar(50) 的“名称”列,它有 4 个采用位类型的“CanAdduser”等列。

这是我的代码:

APP代码后面:

BLL:

据我了解,这应该在表中插入一个新行,但adapter.Update(row)继续返回 0,我不知道为什么。

当我调试时,我可以看到所有行列都被分配了正确的值,并且没有抛出错误。

任何帮助,将不胜感激!

编辑:

我忘了提到,当我在 xsd 文件中配置默认​​的 Fill,GetData() 查询时,我确实确保它自动生成了 Insert、Update 和 Delete 语句。

0 投票
5 回答
465 浏览

data-access-layer - 帮助讨论关注点分离(数据访问与业务逻辑)

我与我的同事就某些逻辑是否属于数据访问层或业务逻辑层进行了辩论。

场景是,BLL 需要一些数据来处理。该数据主要存在于数据库中。我们希望缓存该数据(使用 System.Runtime.Caching),以便在后续请求中快速可用。该体系结构使得 DAL 和 BLL 存在于同一个盒子和不同的程序集中(同一解决方案中的项目)。所以不用担心通过电线或类似的东西击中 DAL。

我的论点是,命中缓存与数据库的决定是 DAL 关心的问题。业务逻辑层不应该关心数据来自哪里,只关心它获取所需的数据。

他的论点是,数据访问层应该是“纯粹的”和“愚蠢的”,任何决定命中缓存还是数据库的逻辑都应该在业务逻辑层中。

在我看来,当目标是保持松散耦合时,他的意思是破坏关注点分离并导致层更紧密地耦合。如果 BLL 是一个特定的程序/ui 函数来决定去哪里获取数据,我可以看到 BLL 可能想要控制的位置,但这里根本不是这种情况。这只是一个非常简单的缓存场景,其中数据库是主数据存储。

想法?

0 投票
2 回答
808 浏览

asp.net-mvc - 我应该将 BLL 方法直接调用到我的 Asp.Net MVC 3 控制器中吗?

我有一个业务对象层,我在其他几个应用程序中使用它,我想在我的 MVC 应用程序上使用它。我的担忧更多是设计方面的问题:具有以下内容是否正确:

所以问题是我可以这样做吗,我应该在模型中执行此操作并直接从模型返回这个字符串,还是应该将我的 BLL 重写到我的模型中。我阅读了一些类似问题的答案,但我仍然不清楚我是否可以(而不是我应该或不应该)。我不想打破这种模式,因为我将把这个项目展示给学校里的一些同伴。

谢谢您的帮助!

汉莱特

0 投票
1 回答
609 浏览

design-patterns - GUI、BLL 或 DTO 中的 JSON/XML 输出?

我正在使用内容协商,因此根据请求的标头,我提供 JSON/XML 输出。现在我想知道提供此功能的最佳位置是什么。

Info: BLL= 业务逻辑层
DTO= 数据传输对象
DAL= 数据访问层

DTO 的伪代码示例

BLL 的伪代码示例

1) 在带有 BLL 对象的 GUI 中:将 DTO 结果从 BLL 转换为 JSON/XML
2) 在 BLL 中:类似于... getObjectJSON() -> 将 DTO 输入转换并返回为 JSON 格式
3)在 DTO 中:行为类似于... toJSON() toXML() 类似于 toString()
4) 或只有 1 个属性的额外 DTO (json/xml)
5) 其他?...

*我个人认为 (1) 将逻辑排除在 GUI 之外的原因是错误的,(4) 拥有像 WebJsonExampleDTO 和只有一个属性的 WebXmlExampleDTO 这样的额外 DTO 似乎有点矫枉过正

0 投票
3 回答
749 浏览

static-methods - 将 BLL 类标记为静态或?

我已经有了一个运行良好的分层数据访问设计。但我不知道这是否是最合适的实现。
我只是想知道 BLL 类或方法应该是静态的,或者它们应该是只有一个实例的 concreate 类?
同时,我不需要序列化 ​​BLL 类来在这样的 SOA 设计中使用它。但我不知道该功能会带来什么。
查看以下选项:

  1. BLL 类和方法是静态的
  2. BLL 类不是静态的,但它的方法是静态的
  3. BLL 类不是静态的,也不是它的方法。应用程序应该每次都创建 BLL 类以便访问它的方法。
  4. BLL 类不是静态的,也不是它的方法。但是每个 BLL 类只有一个实例。并且应用程序使用这些静态实例来使用 BLL 方法。

哪一个在性能和设计方面最有效?

编辑:

选项1

选项2

选项3

选项4