【发布时间】:2011-12-07 21:49:24
【问题描述】:
我正在尝试用 C# 编写一个简单的 ASMX Web 服务。在我的一生中,我无法理解或找出如何接受比原语更复杂的参数。
是否可以这样做:
[WebMethod]
public string MyMethod(SomeStruct parameter)
{
}
【问题讨论】:
-
关于使用 ASMX 的复杂类型的文章。 encosia.com/…。我建议改用 WCF 并使用 SVC
-
@JohnSaunders:取决于您使用 ASMX 的目的。对于仅从 JavaScript 调用的简单端点,WCF 与 ASMX(或什至 HttpHandler,就此而言)相比是狗。在配置麻烦和 DataContractJsonSerializer 的缺点之间,当 ASMX 已经做了他们需要的事情时,推动人们“升级”到 WCF 是没有帮助的。尤其是即将到来的 Web API。
-
@JohnSaunders:我经常在需要额外灵活性的情况下使用 WCF(但 ASMX 与 WCF 与 OP 的问题毫无关系)。 WCF 在 4.0 中绝对仍然是 Web 工作的狗,这就是为什么它继续看到如此低的采用率并且 Web API 是必要的。
-
@JohnSaunders:多年来也没有针对 HttpHandlers 的任何错误修正......因为它们都没有需要 修正它们的优点。基于 MSDN 文档做出假设是相当遥远的事情。特别是考虑到 Add New Item > Web Service 仍然存在,并且不仅在 VS2010 而且在新的 VS11 开发者预览版中都指向 ASMX 模板。无论如何,这很快就会成为一个没有实际意义的问题,因为 Web API 比 ASMX 和 WCF 的当前状态都好得多。
-
@JohnSaunders:这就是为什么我特别开始说这取决于他是否将它用于客户端回调或 WCF 确实有意义的其他东西。我从未声称 Web API 是 ASMX,但它也与当前的 WCF 方法背道而驰。现在从 ASMX 迁移到 WCF 而不是明年直接迁移到 Web API 将是毫无意义的练习。如果您专注于“连接系统”,其中 WCF 实际上是对 ASMX 的重大改进,您可能没有意识到 WCF 目前在客户端工作方面是一个倒退。这不仅仅是“ASMX 没有损坏”的问题。
标签: c# asp.net web-services