0

我有一个旧的 Web 表单,它需要使用一些 ajax 功能进行扩展。我已经升级到 .net 4,但想知道在创建新服务时采用什么方法。

我没有太多编写 wcf 服务的经验,而且使用这样的简单 cshtml 文件编写服务似乎要简单得多:

@{    
    var db = Database.Open("MyConnectionString); 
    var data = db.Query("SELECT * FROM MyTable WHERE Col1 = @0", '123');
    Json.Write( new { results=data}, Response.Output);
}

与创建 wcf 服务相比,使用此策略有哪些缺陷?

谢谢你的帮助

拉尔西

4

3 回答 3

1

根据您对 CodeCaster 的评论,我认为您混淆了 Web 服务和 Web 方法的概念。如果您正在做的只是将 Ajax 添加到您的应用程序中,那么您需要 Web 方法,它们是返回 json 的操作方法。而且,由于您使用的是网页,因此您的方法是完全有效的。

于 2011-11-22T18:28:55.890 回答
0

使用 WCF,您可以执行以下操作:

[OperationContract]
public UserNow GetCurrentUser()
{
    string UserName = Membership.GetUser().UserName; 
    string UserToView = Request.Params["UserToView"];
    //do a bunch of things.
    return UserNow;
}

优点?

  • 它是强类型的(你不能返回一个字符串、布尔值或 new FooBar() 或者什么都没有,而你可以Response.Write全有或全无你喜欢)
  • 生成了一个 WSDL,客户端可以使用它,以便他们知道可以执行哪些操作以及发送哪些数据类型
  • 使用 WCF,您可以轻松添加另一个绑定以支持其他范围的客户端(用于 Web 服务的 basicHttp 和 wsHttp,用于与其他用 .NET 编写的客户端更有效地通信的 netTcp),而无需更改任何代码

我可能会忘记很多其他的事情。

于 2011-11-22T09:53:46.013 回答
0

其他回复中未提及的一个考虑因素是 Json.Write 的性能。它适用于带有几列的小型记录集,但我注意到它的速度非常慢,即使只有 ~70 条记录和 10 列。这在您正在“Ajaxifying”的 Web 应用程序的上下文中尤其重要,您通常会尝试使应用程序对用户交互反应更快。在这些情况下,我通常会使用 Json.Write 来获得概念验证工作,但最终会返回并修改剃刀页面以遍历返回的记录并使用 StringBuilder 构建 JSON 字符串并编写到输出。

我不知道 WCF 的性能,但如果它比循环字符串生成器更快,您可以将其添加到上面的好处列表中(以权衡设置它的复杂性)。

于 2012-01-11T23:31:56.580 回答