我应该将WCF添加到ASP.NET MVC网站以将数据提供给移动应用程序吗?

问题描述:

[我以前从未使用过WCF。我一直在谷歌搜索了几天,并没有发现任何信息,使我的决定是否使用它明显的我。]我应该将WCF添加到ASP.NET MVC网站以将数据提供给移动应用程序吗?

我一直在开发一个网站使用ASP.NET MVC,LINQ到SQL和SQL Server。

现在我想开发它就会从网站的数据库被送入数据的一些移动应用程序。

有人建议,我认为我使用WCF这一点。

我知道,如果我面临的公共互联网数据,可以,如果有人真的想要它刮掉,但我想,以尽量减少我的数据“scrapablility”。

因为我的移动应用程序将可能只是被发送/ JSON格式接收数据时,我会使用WCF,而不是仅仅基于REST的JSON-返回URI的MVC中得到什么好处?

如果我实现WCF,应我的MVC网站是打击那些服务的数据也,而不是在我的控制器使用LINQ?

我有一个ASP.NET MVC应用程序打WCF。我最初是在没有WCF的情况下通过让控制器与一个服务层交互来开发它的,这个服务层碰到了我的仓库。在开发过程中出现了一项要求,要求我将UI与服务层进行物理分离。

添加WCF是在后方的痛苦。事情没有WCF工作后不再工作。例如,我的实体的状态在传输到/从服务层传输时丢失,这使得我的ORM(NHibernate)的某些功能非常难以使用。我无法再检索实体,将视图模型映射到我的控制器中的实体,并允许NHibernate确定是否需要更新。

这就是说,与WCF相关的挑战之初大多发生。我不需要经常重新访问配置,而且我已经习惯了使用分离的实体。我也有物理分离的好处,WCF非常灵活。

如果我需要Web服务而不是分离,我会使用WCF吗?我真的不知道。我可能会尝试使JSON操作方法工作,因为这些方法更容易(更不用说更有趣)。保持简单仍然是一个很好的原则。

至于你的MVC网站打服务?我认为可以肯定地说你的动作方法应该非常简单,并且在你的MVC项目中应该只有很少的业务逻辑或持久性问题。分离问题使得适应和改变你的应用变得更容易。

我没有看到任何需要WCF。如果API很小,我会考虑API区域或控制器,并通过控制器操作中的JSON传递数据。我会重构应用程序,以便API和您的控制器使用相同的存储库。如果您需要通过AJAX从视图中检索数据,则可以使用该API,但如果控制器可以利用存储库,则在控制器中看不到使用它们的任何点。