【发布时间】:2010-11-21 13:04:59
【问题描述】:
我们有一组实现 Web 服务操作的程序集。
为了构建客户端代理,我们首先在服务器上构建和部署 Web 服务(程序集和 ASMX 文件)。
然后我们使用 wsdl.exe 指向 ASMX 端点并为客户端代理生成类。
我发现可以使用 wsdl.exe 或 disco.exe 从 wsdl 文件(而不是 asmx 端点)创建代理。
是否有工具可以直接从服务器程序集生成 wsdl 文件或代理类,而无需使用 Web 服务器?
更新:
首先我想说,我感谢你们抽出宝贵的时间来做这件事。我还想说,我知道在不了解给定场景的所有细节的情况下提供建议是多么困难。也就是说,让我详细说明一下场景并解决你们提出的一些观点:
1) 这是一个相当大的项目,已经开发了几年。使用 ASMX Web 服务的决定是在 WCF 出现之前做出的。
2) 我已经考虑过编写我们自己的代理生成器,如果我们没有找到可以做到这一点的工具,这可能是一个选择。
3) 我们仍然想绑定到 WSDL 契约。我试图避免的是在构建过程中对 Web 服务器的依赖。
4) 我们已经在 TFS Build 中运行的自动构建中自动生成代理,这本身不是问题。正如我被告知的那样,这个问题必须将构建分为两部分:服务器和客户端。可能有其他方法可以避免使用一些花哨的 MSBUILD 任务进行拆分,但我对这件事的了解有限。
5) 如果客户端代码和服务器端代码在编译期间不匹配,我确实希望构建在 TFS 构建时停止。这应该在签入前在开发者的机器上解决。
6) 我们对服务器和客户端部分有严格的控制。这组 Web 服务用作 Click Once Windows 窗体应用程序的后端。一切都在 Intranet 上运行。每次合约更改时,都会与客户端应用程序的新版本同步完成。
7) WCF 在短期内不是这组 Web 服务的选项。一年多前,当我加入该项目时,我的任务是创建一组新的 Web 服务,以实现与其他内部系统的互操作性。这些 Web 服务是预先设计的,一旦高层管理人员允许我们使用 WCF,就可以轻松升级到 WCF。我将不得不查看 svcutil.exe,但如果它满足我们的需要,我将尝试说服高层管理人员采用 WCF。
【问题讨论】:
-
感谢您的更新,并随时将johnwsaundersiii.spaces.live.com/blog/… 传递给您的管理层。同时传递stackoverflow.com/users/76337/john-saunders,这样他们就知道我不是在编造这些东西。