问题标签 [service-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 投票
2 回答
132 浏览

.net - 服务层拥有不处理数据库的方法是不好的做法吗?

我的用户服务中有以下方法

你会注意到有一些方法不处理数据库,但我觉得这是一个使用它们的好地方。

这被认为是不好的做法吗?

注意:我的存储库层严格处理数据库。我的流量过去了。

数据库 > LINQ (DBML) > 存储库层 > 服务层 > 控制器(或其他)。

0 投票
2 回答
2373 浏览

datamapper - Doctrine2 最佳实践,实体应该使用服务吗?

不久前我问了一个类似的问题:使用数据映射器模式,实体(域对象)是否应该知道映射器?但是,它是通用的,我对如何使用 Doctrine2 专门完成一些事情非常感兴趣

这是一个简单的示例模型:每个都Thing可以有 a Votefrom a User, aUser可以转换多个,Vote但只有最后一个才Vote重要。因为其他数据(Msssage等)与 相关,所以在放置Vote第二个时,原始不能只是更新,它需要替换。VoteVote

目前Thing有这个功能:

Vote负责建立关系:

在我看来,确保 a Useronly has last Votecounted 是Thing应该确保的,而不是一些 service layer

因此,为了将其保留在模型中,新Thing功能:

那么如何Vote从域模型中删除呢?我应该放松Vote::setThing()接受 aNULL吗?我是否应该涉及某种Thing可以用来删除投票的服务层?一旦选票开始累积,那foreach将会很慢 - 是否应该使用服务层来允许Thing搜索 aVote而无需加载整个集合?

我肯定倾向于使用轻量级服务层;但是,有没有更好的方法来使用 Doctrine2 处理这种类型的事情,或者我是否朝着正确的方向前进?

0 投票
2 回答
92 浏览

architecture - 多个应用程序共享相同的代码库

我有一个代码库,它将被多个应用程序使用。

什么技术可以促进这个需求(服务层?)?

谢谢

0 投票
4 回答
891 浏览

c# - Should you return a BindingList from a business layer (or service layer, domain model, etc.)?

I need a BindingList in my UI to provide two-way databinding between my collection and a DataGridView. However, it doesn't seem correct to return a BindingList from your business layer (or domain layer, service layer, data layer, etc.). That is, I'd only be using a BindingList because of a UI requirement, and now this UI need would be coupled with my domain layer.

What is the "proper" decoupled way to do this? Should I be returning an IList and then copying it into a BindingList for presentation purposes? From a real world perspective, is this overhead worth anything?

0 投票
1 回答
230 浏览

asp.net-mvc-2 - 我应该从我的服务层返回什么?DotNetOpenAuth

我想知道在这种情况下我应该返回什么。我的 Ui 和服务层在不同的项目中。

这就是发生的事情

-> 用户来到站点 -> 用户选择 openId 提供者并点击登录 -> 回发到控制器

所以我接受了一个包含我的域类的 ViewModel。

到目前为止,在我的 SendOpenIdRequest

现在这是我迷路的地方,因为他们有很多我可以返回的东西。

我可以回来

但是我认为这会很糟糕,因为现在我依赖于 asp.net mvc ActionResult,如果我说将此服务层用于其他项目(也许我有一个连接到移动应用程序的 Web 服务)。它不会工作得很好。

我可以return OutgoingWebResponse,但我不确定一旦我把它拿回来该怎么办。

我还可以返回从 CreateRequest() 生成的 IAuthenticationRequest

最后,我可以返回我的域对象(OpenId)和上面列出的对象之一。

0 投票
2 回答
760 浏览

.net - 在整个 n 层 Web 应用程序中使用 .NET 成员资格提供程序

我目前正在构建一个 n 层 Web 应用程序,主要用于实践新技术和模式 - 存储库、uow、服务、ioc、ef4 和 mvc3。

经过大量的拉扯之后,我现在有了 ef4 使用存储库通过我的服务层保存我的实体。

我现在开始在服务层定义我需要的方法,我认为现在是开始实施身份验证的好时机。通常我会推出自己的身份验证代码,但是朋友告诉我尝试使用 Membership Provider。

现在显然我将在 mvc3 Web 应用程序中使用它,但我想知道我是否也可以在我的服务层中使用它?谁能指出我的任何文章或博客文章?

注意。抱歉,如果我说的是显而易见的,但我只是想明确一点,当我提到我的服务层时,我不是指 WCF;这些是我自己的尊重服务层模式的类 - http://martinfowler.com/eaaCatalog/serviceLayer.html。话虽如此,我可能希望以后通过 WCF 服务公开这个服务层。

我已经在谷歌上搜索了几个小时,但什么也没想到!

非常感谢任何帮助。

0 投票
1 回答
193 浏览

c# - 这些类/方法应该去哪里?

我有这样的结构

WebUI 项目 - 控制器、视图框架项目 - 存储库、服务层和域

所以现在我有 3 个方法/类

  1. 打开 ID/打开身份验证

起初我以为我会将所有逻辑放在我的框架项目中的服务层中(准备请求,检查响应等将在该层中)。

所以现在我正在使用 dotnetopenauth 库,因为我需要在我的控制器中使用 AsActionResult 方法(我从我的服务层返回“OutgoingWebResponse”,因为我不希望我的服务层中有任何 MVC)

当我决定在我的服务层中不包含任何 MVC 时,我开始思考。正如我所读到的,包含业务逻辑的服务层不应具有任何依赖项,例如 MVC 引用,因为如果您使用 Windows Phone 应用程序,则不应使用 MVC 的东西。

您的业​​务层应该可以在任何应用程序中实现即插即用。

因此,出于上述原因,现在我不确定是否应该将我为 openId 编写的内容移动到我的 mvc 项目中的模型文件夹中。因为如果我确实使用 Windows Phone 应用程序或表单应用程序,我将不会使用 dotnetopenauth,因为我认为这些类型的应用程序不支持它。

  1. 我的第二个是表单身份验证。再次与上述几乎相同的原因。这是否应该在我的模型文件夹中作为本地服务/repo 层(即在同一个项目文件中)。

  2. 我正在使用 nhibernate、流利的 nhiberate 和 ninject。我的回购都在我的框架项目中。所以我当然有所有的参考资料。但由于我使用 ninject 进行 ioc,所以我的 webui 项目中也有所有引用。

我不知道是否可以更改这个以从我的 webui 中删除这些引用。我在想不,因为他们我的 ioc 不能放在我认为应该去的 webui 中。

0 投票
2 回答
3584 浏览

asp.net-mvc - 如何在服务层管理事务?

我们正在开发一个具有以下架构的 .Net 应用程序:表示层(使用带有 ASP.Net MVC 2 的 MVC 模式)、服务层、数据访问层(使用实体框架上的存储库模式)。

我们决定将事务管理放在服务层,但我们不确定如何实现它。我们希望完全在服务层级别控制事务。也就是说,每次控制器调用服务层中的方法时,它必须是关于数据库更新的原子操作。

如果服务层中提供的不同服务之间没有关系,那么就很简单:每个方法都应该在其执行结束时提交更改(即,在它使用的上下文中调用 save 方法)。但有时服务层的服务协同工作。

例如:我们提供的发货服务有一个确认方法,该方法接收以下参数:发货 id,指示它是对应于新客户还是现有客户的标志,客户 ID(如果发货确认是针对现有客户)客户)和客户名称(如果是新客户)。如果标志设置为“新客户”,则服务层必须 (a) 创建客户并 (b) 确认发货。对于 (a) 发货服务调用客户服务(它已经实现了创建新客户并将其存储在数据库中所需的验证和逻辑)。

谁应该在这种情况下提交更改?

  • 客服该不该做?创建新客户后它无法提交更改,因为稍后在发货确认方法中可能会出错,但它必须在直接调用的情况下提交更改(在其他用例中,提供用于创建客户端)。
  • 调用服务方法的控制器应该这样做吗?但是控制器不应该对交易一无所知,我们决定将所有交易知识放在服务层中。
  • 服务层中的事务管理器?如何设计它?,谁叫它,什么时候?

是否有我们应该遵循的设计模式?

0 投票
1 回答
252 浏览

asp.net-mvc - 如何使用 ModelStateWrapper= 控制错误键

0 投票
5 回答
106359 浏览

asp.net-mvc - 存储库和服务层之间的区别?

在 OOP 设计模式中,存储库模式和服务层有什么区别?

我正在开发一个 ASP.NET MVC 3 应用程序,并试图理解这些设计模式,但我的大脑还没有明白......