从ajax调用调用Web服务并从MVC控制器调用它之间的区别

时间:2015-12-17 14:15:00

标签: c# ajax asp.net-mvc

我有一个MVC 5项目,后端有一个OData V4 Web服务,在检索数据(而不是视图)时,我开始遇到一些困惑。

我不确定是否应该通过ajax或通过HTTP客户端的MVC控制器操作进行Web服务调用。我知道在后一种情况下,您通常需要一些额外的分离,因为控制器操作可能不应该直接使用HTTP客户端调用Web服务,但无论如何。我还应该重申,我的问题与Views / PartialViews无关;我总是调用控制器动作来返回那些。

当您需要对返回的数据执行其他工作时,是否仅通过控制器操作才有利可图?

如果我只是从网络服务中检索一个对象列表,那么通过调用一个控制器动作是否有任何意义呢?

很抱歉,如果之前已经回答过这个问题。我发现了一些模糊的类似问题,但没有太具体。

感谢。

1 个答案:

答案 0 :(得分:0)

如果Web服务位于您的Web应用程序域以外的域中,则在尝试从您的页面进行ajax调用时,可能会遇到相同的源策略问题。基本上这不是问题,而是一种安全功能,其中Web浏览器允许网页A中包含的脚本访问网页B中的数据,但仅当两个网页具有相同的源时。原点定义为URI方案,主机名和端口号的组合。

如果您遇到此问题,可以尝试从服务器代码(控制器/服务)访问Web服务。这也允许您解析回来的响应并转换为您的视图真正需要的另一种格式。如果您要访问不经常更改的数据,您也可以使用MemoryCache或其他点网络缓存解决方案对其进行缓存。这样可以节省一些网络电话并缩短页面加载时间。