繁体   English   中英

ASP.NET:用于简单ajax调用的Web服务还是WCF?

[英]ASP.NET: Web Service or WCF for simple ajax call?

我只想简单地通过ajax在我的Web服务上调用一个方法,并让它返回一个值。

我应该使用“ WCF服务”,“启用AJAX的WCF服务”还是“ Web服务”

哪个最简单?

请改用通用HTTP处理程序。 它们更易于编码。

您应该使用启用了Ajax的WCF服务。 我不记得确切的名称了,但是它应该标记一个属性,以便可以从JS访问。

除非维护现有代码且不能更改,否则永远不要使用“ Web服务”模板。

如果您只是调用单个方法,请使用ScriptMethod

您可以在使用它的页面上内联编码。 http://www.asp.net/ajax/tutorials/understanding-asp-net-ajax-web-services

使用ScriptMethod属性

ScriptService属性是必须在.NET Web服务中定义的唯一ASP.NET AJAX属性,ASP.NET AJAX页才能使用它。 但是,另一个名为ScriptMethod的属性也可以直接应用于服务中的Web方法。 ScriptMethod定义了三个属性,包括UseHttpGet,ResponseFormat和XmlSerializeString。 在以下情况下,更改这些属性的值可能很有用:需要将Web方法接受的请求类型更改为GET,或者Web方法需要以XmlDocument或XmlElement对象的形式返回原始XML数据时,从服务返回的值应始终序列化为XML而不是JSON。

当Web方法应接受GET请求而不是POST请求时,可以使用UseHttpGet属性。 使用带有将Web方法输入参数转换为QueryString参数的URL发送请求。 UseHttpGet属性默认为false,仅当已知操作安全且未将敏感数据传递到Web Service时才应将其设置为true。 清单6显示了将ScriptMethod属性与UseHttpGet属性一起使用的示例。

如果只有这些,我发现启用AJAX的WCF服务最简单。 它仍然是WCF,但它为您模板化了正确的web.config设置,并断开了普通“ WCF服务”模板为您提供的界面。 就整个WCF混乱而言,这似乎是最接近旧ASMX风格的最接近的事情,因为它很容易上手。

作为另一种选择,如果您恰好能够在Webforms项目中使用ASP.NET MVC,并且只需要使用它进行Ajax调用,则可以完全跳过Web服务hoopla并为您的AJAX调用创建一个简单的JSON结果,如下所示:

// put this method in a controller
public JsonResult AjaxJsonTest(string who) {
   var result = new {
      Success = true,
      Message="Hello, " + (who ?? "world!")
   }; 
   return Json(result, JsonRequestBehavior.AllowGet);
}

然后可以从jQuery这样调用它:

<script language="javascript" type="text/javascript">
function AjaxTestClick() {
    $.ajax({
        type: "POST",
        url: '<%: Url.Action("AjaxJsonTest", "Test") %>',
        data: { who: 'whomever' },
        success: function (resultData) {
            if (resultData.Success) {
                alert(resultData.Message);
            }
            else {
                alert('Ajax call failed.');
            }
        }
    });
}
</script>

众多选择-选择最适合您的情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM