我需要提供(对我自己)从数据库中获取一些数据的方法,以便我可以轻松地构建静态html页面,这样我就可以减轻处理它们的服务器(因为我每天浪费80Gb的带宽).
我的问题很简单
我应该创建一个WCF服务(或ASMX Web服务)来提取这些数据(WCF将在同一台服务器上,所以我仍然使用它,但更少,因为我只是得到我真正需要的东西,不要浪费处理页面)
或者我应该创建一个简单的控制器,如:
public class ServiceApiController : Controller { public ActionResult GetPrizes(string calendarGuid) { return Json("..."); } public ActionResult GetWinners(string calendarGuid) { return Json("..."); } public ActionResult AddSubscriber(string calendarGuid,string[] args) { return Json("..."); } public ActionResult ReclaimSubscriberEmail(string calendarGuid,string email) { return Json("..."); } public ActionResult RequestContact(string calendarGuid,string[] args) { return Json("..."); } }
解决方法
要看. WCF服务更灵活,因为您不必依赖HTTP,而是可以使用直接TCP连接,我相信它很容易让它暴露SOAP.只是行为,端点等的web.config设置比它应该更复杂.
另一方面,MVC可能更快地设置,因为您不必处理有时有点难以更改DataContracts(因为它们需要重新部署共享程序集).
WCF =更“坚实”,有更多协议使其“稳定”,即:您可以在提供者和消费者之间建立硬合约.
MVC =更灵活,可能更容易设置,但没有硬合同 – 如果你改变Json的格式,你的客户可能会在没有你最初注意到它的情况下破坏,所以它可以更多地跟上东西.
总的来说,我使用MVC,除非我有理由使用上面概述的WCF(客户端和服务器之间的稳定/保证/可发现合同的要求,要求使用SOAP,或者设置IIS网站时不方便/不必要)因为我的服务器作为Windows服务运行)