将依赖于 Web 引用的业务逻辑从表示层中分离出来

Posted

技术标签:

【中文标题】将依赖于 Web 引用的业务逻辑从表示层中分离出来【英文标题】:Separating business logic dependent on web references out of presentation layer 【发布时间】:2011-09-14 03:37:19 【问题描述】:

我有一个带有表示层和业务层作为单独项目的 Web 应用程序。一个是 Web 应用程序,另一个是类库。我添加了对 Web 应用程序的 Web 引用以使用 Web 服务。我在使用服务 API 时没有遇到任何问题,但我发现自己在我的表示层中添加了很多业务层类型逻辑来利用这个 API。如果我可以更改我的一些业务层代码以使用 Web 服务,我会很高兴的,但是这样的配置听起来像是一个大循环,不,不。无论如何,我希望我的对象能够继续做他们正在做的事情,但它也可以与 web 服务一起使用,但我发现自己必须在我的表示层中创建一个 helper/manager 类来使用 web -服务。这导致我在对要添加到服务的对象执行操作的任何地方都需要更改代码。解决这个问题的正确方法是什么?

我什至不确定在所有这些漫无边际的任何地方是否存在合理的问题,但如果有人能提供任何有用的话,我将不胜感激。

谢谢!!

【问题讨论】:

听起来好像我需要研究在 .net Web 应用程序中实现服务层的正确方法。我目前只是添加对 Web 应用程序的 Web 引用,并在调用业务层的同时访问服务 API。我希望有一种方法可以从我的业务层使用 Web 服务,以避免在整个应用程序中添加相同的代码。 【参考方案1】:

我解决这个问题的方法是创造一些达到这种效果的东西:

数据访问层 业务逻辑层

服务层(没有任何业务逻辑,只是一个接口)


服务访问层(没有任何业务逻辑或表示逻辑)

表示层(MVC、表示逻辑等)

您现在可以更改没有业务逻辑的服务层,而不会影响您的业务逻辑。您在客户端的服务访问层也可以保护您免受服务接口的更改。

【讨论】:

【参考方案2】:

如果您的服务层仅公开类似服务的方法(例如像 SaveInvoice(InvoiceDTO) 这样的简单 CRUD 方法),那么在大多数情况下您应该没问题。 但是,我们可以使用您这边的一些代码。

构建服务层的方法确实很多,有状态的、无状态的等等,所以试着解释一下你在演示中得到了什么重复

【讨论】:

【参考方案3】:

也许您应该让您的服务也封装业务逻辑?这样,您的表示层将只访问服务 - 服务将访问业务逻辑层。

【讨论】:

以上是关于将依赖于 Web 引用的业务逻辑从表示层中分离出来的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 5 ,想要将实体框架从 Web 项目中分离出来

AOP——SpringAOP

AOP

面向切面编程 AOP 和装饰器??

Drrols规则引擎

学生管理系统(分层开发)