代码之家  ›  专栏  ›  技术社区  ›  maxmoore14

如何将WSDL与ASP.NET Web API一起使用

  •  1
  • maxmoore14  · 技术社区  · 10 年前

    请让我知道我问题的前提是否合理。。。

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

    我想我的问题有两点:

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

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

    1 回复  |  直到 10 年前
        1
  •  0
  •   Raja Nadar    10 年前

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

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

    抽象出ASMX是可以的。

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

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

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

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

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

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