首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MVC4客户端获取异步还是调用业务逻辑/存储库来获取数据?

MVC4客户端获取异步还是调用业务逻辑/存储库来获取数据?
EN

Stack Overflow用户
提问于 2015-11-08 17:35:45
回答 1查看 243关注 0票数 0

我们正在从Web迁移到MVC4体系结构。我们的Web和MVC在同一个解决方案中。所以我们很少有选择:

1)我们可以像其他客户端一样,从MVC控制器调用Web : var response = await client.GetAsync(" API /method");

因为MVC和Web都在同一个项目中,所以我们很困惑,如果我们直接访问存储库/businessLayer的方式与我们在Web中所做的完全相同,那么将这个额外的HTTP调用放在一起是否有意义。(代码很少重复,但性能方面有好处)

2)我们有很多资源,有多个这样的请求。例如,我们必须调用8-10个不同的存储库来获取数据。

可能的解决方案(我们应该如何从MVC控制器中获取数据):1)是否应该通过client.GetAsync方法调用这些多个存储库,这将异步地从存储库中获取所有数据。异步意味着并行逻辑,这将是更快。Con是我们一直都有额外的HTTP调用调用不同的API。或者,我们是否应该像这些Web所做的那样,一个接一个地直接调用这些8-10个存储库呢?我看不出这有多大好处,因为它是同步的。唯一的好处是我们在这里避免了额外的HTTP调用。但这是以重复代码的额外成本为代价的。(从Web和MVC访问相同的BL/Repository代码)。我不知道是否可以使用某种异步方法从MVC控制器调用存储库?

我们该和哪一个一起去?一个额外的HTTP调用,它具有异步编程或直接访问存储库的功能,或者如果有人可以建议将两者混合使用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-09 14:28:01

当然,这是一个有趣的问题,我也不得不做出这个决定。最有趣的部分是对用户的身份验证。MVC和Web都有一个很好的认证过程。当然,对于无状态的http调用(在每个经过身份验证的请求上使用一个令牌)和MVC使用cookie和其他所有东西的情况下,都会使用API。

对我来说,更好的选择是将身份验证保持独立,同时仍然指向同一个数据库,因此不每次访问数据库时都调用我的API。即使您的API运行在同一台服务器上,我确信直接调用您的数据库会更快。

如果你做得对,我想你没有那么多重复的代码。首先,有一个应用程序核心项目,如果它更大,有一个数据库核心和一个网络核心。您的业务逻辑应该为您的应用程序执行业务。如果是api或mvc应用程序,我假设您希望在这两个应用程序中实现相同的目标:以安全和可控的方式获取或更新数据。但不要犯太多的错误。在mvc/api项目的控制器中可以使用一些逻辑。

从维护的角度来看:对BL进行类型错误调用,然后通过API请求执行此操作,这可能会改变特性(或者您必须随时随地更新版本),这要安全得多。

建筑,这是个有趣的世界。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33596891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档