使用ASP公开现有的服务层.净之前

本文关键字:服务 ASP 使用 | 更新日期: 2023-09-27 18:01:26

我目前有一个分层架构,如下:

  1. 服务层——这是与域的主要交互点。包含所有业务规则、验证等。
  2. 数据/存储库层——这一层处理所有数据的持久性。不包含业务逻辑或验证。主要包含Repository<T>, UnitOfWork (EF Specific)和所有EF的东西,如DbContext, EntityTypeConfiguration等。
  3. 实体框架
  4. SQL Server

我正在使用一个贫血域模型,所以基本的POCO代表问题域。

我有几个关于通过ASP.NET WebApi暴露这一点的问题。

  1. 保安住在哪里?比如用户是否有权限编辑记录,或者记录的类型。用户是否可以执行特定的操作等。以及诸如身份验证/基于角色的授权之类的东西。
  2. 我应该使用WebApi作为实际的服务层,还是使用它以RESTful方式在HTTP上公开我现有的服务层?
  3. 给出一个基本的例子,比如更改一个类别的名称,我在哪里强制当前用户具有更改所述记录的权限?我是否依赖Thread.CurrentPrincipal来获得Identity来检查给定的角色,并在WebApi中设置?Mvc应用程序?

有什么好的例子可以说明我所说的这种情况吗?

顺便说一句-我正在使用ASP。. NET MVC 5来提供应用程序的外壳(SPA),然后前端将全部是AngularJS。

使用ASP公开现有的服务层.净之前

关于您的服务应该具有的安全级别的第一个问题,我认为正确的答案应该是所有应用程序中的一个原则:

服务应该有足够的安全性来保护数据不受不需要的用户的访问。

一旦你创建了一个服务并将其公开,你就暴露在可能的攻击中,当然,复杂的安全规则可能会增加开发时间,某些情况下可能会导致性能下降;衡量威胁的级别,并相应地规划您的安全。

WebApi是为了通过Http/Rest提供服务而创建的,所有内置的原则和功能都是为了这个目的而创建的,所以关于你的第二个问题,就像你在最后推断的那样,它是一个服务层,但是是Http/Rest服务层。WebApi使用属性Authorize来加强安全性,就像它通常与。net框架一样,你可以继承和扩展它。你可以在这里了解更多。

既然你正在使用Angularjs,即使你需要MVC5来使用WebApi,我的建议是你不要使用MVC razor或任何其他服务器技术来渲染你的页面。