【问题标题】:How to use a WSDL with ASP.NET Web API如何将 WSDL 与 ASP.NET Web API 一起使用
【发布时间】:2014-07-28 23:04:45
【问题描述】:

如果我的问题的前提是有道理的,请告诉我......

我有一个来自现有(本地服务)Web 服务的 WSDL 文件。我想用一个 Web API 来“包装”那个 Web 服务,这样我就可以轻松地对其进行 RESTful AJAX 调用。如果我将 WSDL 添加为服务引用,我可以编写控制器并进行调用。

我想我的问题有两个:

  1. 是否有一些简单的方法可以公开所有 WSDL 操作,而无需为每个操作手动编写控制器?

  2. 这在概念上是个好主意吗?有没有更好的方法来创建我没有想到的良好的客户端 AJAX 关系?

【问题讨论】:

    标签: asp.net ajax web-services wsdl


    【解决方案1】:

    是的,这在概念上是个好主意。为客户端抽象 ASMX 并提供一个简单的基于 REST 的端点是很好的。

    我假设 ASMX 本身是一个单独的组件,并且不与您的 Web API 项目共享任何中间层代码。

    抽象出 ASMX 是可以的。

    至于将所有 WSDL 操作公开为控制器操作的简单方法,我们讨论了多少 Web 方法?

    通常我们只有一个带有几个 Web 方法的 ASMX Web 服务。 (5-15) 如果你只有几个,创建一个包含 10-15 个动作的控制器应该不会那么痛苦。

    另一方面,如果您的 Web 方法数量难以管理,您可能需要考虑使用文本模板文件 (.tt) 从“Reference.cs”文件中生成控制器。 (代理文件)我认为没有将 asmx 转换为 Web api 控制器的自动工具。

    由于请求/响应类型、返回类型、[FromBody] [FromUri] 属性、HttpPost、HttpGet 属性以及操作的细节,我发现手写 Web api 控制器更容易定义本身。

    文本模板逻辑在尝试找出 HttpPost 操作与 HttpGet 等时可能会出错。

    此外,一个好的控制器最终会为数据访问、缓存等注入依赖项,并且您希望直接控制类,而不是由自动工具创建。

    【讨论】:

    • 感谢您快速彻底的回复。
    猜你喜欢
    • 2012-12-10
    • 2016-01-09
    • 2014-10-29
    • 2015-10-10
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    相关资源
    最近更新 更多