2011-08-05 76 views
3

我想从jQuery到我的服务器进行ajax调用。基本上,我希望将请求作为POST发送,其内容类型为x-www-form-urlencoded和相应的参数(parameter1 = X & paramter2 = Y & parameter3 = Z)。我希望响应是JSON。集成jQuery AJAX和.NET

服务器环境是.NET。我一直在试验下面的三种方法,但一直没有能够让人工作得很好。

ASPX - 使用aspx处理并返回JSON,我可以让它工作,但我需要自己序列化JSON。这是可能的,但我希望有更方便的事情。另外,纠正我,如果我错了,但我会想象aspx页面有很多额外的开销,因为他们预计不仅仅是执行一个方法,并返回简单的JSON。

ASMX和WCF - 使用asmx和WCF,我可以得到它返回JSON,但只有当我在请求中发送JSON时。

什么是用于此请求/响应类型的最佳服务器端“框架”? .aspx,.asmx或WCF?既然我已经能够至少得到aspx来为此工作,那么这是一种合适的方法吗?

我见过其他产品,通过Web服务公开一个API并使用带有JSON响应类型的名称/值查询字符串请求格式,但这似乎是.NET中难以完成的壮举。

回答

1

你说得对,ASPX页面带来额外的开销。即使您根本不使用WebForms框架,对ASPX页面的请求仍然必须过滤整个页面生命周期。

如果您更喜欢这种低级别方法,请阅读QueryString参数并使用手动序列化的JSON进行响应,但ASHX HttpHandler可能是最佳解决方案。

个人而言,我更喜欢ASMX服务。发送JSON参数并不是非常困难(当你开始发送嵌套对象或集合时,你可能会这样做,这通过简单的键/值对发生混乱),并且很好地避免不必要的在每个请求期间反序列化和序列化。

人们会告诉你WCF是正确的解决方案,因为它更新,但是当你使用jQuery时,.NET 4的WCF目前并不适合。在处理DateTime和Enum类型时它不那么灵活,并且它具有笨重的Dictionary序列化。 WCF的新WCF Web Api解决了这些问题,但如果你想尝试一些事情,可以尝试一下。

0

如果你可以沿着WCF路线走下去,我可以建议你看看微软的WCF WebAPI项目。这个项目位于WCF之上,在客户端访问(.NET代码或jQuery Ajax)方面提供了一些细节和简化。 Here是一个使用jQuery进行POST形式urlencoded数据的演练。还有其他演示其他相关任务的演练。

这些服务可以像其他任何WCF服务一样托管,甚至可以在您的网站的其他位置同一个ASP.NET项目中托管。

目前,该项目正处于早期开发阶段,并且存在一些“上线”限制,但根据您的项目需求,这可能对我们有很大的帮助。

1

我用过了。

  • 的.aspx - >刚正是你正在做它的方式
  • .ashx的 - >类似的.aspx除了在页面生命周期的开销更少。
  • .asmx & wcf - >在请求中传递JSON有什么问题?
  • MVC - > return JsonResult。这个是我最喜欢的,当我没有制作一个完整的 API(为了我使用WCF),而是我只需要一个或两个请求 来返回JSON。这当然假设整个站点是使用MVC编写的 ,否则只需几个调用即可安装 框架。