Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC是开发服务层和/或API的好选择吗?_Asp.net Mvc_Service - Fatal编程技术网

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

Asp.net mvc ASP.NET MVC是开发服务层和/或API的好选择吗?,asp.net-mvc,service,Asp.net Mvc,Service,ASP.NET MVC是开发服务层和/或API的好选择吗?如果是这样,他们是否有可靠的例子可供参考。ASP.NET MVC视图通常与aspx页面相关联,但如何以XML或JSON的形式创建视图呢 在我提议的场景中,我将拥有一个ASP.NET MVC前端,它将使用n个服务层,这些服务层也将作为公共API公开。您可以创建控制器方法,这些方法除了返回视图外,还返回不同的ActionResult类型。以下是ASP.NET MVC中可能内置的ActionResult类型: System.Web.Mvc.Co

ASP.NET MVC是开发服务层和/或API的好选择吗?如果是这样,他们是否有可靠的例子可供参考。ASP.NET MVC视图通常与aspx页面相关联,但如何以XML或JSON的形式创建视图呢


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

您可以创建控制器方法,这些方法除了返回视图外,还返回不同的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
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至少在我看来,使用WCF(Windows Communication Foundation)可以更好地为您服务


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

如果您正在制作RESTful服务,我认为MVC将非常棒。如果您想支持WS*webservice标准,那么您可能应该使用WCF。就我个人而言,我认为WCF带来了很多痛苦/开销,如果你只是在做RESTful服务,这是不必要的。WCF倾向于绕过IIS和ASP.NET堆栈的某些部分,这些部分可能会带来意外的痛苦(或愉悦,如果您喜欢使用/配置WCF)。

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

对此有什么理由吗?基于过去的经验,对于一个公共API,我几乎总是不同意你的观点,因为WCF就是为它而构建的。您可以轻松地创建服务,使用不同的序列化方法公开它们,并正确地构建安全性。如何通过服务公开它们?它实际上是一个REST服务。您给它一个URL(带参数)作为GET或POST请求,它会响应结果。