是否有关于TFS Web服务的文档?

Rod*_*ley 16 tfs web-services

我正在寻找有关Microsoft TFS Web服务的任何信息.首先,我知道不支持直接访问Microsoft TFS Web服务,Microsoft没有提供执行此操作的文档.因此,我不期待任何Microsoft支持或帮助.

我知道可用于TFS的.Net API,它只适用于Microsoft操作系统.我在Windows上使用了很多次,但是我需要非Windows工作来访问TFS,我不能使用.Net而且我不能使用代理(或"shim")安装在Windows计算机上来提供Web服务用于.Net API.

我知道Teamprise逆向设计了Web服务,他们成功地利用这些知识在Java中创建了一个非常好的跨平台Team Explorer和命令行实现来访问TFS.事实上,它们很好地被微软收购,产品重新命名并重新发布为Microsoft Visual Studio Team Explorer Everywhere.

我还在几个非Windows平台上针对Mono测试了.Net API,但它们不兼容.初始NTLMv2身份验证使用Mono不支持的调用.他们似乎可以理解为Win32特定调用NTLMv2支持.

因此,在我为自己进行逆向工程的麻烦之前,以及处理NTLMv2来做到这一点.我希望网上有一些隐藏或隐藏的信息,有人可能已经记录了2005年,2008年和/或2010年TFS的部分网络服务.

请不要评论或发布有关Microsoft不推荐或支持的方法,我应该找到一种方法来使用.Net API,或者建议Proxy/Shim是最好的解决方案.我完全了解微软对此的官方立场,以及支持的解决方案.

Sha*_*ger 17

我不知道TFS Web服务的任何文档,但我可以分享一些关于调用它们的技巧.

您提到的NTLM身份验证实际上是一个单独的层:您必须先通过身份验证才能调用TFS Web服务.我不知道任何可以为你做NTLM认证的开源软件,但是TFS 2010可以很容易地启用"协商"认证(维基百科上的SPNEGO,在MSDN上使用Kerberos Ticket进行身份验证).Negotiate支持NTLM和Kerberos子系统,并且可能有一些现有的软件可以使用系统的Kerberos库来驱动它(我认为curl会这样做).如果你必须自己构建它,那么使用Negotiate-with-Kerberos路由可能会更容易.

经过身份验证后,您就可以开始呼叫服务了.首先拉下每个服务的WSDL(在每个端点URI上粘贴一个"?wsdl"后缀).跳到安装TFS的位置,浏览端点的Web应用程序目录.有一些端点用于TFS 2005和2008的后端compat,但通常新版本不是多余的(它们添加了新的东西).你可能已经有了一个最喜欢的SOAP客户端库(有很多用于Java),但我不能真正推荐任何因为我们在Teamprise编写自己的库.

通过WSDL可以轻松发现版本控制,构建和公共结构等服务.大多数操作都有明显的名称,但复杂的类型字段通常是超缩略的.确定调用哪些方法的最佳方法是使用Fiddler或Wireshark或其他HTTP检查程序观察VS TFS客户端或TEE.TFS VC会执行Web服务之外的文件上载/下载等操作(观看网络跟踪以查看多部分MIME上载过程,并确保在执行此操作时发送正确的值).

关于工作项跟踪Web服务的注意事项:这个将非常难以掌握.WIT设计涉及客户端预先查询服务器以获取大量无模式元数据,该元数据保存在客户端上(但随着更多Web服务调用而逐步刷新).此元数据驱动有关工作项的所有客户端行为(工作项类型中的字段,字段的类型,字段中允许的值,更改时运行的规则等),它将采用长时间和认真的学习,以建立客户行为,使工作项目生活.获得工作项后,将其发送到服务器以通过Web服务进行更新很容易.

这是很多工作,但是可以逐步进行,例如,如果你只需要一些VC功能.TEE团队正在努力使其他平台的访问更加容易.如果您对此领域有任何问题或建议,请联系Martin Woodward(martin.woodward@microsoft.com).