WebService还是一个简单的MVC控制器?

时间:2010-12-08 09:22:26

标签: asp.net-mvc wcf web-services asp.net-mvc-2

我需要提供(自己)一种从数据库中获取数据的方法,以便我可以轻松地构建静态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("...");
    }
}

并直接从我将使用的任何Javascript框架中调用它(错误,当然是我可爱的jQuery)。

3 个答案:

答案 0 :(得分:8)

取决于。 WCF服务更灵活,因为您不必依赖HTTP,而是可以使用直接TCP连接,我相信它很容易让它暴露SOAP。只是行为,端点等的web.config设置比它应该更复杂。

另一方面,MVC可能更快设置,因为您不必处理有时稍微难以更改的DataContracts(因为它们需要重新部署共享程序集)。

WCF =更“坚实”,有更多协议使其“稳定”,即:您可以在提供商和消费者之间建立硬合约。

MVC =更灵活,可能更容易设置,但没有硬合同 - 如果你改变Json的格式,你的客户可能会在没有你最初注意到的情况下破解,所以它可以更多地跟上东西。

总的来说,我使用MVC,除非我有理由使用上面概述的WCF(客户端和服务器之间的稳定/保证/可发现合同的要求,要求使用SOAP,或者设置IIS网站时不方便/不必要) ,例如因为我的服务器作为Windows服务运行)

答案 1 :(得分:0)

如果您不需要任何UI框架来显示某些数据,我更喜欢Web服务。

答案 2 :(得分:0)

我个人会创建一个WCF Web服务来公开数据。它将更灵活,您可以公开处理不同数据格式的多个端点JSON,XML,...这样您就可以使用来自不同客户端(Web,Windows,移动设备......)的服务。