我想从jQuery到我的服务器进行ajax调用。基本上,我希望将请求作为POST发送,其内容类型为x-www-form-urlencoded和相应的参数(parameter1 = X& paramter2 = Y& parameter3 = Z)。我希望响应是JSON。
服务器环境是.NET。我一直在试验下面的三种方法,但却无法让一种方法正常工作。
ASPX - 使用aspx处理并返回JSON,我可以让它工作,但我需要自己序列化JSON。这是可能的,但我希望有更方便的东西。另外,如果我错了,请纠正我,但我认为aspx页面有很多额外的开销,因为他们不仅要执行一个方法并返回简单的JSON。
ASMX和WCF - 使用asmx和WCF,我可以让它返回JSON,但前提是我在请求中发送JSON。
用于此请求/响应类型的最佳服务器端“框架”是什么? .aspx,.asmx或WCF?既然我已经能够至少让aspx为此工作,那么这是一种合适的方法吗?
我已经看到其他产品通过Web服务公开API并使用带有JSON响应类型的名称/值查询字符串请求格式,但这似乎是在.NET中完成的难题。
答案 0 :(得分:1)
ASPX页面带来额外开销是对的。即使您根本不使用WebForms框架,对ASPX页面的请求仍然必须在整个页面生命周期中进行过滤。
如果您更喜欢那种低级方法,读取QueryString参数并使用手动序列化JSON进行响应,ASHX HttpHandler可能是最佳解决方案。
就个人而言,我更喜欢ASMX服务。发送JSON参数并不是很困难(并且一旦你开始发送嵌套对象或集合,你可能最终会这样做,这通过简单的键/值对很复杂),并且很好地避免不必要的仪式在每个请求期间反序列化和序列化。
人们会告诉你WCF是正确的解决方案,因为它更新,但是当你使用jQuery时,.NET 4的WCF目前还不是很适合。在处理DateTime和Enum类型时,它并不灵活,并且它具有难以理解的字典序列化。 WCF的新WCF Web Api解决了这些问题,但是如果你想在曲线前稍微尝试一下。
答案 1 :(得分:1)
我用过。
答案 2 :(得分:0)
如果您可以沿着WCF路线行进,我建议您查看Microsoft的WCF WebAPI项目。该项目位于WCF之上,在客户端访问(.NET代码或jQuery Ajax)方面提供了一些细节和简化。 Here是使用jQuery POST表单urlencoded数据的演练。还有其他演练也展示了其他相关任务。
这些服务可以像任何其他WCF服务一样托管,甚至可以在与您网站其余部分相同的ASP.NET项目中托管。
目前,该项目处于早期开发状态并且有一些“上线”限制,但根据您的项目需求,这可能会很好,这对我们来说很有用。