Ответ 1
Я не знаю никакой документации для веб-служб TFS, но я могу поделиться некоторыми советами по их вызову.
NTLM-аутентификация, о которой вы упоминаете, действительно представляет собой отдельный уровень: вы должны пройти аутентификацию в IIS, прежде чем он позвонит вам через веб-службы TFS. Я не знаю ни одного программного обеспечения с открытым исходным кодом, которое будет работать с NTLM для вас, но TFS 2010 позволяет легко включить аутентификацию "Negotiate" (SPNEGO в Википедии, Аутентификация с использованием билета Kerberos на MSDN). Negotiate поддерживает как подсистемы NTLM, так и Kerberos, и может существовать какое-то существующее программное обеспечение, которое вы можете использовать для его использования с использованием системных библиотек Kerberos (я думаю, что это завиток). Если вам нужно было построить его самостоятельно, вероятно, было бы легче пройти маршрут переговоров с Kerberos.
После аутентификации вы можете начать звонить в службы. Начните с вытягивания WSDL для каждой службы (привяжите суффикс "? Wsdl" на каждом URI конечной точки). Перейдите к месту установки TFS и изучите каталог веб-приложений для конечных точек. Существует несколько версий некоторых конечных точек для обратной совместимости с TFS 2005 и 2008, но обычно новые версии не являются избыточными (они добавляют новые материалы). Возможно, у вас уже есть любимая клиентская библиотека SOAP (их много для Java), но я не могу по-настоящему рекомендовать их, потому что мы написали их в Teamprise.
Сервисы, такие как управление версиями, сборка и общая структура, легко обнаружить через WSDL. Большинство операций имеют очевидные имена, но поля сложного типа часто являются супер-сокращенными. Лучший способ определить, какие методы вызывать, когда нужно смотреть клиент VS TFS или TEE с помощью Fiddler или Wireshark или какой-либо другой программы проверки HTTP. TFS VC делает такие вещи, как загрузка файлов/загрузка за пределы веб-служб (следите за сетевой трассировкой, чтобы увидеть многопользовательский процесс загрузки MIME и убедитесь, что вы отправляете правильные значения, если вы это реализуете).
Обратите внимание на веб-службу отслеживания рабочих элементов: этот процесс будет чрезвычайно трудным. Проект WIT предполагает, что клиент предварительно запрашивает сервер для больших объемов метаданных без схемы, которые сохраняются на клиенте (но обновляется постепенно, по мере того, как делается больше вызовов веб-служб). Эти метаданные управляют всем поведением на стороне клиента по рабочим элементам (какие поля находятся в типе рабочего элемента, типе поля, какие значения разрешены в полях, правила, которые выполняются при их изменении, и т.д.), И это потребует долгое время и серьезное исследование, чтобы построить поведение клиента, чтобы оживить работу. Когда у вас есть рабочий элемент, отправка его на сервер для обновления через веб-службы легко.
Это много работы, но возможно сделать это постепенно, например, если вам нужны только некоторые функции VC. Команда TEE работает над облегчением доступа с других платформ. Пожалуйста, свяжитесь с Мартином Вудвордом ([email protected]), если у вас есть какие-либо вопросы или предложения в этой области.