代码之家  ›  专栏  ›  技术社区  ›  jamesaharvey

ASP.NET MVC是开发服务层和/或API的好选择吗?

  •  2
  • jamesaharvey  · 技术社区  · 15 年前

    ASP.NET MVC是开发服务层和/或API的好选择吗?如果是这样,他们有没有任何可靠的例子可供参考。ASP.NET MVC视图通常绑定到ASPX页面,但是如何将视图转换为XML或JSON形式呢?

    在我提议的场景中,我将拥有一个ASP.NET MVC前端,它将使用N个服务层,这些服务层也将作为公共API公开。

    4 回复  |  直到 15 年前
        1
  •  3
  •   Frank Schwieterman    15 年前

    如果你在做一个安静的服务,我认为MVC会很棒。如果您希望支持WS*WebService标准,那么您可能应该使用WCF。我个人认为,如果你只是在做一个安静的服务,WCF是一个不必要的负担。WCF倾向于绕过IIS和ASP.NET堆栈的某些部分,这可能会导致意外的痛苦(或者愉悦,如果您喜欢使用/配置WCF的话)。

        2
  •  4
  •   Robert Harvey    15 年前

    您可以创建除了视图之外返回不同actionResult类型的控制器方法。以下是已内置到ASP.NET MVC中的可能的actionResult类型:

    System.Web.Mvc.ContentResult
    System.Web.Mvc.EmptyResult
    System.Web.Mvc.FileResult
        System.Web.Mvc.FileContentResult
        System.Web.Mvc.FilePathResult
        System.Web.Mvc.FileStreamResult
    System.Web.Mvc.HttpUnauthorizedResult
    System.Web.Mvc.JavaScriptResult
    System.Web.Mvc.JsonResult  <----  Here is the one for JSON
    System.Web.Mvc.RedirectResult
    System.Web.Mvc.RedirectToRouteResult
    System.Web.Mvc.ViewResultBase
        System.Web.Mvc.PartialViewResult
        System.Web.Mvc.ViewResult
    

    此外,您可以编写自己的actionResult,返回您选择的类型。

        3
  •  3
  •   Justin Niessner    15 年前

    至少在我看来,使用WCF(Windows Cuffic Foundation)可以更好地服务于此。

    WCF可用于构建多种服务,但也允许您为同一WCF服务指定不同的端点。这意味着您可以提供更灵活的公共API(RESTful Web服务、基于SOAP的Web服务和WS-*标准等),同时编写更少的代码。

        4
  •  1
  •   G-Wiz RameshVel    15 年前

    为了证实贾斯汀的答案,即WCF是一种可行的方法,使用WCF为您提供了一个抽象传输细节的平台。这允许您在配置时切换(或提供多个)传输。如果您发现基于Web的JSON/REST解决方案没有提供足够的性能,并且不需要跨平台互操作性,那么可以通过配置将服务更改为基于TCP或基于管道的服务。另一方面,ASP.NET MVC方法没有提供这样的选项,尽管您确实获得了对服务行为的更高程度的控制。