Есть ли документация по веб-сервисам TFS? - PullRequest
16 голосов
/ 08 марта 2011

Я ищу любую информацию о веб-службах Microsoft TFS. Во-первых, я знаю, что прямой доступ к веб-службам Microsoft TFS не поддерживается, и Microsoft не предоставляет никакой документации для этого. Поэтому я не ожидаю никакой поддержки или помощи Microsoft здесь.

Я знаю все о .Net API, доступном для TFS, который работает только в операционных системах Microsoft. Я использовал это много раз в Windows, однако мне нужно выполнить работу не из Windows для доступа к TFS, я не могу использовать .Net и не могу использовать прокси (или «шим») для установки на компьютер Windows для предоставления веб-служб для .Net API.

Я знаю, что Teamprise реверсивно разработал веб-сервисы, и они успешно использовали эти знания для создания очень хорошей кроссплатформенной Team Explorer и реализации командной строки в Java для доступа к TFS. Настолько хороши, что они были куплены Microsoft, а продукт был переименован и выпущен как Microsoft Visual Studio Team Explorer везде.

Я также протестировал .Net API против Mono на нескольких платформах, отличных от Windows, и они не совместимы. Первоначальная аутентификация NTLMv2 использует вызовы, не поддерживаемые Mono. Понятно, что они делают специфичные для Win32 вызовы для поддержки NTLMv2.

Поэтому, прежде чем я займусь реверс-инжинирингом для себя, и сделаю это с NTLMv2. Я надеюсь, что в сети есть какая-то скрытая или скрытая информация о том, что кто-то, возможно, задокументировал некоторую часть веб-сервисов для TFS с 2005, 2008 и / или 2010 года.

Пожалуйста, не комментируйте и не публикуйте сообщения о том, что это не рекомендуется и не поддерживается Microsoft, что я должен найти способ использовать .Net API или предложить Proxy / Shim - лучшее решение. Я полностью осведомлен об официальной позиции Microsoft по этому вопросу и о том, какими будут поддерживаемые обходные пути.

Ответы [ 3 ]

17 голосов
/ 08 марта 2011

Мне неизвестна какая-либо документация для веб-сервисов TFS, но я могу поделиться некоторыми советами по их вызову.

Упомянутая вами аутентификация NTLM на самом деле является отдельным уровнем: вы должны аутентифицироваться в IIS, прежде чем он сможет вызывать веб-сервисы TFS. Мне неизвестно о каком-либо программном обеспечении с открытым исходным кодом, которое выполнит для вас NTLM-аутентификацию, но TFS 2010 упрощает включение проверки подлинности с помощью переговоров ( SPNEGO в Википедии * , Проверка подлинности с использованием Kerberos Ticket on MSDN ). Negotiate поддерживает как подсистемы NTLM, так и Kerberos, и может существовать некоторое существующее программное обеспечение, которое вы можете использовать для управления им с помощью системных библиотек Kerberos (я думаю, что это делает curl). Если бы вам пришлось создать его самостоятельно, вероятно, было бы проще пойти по пути переговоров с Kerberos.

Как только вы авторизуетесь, вы можете начать звонить в службы. Начните с вытягивания WSDL для каждой службы (добавьте суффикс "? Wsdl" на каждый URI конечной точки). Перейдите к месту установки TFS и изучите каталог веб-приложений для определения конечных точек. Существует несколько версий некоторых конечных точек для обратного сравнения с TFS 2005 и 2008, но обычно новые версии не являются избыточными (они добавляют новые вещи). Возможно, у вас уже есть любимая клиентская библиотека SOAP (их много для Java), но я не могу порекомендовать ее, потому что мы написали свою собственную на Teamprise.

Такие сервисы, как контроль версий, сборка и общая структура, легко обнаружить с помощью WSDL. Большинство операций имеют очевидные имена, но поля сложного типа часто сокращаются. Лучший способ выяснить, какие методы и когда вызывать, - это наблюдать за клиентом VS TFS или TEE с помощью Fiddler, Wireshark или какой-либо другой программы проверки HTTP. TFS VC делает такие вещи, как выгрузка / выгрузка файлов вне веб-сервисов (следите за трассировкой сети, чтобы увидеть процесс загрузки MIME из нескольких частей, и будьте уверены, вы отправляете правильные значения, если реализуете это).

Предупреждение о веб-службе отслеживания рабочих элементов: освоить ее будет крайне сложно. Проект WIT предполагает, что клиент предварительно запрашивает у сервера большие объемы метаданных без схемы, которые сохраняются на клиенте (но обновляются постепенно по мере выполнения большего количества вызовов веб-служб). Эти метаданные управляют всем поведением клиентской стороны в отношении рабочих элементов (какие поля относятся к типу рабочего элемента, типу поля, какие значения разрешены в полях, правилам, которые запускаются при их изменении и т. Д.), И потребуется долгое время и серьезное исследование, чтобы построить поведение клиента, чтобы воплотить в жизнь работу. Если у вас есть рабочий элемент, его легко отправить на сервер через веб-службы.

Это большая работа, но ее можно выполнять постепенно, например, если вам нужны только некоторые функции VC. Команда TEE работает над упрощением доступа с других платформ. Пожалуйста, свяжитесь с Мартином Вудвордом (martin.woodward@microsoft.com), если у вас есть какие-либо вопросы или предложения в этой области.

3 голосов
/ 09 августа 2011

Существует Java-версия TFS SDK, которая будет работать в Linux, Mac и Windows. Это SDK, который использует Teamprise.

http://blogs.msdn.com/b/bharry/archive/2011/05/16/announcing-a-java-sdk-for-tfs.aspx

Кодирование непосредственно на веб-сервисах TFS не поддерживается (даже если люди это сделали). MSFT может сломать интерфейс, не сообщая об этом в пакете обновления или других исправлений. Иногда нет других вариантов, но если Java SDK работает для вас, я бы попробовал использовать это в первую очередь.

0 голосов
/ 15 апреля 2016

Сейчас есть хорошая документация: https://www.visualstudio.com/integrate/get-started/rest/basics

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...