繁体   English   中英

使用ASP.NET WebApi公开现有服务层

[英]Exposing existing Service Layer using ASP.NET WebApi

我目前有一个分层的体系结构,如下所示:

  1. 服务层-这是与域的主要交互点。 包含所有业务规则,验证等。
  2. 数据/存储库层-这是处理所有数据持久性的层。 不包含任何业务逻辑或验证。 基本上包含Repository<T>UnitOfWork (特定于EF)以及所有EF之类的东西,例如DbContextEntityTypeConfiguration等等。
  3. 实体框架
  4. SQL服务器

我使用的是Anemic域模型,因此代表问题域的基本POCO是。

我有几个问题要通过ASP.NET WebApi

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

有没有很好的例子可以说明我正在谈论的这种情况?

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

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

服务应具有足够的安全性,以保护数据免受有害用户的侵害

一旦创建了服务并将其公开,您就很容易受到可能的攻击,因为复杂的安全规则可能会增加开发时间,并且在某些情况下可能会导致性能下降。 测量威胁级别并相应地计划您的安全性。

WebApi的创建旨在通过Http / Rest提供服务,所有内置的原理和功能都是出于该目的而创建的,因此关于您的第二个问题,就像您在其末尾推断的那样,它是服务层,但是是Http / Rest服务层。

WebApi使用属性Authorize来强制实施安全性,与.NET Frameworks通常一样,您可以从中继承并扩展它。 您可以在此处了解更多信息。

并且由于您使用的是Angularjs,即使您需要使用MVC5才能使用WebApi,所以我的建议是不要使用MVC剃刀或任何其他服务器技术来渲染页面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM