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内容,如数据库上下文
,实体类型配置
,等等ASP.NET WebApi
公开此内容,我有几个问题
线程.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为应用程序外壳提供服务,并提供一个模板控制器。。。也使用盒式磁带进行捆扎/缩小。