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

时间:2010-12-03 23:47:05

标签: c# asp.net wcf web-services

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

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

哪个最简单?

5 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

除非您维护现有代码且无法更改,否则不应使用“Web服务”模板。

答案 3 :(得分:0)

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

您可以使用它所使用的页面对其进行内联编码。 http://www.asp.net/ajax/tutorials/understanding-asp-net-ajax-web-services

  

使用ScriptMethod属性

     

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

     

可以使用UseHttpGet属性   当Web方法应该接受GET时   请求而不是POST请求。   使用带Web的URL发送请求   方法输入参数转换为   QueryString参数。 UseHttpGet   属性默认为false,应该   只有在操作时才设置为true   众所周知是安全的   敏感数据不会传递给Web   服务。清单6显示了一个示例   使用ScriptMethod属性   UseHttpGet属性。

答案 4 :(得分:0)

如果这些是您唯一的选择,我发现启用AJAX的WCF服务是最简单的工作方式。它仍然是WCF,但它会为您提供正确的web.config设置模板,并抛弃简单的“WCF服务”模板为您提供的界面。对于旧的ASMX风格而言,它似乎是整个WCF混乱中最接近的东西,只要简单易上手。

正如另一种选择,如果您碰巧能够在您的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>

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