我正在用MVC开发一个有移动应用程序的项目,所以有一点很清楚,我们必须使用Web,这样它才能用于移动应用程序。
在创建API之后,当我们开始开发Web站点时,我们对是使用API还是直接访问Business感到困惑和讨论。最后,我们得到了经验丰富的开发人员的意见,不再直接使用Business,而是使用Web。
对于这个解决方案的结构,我有些困惑。
( 1)为什么我们应该使用Web并发出HTTP请求(这很费时)来获取或放置数据,而不是直接使用相同的解决方案的业务对象。
( 2)在争论之后,他们说如果客户想要在不同的云服务器上托管API和web,并且只在API上应用扩展,或者他可能想拥有不同的访问API和Web的url (这是逻辑上的)。因此,在这种情况下,我们是否应该在相同的解决方案中调用MVC应用程序中的Web?
3)如果我们在不同的主机上托管API和Web,这意味着我们的网络将使用WebClient,并对每个导航进行HTTP。是对的吗?
4)如果我们要在不同的服务器上形成API和Web托管的业务对象,那么如果BL中的某些变化需要在这两个服务器上更新构建。
5)或者我们应该只为API创建一个项目,可以添加视图或html页面来开发Web接口,这样我们就可以直接从ajax调用API。
据我所知,#5是最好的解决方案,或者API只适用于第三方访问。如果我们在同一解决方案中有DB、EF、数据层和业务层,那么就不应该使用API进行HTTP调用和直接访问业务对象。(如果我错了,请纠正我)当移动应用程序或桌面或任何人想访问应用程序时都需要API,这样我们就可以拥有相同的存储库和数据层。
在我的场景中,我必须创建API,因为我们也有移动应用程序,在项目API方面,我们称之为业务层(单独的项目),业务层与数据访问层(单独的项目)通信。因此,我的问题是,如果我们将API和web托管到不同的服务器上,那么调用API (即HTTP请求)可能需要更长的时间,而不是使用业务层的方法,因为我们创建了项目,并且拥有业务层的.dll。在API控制器中,我们只是将业务的输出转换为json格式。
我在网上搜索过,但没有得到令人信服的答案。我发现一个博客http://odetocode.com/blogs/scott/archive/2013/07/01/on-the-coexistence-of-asp-net-mvc-and-webapi.aspx讨论了同样的问题,但是在那个博客中,我的问题是为什么我们需要考虑场景3呢?
更新:我们可以有不同的API项目和MVC项目,我们可以使用jvascript从web调用API,也可以使用MVVM模式。
发布于 2014-07-01 05:27:32
直接访问业务对象(我假设您指的是控制器中的业务对象)将更快&更容易。
如果客户端想要在不同的云服务器上托管API和web,并且只在API上应用扩展,或者可能想拥有不同的访问API和Web的url (这有点合乎逻辑)
那你就得把它们分开..。但对我来说,这听起来不太符合逻辑,你肯定会想把两者都放大。你确定你需要满足这一要求吗?听起来有点过火了。记住YAGNI --如果你不需要它,就不要建造它。当你需要的时候,建造它。
如果是我,我会使用最适合这个网站的技术来构建这个网站,那么当你需要一项其他人可以称之为单独构建的服务时。
发布于 2016-02-28 03:51:50
我想说;更喜欢MVC通过HTTPClient调用HTTPClient。这是压倒一切的“核心dll”逻辑,但主要的优势是,您的整个系统将有一个单点访问HTTP...Anyways上的域对象下line..with微服务体系结构拾取和应用程序已经切换到客户端框架(AngularJS等)....better作为另一个client...and弟子您的团队很好地管理.
保持它的SIMPE。希望能帮上忙。谢谢..
https://softwareengineering.stackexchange.com/questions/246380
复制相似问题