Programmatisch auf Team Foundation Server 2010 zugreifen? TFS Managed Object Model? TFS SDK for Java? OData?

In vielen Fällen möchte man auf die TFS Services, wie Version Control. Workitems, Builds  programmatisch zugreifen, um z.B. ein anderes Werkzeug zu integrieren oder ein anderen Client zu entwickeln. In diesem Beitrag möchte ich kurz die Möglichkeiten aufführen und in diesem Kontext auch den OData Service für TFS 2010 Beta vorstellen als auch Tipps geben, wie man diesen lokal auf seinem Client einfach Testen kann. Und mit TFS on the Road gibt es jetzt schon die erste Windows Phone 7 App für den TFS, die auf OData basiert.

Grundsätzlich besteht der TFS aus einer Application Tier und einer Data Tier, wobei die Application Tier die Services als SOAP Webservices zur Verfügung stellt. Welche Optionen habe ich nun diese Webservices zu konsumieren?

1) Plattformen , für die das .NET Framework verfügbar ist, empfiehlt sich der Zugriff über das Managed TFS Object Model. Ein Einführung finden Sie hier.

2) Plattformen , für welche die Java Runtime verfügbar ist, kann der Zugriff mit dem Team Foundation Server SDK for Java durchgeführt werden.

3) Webservices direkt konsumieren ist Supportet, wobei keine aktuelle MSDN Dokumentation existiert. Empfohlen und viel einfacher zu nutzen sind die anderen Ansätze.

4) NEU ist der OData Service für TFS 2010 Beta für alle Devices und Plattformen für die 1) oder 2) keine Option sind. Wobei die Beta nicht den gleichen Funktionsumfang wie 1) bzw. 2) unterstützt.

OData = Open Data Protocol ist ein offener Standard, der den HTTP Stack voraussetzt und so keine Voraussetzungen für Runtimes usw. mit bringt. Auf diese Weise  können auch Devices, die 1) oder 2) nicht unterstützen auf die TFS Services zugreifen. Der OData Service für TFS 2010 Beta implementiert OData und nutzt das TFS Object Model, um mit den TFS Services zu interagieren. Ist also ein zusätzlicher Service. Der Code steht hier zum Download bereit. In der Solution ist der Service als Azure Projekt implementiert und könnte so mit geringem Aufwand direkt publiziert werden. Ein bereits vorhandener TFS könnte dann auch via OData genutzt werden. Die Dokumentation erklärt die dazu notwendigen Anpassungen. Zudem gibt es ein Video von Brian Keller, dass einen guten Überblick liefert.

Hier noch Tipps, wie man als Entwickler den OData Service for TFS 2010 auch auf seinem lokalen Win7 testen kann. Ich habe auf meinem Win7 Client den TFS in der Basic Konfiguration lokal laufen. Dann die Solution etwas simplifiziert, da ich den Service auf dem lokalen IIS hosten möchte:

image

Hierzu habe ich die Projekt Eigenschaften von ODataTFS.Web geändert, so dass der lokale IIS verwendet  wird:

image

Die WebConfig angepasst:
1)  Sektion <system.diagnostics> auskommentiert, da ich in dieser Konstellation kein Azure Tracing benötige. 

2) In Sektion <system.web>   hinzugefügt :
<anonymousIdentification enabled="false"/>
<authentication mode="Windows" />

3) In Sektion <appSettings> auf meinen lokalen TFS Server angepasst:
<add key="ODataTFS.TfsServer" value=https://DeinTFS:8080/tfs />

4) In Section <system.webServer> folgende Sektionen auskommentiert, da ich ohne SSL lokal Testen möchte: 

<staticContent> <handlers>

Hinweis: Nur für Testsysteme mit Test Accounts. Ansonsten ist HTTPS sprich SSL aus Sicherheitsgründen erforderlich!

Nun kann der Service direkt im Browser getestet werden:

image

Da das Managed TFS Object Model auf dem Windows Phone 7 nicht zur Verfügung steht, bietet sich OData als Beispiel an, um auf den TFS vom Phone aus zuzugreifen. Der Code ist im Download mit enthalten und kann direkt im Emulator gestartet werden:

image

Und wie schon am Anfang angekündigt, hat Pedro Castelo direkt mal eine cool App für das Windows Phone 7 “TFS on the Road” basierend auf OData for TFS geschrieben, die kostenfrei im Marketplace hier zur Verfügung steht. Der Souce Code ist ebenfalls auf Codeplex frei verfügbar.  Codeplex selbst hat den OData Service schon implementiert, so dass man auf alle Projekte, für die man Zugriff hat mit TFS on the Road via Phone zugreifen kann. Details zur App gibt’s hier.

051411_1824_tfsontheroa52051411_1824_tfsontheroa192051411_1824_tfsontheroa142

Die Navigation Map von TFS on the Road:

051411_1824_tfsontheroa113

Viel Spass