[我之前从未使用过WCF。我一直在谷歌搜索几天,并没有找到任何信息,使我决定是否明显使用它。]
我一直在使用ASP.NET MVC,LINQ to SQL和SQL Server开发网站。
现在我想开发一些移动应用程序,这些应用程序将从网站的数据库中提供数据。
有人向我建议我使用WCF。
我知道如果我有面向公共互联网的数据,如果有人真的需要它可以被删除,但我想尽量减少我的数据的“可废弃性”。
由于我的移动应用程序可能只是以JSON格式发送/接收数据,因此使用WCF而不仅仅是在MVC中返回REST的JSON返回URI会带来哪些好处?
如果我确实实现了WCF,那么我的MVC网站是否也应该使用这些服务获取数据而不是在我的控制器中使用LINQ?
答案 0 :(得分:1)
我认为没有必要使用WCF。如果API很小,我会考虑API区域或控制器,并通过控制器操作通过JSON提供数据。我重构了应用程序,以便API和您的控制器使用相同的存储库。如果您需要从视图中通过AJAX检索数据,您可以使用API,但如果他们可以利用存储库,我在控制器中看不到使用它们的任何一点。
答案 1 :(得分:1)
我有一个ASP.NET MVC应用程序命中WCF。我最初是在没有WCF的情况下通过控制器与访问我的存储库的服务层进行交互来开发它的。在开发期间出现了一项要求,要求我将UI与服务层实际分开。
添加WCF是后方的痛苦。在没有WCF的情况下工作的事情在之后不再有效。例如,我的实体的状态在传输到服务层或从服务层传输时丢失,这使得很难利用我的ORM(NHibernate)的某些功能。我无法再检索实体,将viewmodel映射到控制器中的实体,并允许NHibernate确定是否需要更新。
尽管如此,与WCF相关的挑战大多是在开始时产生的。我不需要经常重新访问配置,而且我已经习惯了使用分离的实体。我也有物理分离的好处,WCF非常灵活。
如果我需要网络服务而不是分离,我会使用WCF吗?我真的不知道。我可能会尝试让JSON动作方法起作用,因为它们更容易(更不用说更有趣了)。保持简单仍然是一个很好的原则。
至于你的MVC网站点击服务?我认为你的行动方法应该非常薄,并且你的MVC项目中应该存在很少的业务逻辑或持久性问题,这是安全的。关注点分离使您更容易适应和更改您的应用程序。