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

C# 使用ASP.NET WebApi公开现有服务层,c#,asp.net,asp.net-mvc,angularjs,asp.net-web-api,C#,Asp.net,Asp.net Mvc,Angularjs,Asp.net Web Api,我目前有一个分层架构,如下所示: 服务层-这是与域的主要交互点。 包含所有业务规则、验证等 数据/存储库层—这是处理所有数据持久性的层。不包含任何业务逻辑或验证。基本上包含存储库,工作单元(特定于EF)以及所有EF内容,如数据库上下文,实体类型配置,等等 实体框架 SQL Server 我使用的是贫血领域模型,所以基本的POCO代表了问题领域 关于通过ASP.NET WebApi公开此内容,我有几个问题 保安住在哪里?基本上,用户是否有权编辑记录或记录类型。用户可以执行特定操作等,也可以执行身份

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

  • 服务层-这是与域的主要交互点。 包含所有业务规则、验证等
  • 数据/存储库层—这是处理所有数据持久性的层。不包含任何业务逻辑或验证。基本上包含
    存储库
    工作单元
    (特定于EF)以及所有EF内容,如
    数据库上下文
    实体类型配置
    ,等等
  • 实体框架
  • SQL Server
  • 我使用的是贫血领域模型,所以基本的POCO代表了问题领域

    关于通过
    ASP.NET WebApi
    公开此内容,我有几个问题

  • 保安住在哪里?基本上,用户是否有权编辑记录或记录类型。用户可以执行特定操作等,也可以执行身份验证/基于角色的授权等操作
  • 我应该使用WebApi作为实际的服务层,还是使用它以RESTful方式通过HTTP公开现有的服务层
  • 给出一个更改类别名称的基本示例,我在哪里强制当前用户有权更改所述记录?我是否依赖
    线程.CurrentPrincipal
    获取
    标识来检查给定角色,并在WebApi中设置该角色?Mvc应用程序
  • 有没有什么好的例子可以说明我所说的这种情况


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

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

    服务应具有足够的安全性,以保护数据不受不需要的用户的攻击

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

    WebApi是为了通过Http/Rest提供服务而创建的,所有内置的原则和功能都是为了这个目的而创建的,因此关于第二个问题,正如您在最后推断的,它是一个服务层,但却是一个Http/Rest服务层

    WebApi使用一个属性
    Authorize
    来强制执行安全性,就像.NET框架通常使用的那样,您可以从中继承并扩展它。你可以了解更多


    由于您使用的是Angularjs,即使您需要MVC5来使用WebApi,我建议您不要使用MVC razor或任何其他服务器技术来呈现页面。

    请注意,如果您要使用Angularjs和WebApi,您不需要ASP.NETMVC5@Dalorzo-我们使用ASP.NET MVC为应用程序外壳提供服务,并提供一个模板控制器。。。也使用盒式磁带进行捆扎/缩小。