【问题标题】:WebService or a simple MVC Controller?WebService 还是简单的 MVC 控制器?
【发布时间】:2011-05-22 02:44:23
【问题描述】:

我需要(对我自己)提供一种从数据库中获取一些数据的方法,以便我可以轻松构建静态 html 页面,以便我可以让服务器处理它们(因为我' m 每天浪费 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)。

【问题讨论】:

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


    【解决方案1】:

    视情况而定。 WCF 服务更灵活,因为您不必依赖 HTTP,而是可以使用直接 TCP 连接,而且我相信让它公开 SOAP 真的很容易。只是行为、端点等的 web.config 设置比它应该的要复杂一些。

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

    WCF = 更“稳固”,带有更多协议以使其“稳定”,即:您可以在 Provider 和 Consumer 之间建立硬契约。

    MVC = 更灵活,可能更容易设置,但没有硬性合同 - 如果您更改 Json 的格式,您的客户可能会在您最初注意到它的情况下中断,因此它更能跟上内容。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 即使通过Controller 也很容易做到这一点,我只需要返回Content( myClass.ToXML() )Json( myClass ) 并且正如迈克尔指出的那样...... WCF 配置有时可能非常棘手(我已经已经在那里):-/
        • 您可以使用查找格式请求参数的操作过滤器来获得相同的结果。例如\path\to\resource?format=xml\path\to\resource.json
        猜你喜欢
        • 2012-06-02
        • 2012-06-01
        • 1970-01-01
        • 2011-02-24
        • 2012-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-10
        相关资源
        最近更新 更多