Is there any documentation on TFS Web Services? - web-services

I am looking for any information on the Microsoft TFS Web Services. First I know accessing the Microsoft TFS Web Services directly is not supported and Microsoft provides no documentation for doing this. Therefore I am not expecting any Microsoft support or assistance here.
I know all about the .Net API available for TFS which only works on Microsoft Operating Systems. I have used these many times on Windows, however I need to do non-Windows work to access TFS, I cannot use .Net and I cannot use a Proxy (or "shim") to be installed on a Windows computer to provide Web Services for the .Net API.
I know Teamprise reversed engineered the web services and they successfully used this knowledge to make a very good cross platform Team Explorer and command line implementation in Java to access TFS. So good in fact they were purchased by Microsoft and the product rebranded and rereleased as Microsoft Visual Studio Team Explorer Everywhere.
I have also tested the .Net API against Mono on several non-windows platforms and they are not compatible. The initial NTLMv2 authentication is using calls not supported by Mono. They appear to be, understandably, making Win32 specific calls for NTLMv2 support.
Therefore before I go to the trouble of reverse engineering them for myself, and dealing with NTLMv2 to do it. I am hoping that there is some hidden or buried information on the web that someone may have documented some portion of the web services for TFS from 2005, 2008 and/or 2010.
Please no comments or posts about how this is not recommended or supported by Microsoft, that I should find a way to use the .Net API, or suggesting the Proxy/Shim is the best solution. I am fully aware of the Microsoft's official stance on this, and what the supported workarounds would be.

I'm not aware of any documentation for the TFS web services, but I can share some tips on calling them.
The NTLM authentication you mention is really a separate layer: you must authenticate to IIS before it lets you call TFS web services. I'm not aware of any Open Source software that will do NTLM auth for you, but TFS 2010 makes it easy to enable "Negotiate" authentication (SPNEGO on Wikipedia, Authentication by using Kerberos Ticket on MSDN). Negotiate supports both NTLM and Kerberos subsystems, and there may be some existing software you can use to drive it using the system's Kerberos libraries (I think curl does it). If you had to build it yourself, it would probably be easier to go the Negotiate-with-Kerberos route.
Once you're authenticated, you can start calling services. Start by pulling down the WSDL for each service (stick a "?wsdl" suffix on each endpoint URI). Hop over to where TFS is installed and explore the web application directory for endpoints. There are several versions of some endpoints for back compat with TFS 2005 and 2008, but usually new versions are not redundant (they add new stuff). You might have a favorite SOAP client library already (there are many for Java), but I can't really recommend any because we wrote our own at Teamprise.
Services like version control, build, and common structure are easy to discover via WSDL. Most the operations have obvious names, but the complex type fields are often super-abbreviated. The best way to figure which methods to call when is to watch the VS TFS client or TEE with Fiddler or Wireshark or some other HTTP inspection program. TFS VC does do things like file uploads/downloads outside the web services (watch a network trace to see the multi-part MIME upload process and be sure you're sending the right values if you implement this).
A note of caution on the work item tracking web service: this one is going to be extremely hard to master. The WIT design involves the client pre-querying the server for large amounts of schema-less metadata, which is saved on the client (but refreshed incrementally as more web service calls are made). This metadata drives all the client side behavior about work items (what fields are in a work item type, the type of a field, which values are allowed in fields, the rules that run when they change, etc.) and it will take a long time and serious study to build the client behavior to bring a work item to life. Once you have a work item, sending it to the server for update via web services is easy.
It's a lot of work, but it's possible to do incrementally, for example, if you only need some VC features. The TEE team is working on making access from other platforms easier. Please contact Martin Woodward (martin.woodward#microsoft.com) if you have any questions or suggestions in this area.

There is a Java version of the TFS SDK that will run on Linux, Mac, and Windows. It is the SDK that Teamprise uses.
http://blogs.msdn.com/b/bharry/archive/2011/05/16/announcing-a-java-sdk-for-tfs.aspx
Coding directly against the TFS webservices is not supported (even though people have done it). MSFT could break the interface without letting you know in a service pack or other hotfix. Sometimes there aren't other options, but if the Java SDK works for you, I'd try to use that first.

There is good documentation now: https://www.visualstudio.com/integrate/get-started/rest/basics

Related

how to use addin developed with microsoft.sharepoint.dll in other system

I've developed an outlook addin in vs2013. The development machine has sharepoint installed. My code has:
using Microsoft.SharePoint;
But when I run this code on a client machine it shows an error.
enter image description here.In some sites they suggest using Microsoft.SharePoint.Client.dll. Can anyone help?
This won't work as you expected. Microsoft.SharePoint.dll is a server side library which is part of Microsoft SharePoint and hence can neither be referenced nor used otherwise in a client-side environment such as an Outlook add-in.
What you are looking for is Client-Side Object Model, or CSOM for short. However, developing CSOM apps is a completely different story, needs slightly different knowledge and skills. The bad news is most of your SharePoint-related work will have to be redeveloped almost from scratch.
If your SharePoint integration isn't heavy, you might be able to achieve what you want with SharePoint's web services, either REST or SOAP. There an article on MSDN providing insight to various types of SharePoint APIs and providing guidance which API to use in what situation. You shoudl read this first.
we can't use using Microsoft.SharePoint; in sharepoint not installed system.
we need to use using Microsoft.SharePoint.client; for client system and use client object model code.

Supporting Web Services from a Win/MFC/C++ App

I am looking for the best way to add support for a REST based Web Service to an MFC C++ Application. This is legacy code that has been around a long time.
I need to have the Application provide the Web Service. I've researched this, and the articles are about consuming Web Services in a C++ App. I envision having to monitor a port and respond to the HTTP requests. It would probably make more sense to tie in with WCF and IIS, but I am not sure how to move forward.
I already have a tool of "making" this App into a Windows Service. I realize it would be better to have a "real" app, and this is what I have to work with. There is so much logic in this code and we are limited in development time, so we are taking the fastest approach possible. We also cannot use DCOM, as the Web Service will be called by a Linux based system.
Any suggested articles would be much appreciated.
For C++ you can test two libraries WSF/C and gSoap, another alternative is to develop it with C# and WCF , and communicate between C# and C++ using C++\CLI.
I use the Poco Net c++ library for this as it supports both HTTP client and server functionality. I considered various other libraries including Boost based stuff, but other than Poco I struggled to find everything I needed in one tidy package. It also has some easy to use mutex support which became essential for me as soon as I added a web server front-end to what had previously been a simple single threaded console app. Poco is cross platform but I mainly use it windows and it has served me well to date. I'm not very clued up on MFC so I don't know how it would get on in that department though.

esb solution, servicemix or wso2? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
We are trying to decide which ESB choose between ServiceMix or WSO2?
We are looking an esb to:
Support different protocols (REST, SOAP, JMS, HTTPS,..)
Generate statistics or some console to see "what's happening, how many request are arriving, how many of them are failing,..."
Develop proxy services
Support for JMS
An important point is the price, ServiceMix an WSO2 is free, but ServiceMix also has free support,... I don't know if WSO2 so.
We have been using WSO2 for projects and to be honest as Java developer I do not like WSO2.
- WSO2 documentation is very bad. Basically all their examples are copy paste from Apache synapse.
- The consulting architect sold us WSO2 by showing how easy it was to develop proxy services on the GUI, but if you try to go beyond the basic and look for samples that would tell you what a particular option does in GUI, then you will be sorry. If a company promotes the video that it also offers a GUI based solution because many Java developers do not like to work with XMLs then it should have samples and document showing how to do stuff using their GUI and not just copy pasting Xml solutions from Apache Synapse.
When I was using wso2 ESB 4.XX version(A newer version is out there), I discovered several bugs in the GUI. P.S. I hear that those bugs have been fixed in the latest version of WSO2 ESB.
I have since moved to using serviceMix and I could not be happier. Service mix is very intuitive and documentation is excellent. As far as the argument goes that WSO2 has eclipse plugin then so does ServiceMix(check out Fuse ESB IDE).
My manager was sold when he read on the WSO2 landing page that EBAY uses WSO2 so it must be very good. Now that was wrong approach. Ebay may have had a different problem than ours so as someone mentioned above put your problem ahead of the product that you intent to use.
Learning curve is very steep with WSO2 and good luck with finding solution on google.
In Servicemix you can use DSL / XML or pure java to do your thing.
Update: With the latest release of WSO2 ESB, WSO2 has created samples/examples which shows how to do things in GUI and via plain old XML.
I have been leaning strongly towards WSO2 and barring anything completely out of the blue that’s my current direction within Q1.
On-site/as-is:
Oracle Service Bus 11g
Oracle SOA Suite 10g and 11g (used as "service bus")
"Roadmaped" Addition Candidates:
WSO2 ESB (Apache Synapse+)
Apache ServiceMix
Strong challenger:
Fuse ESB (Apache ServiceMix+)
UltraESB
Out of contention:
Mule ESB
Tibco, WebMethods, anything else that’s big money
Defining ESB as stateless transformation, routing and mediation I’ve got the following systems either in play or in research (we’re pushing hard on rolling out OAGiS and your question is topical to me). In no order my experience and impressions of items from the above lists:
1) Oracle SOA Suite 10g and 11g (horribly used as a “poor-man’s” ESB)
My heartache here has been the Oracle SOA Suite. It's a product I really like, but my organization cannot -- will not -- purchase RAC. And SOA Suite does not "fly" without RAC. Also SOA Suite is architected to "do everything" including the non-stateful adapters I'd prefer to use Camel for (e.g., JMS-, File-, DB-adapters, etc.). So it's a blended stateful and non-stateful, instant and long-running, persistent and ephemeral, orchestration and choreography mess. It’s good for making piles of wrong long-lasting decisions faster.
2) OpenESB
My first “SOA” love… cut my teeth in retail on it. Then Oracle bought Sun. And that’s sort of the end of that.
3) Oracle Service Bus 11g (BEA AquaLogic Service Bus)
I'm actively looking to replace Oracle products; and though I like the OSB product -- very much in fact -- it's long in the tooth security-standards wise and it feels almost out of support now as Oracle figures out how to get it out of BEA (Eclipse) and move it into Oracle's infrastructure (read: JDeveloper). I've grown to appreciate JDeveloper btw, but that's another topic. The WS-* standards are aged. There’s no built-in pub/sub mechanism; but JMS is well supported. However if I wanted to managed JMS-as-MOM I could just do that and use Camel most successfully. All that said, the OSB is an extremely good product and we've got room for more than one ESB. We run multiple busses based on canonicals: OAGiS, NIEM, etc. I've got one cluster running with nearly forever uptime.
4) Fuse ESB
Looked into this and one of my largest integration partners uses it. Using a set of basic enterprise integration pattern to test, and for some reason this was not trivial to get going with Fuse. I’ve got a couple of developers who do not come from the Maven mentality and the IDE took the wheels off the wagons. This is the same for all of the ServiceMix console-driven ESB of course, so the differentiator comes from the IDE and the console. I also consider “pretty is a feature” and our developers and support staff use the consoles to help troubleshoot customer problems. Thus Fuse didn’t wow me, but it didn’t tick me off either.
5) Mule ESB
I remember Mule from the “good-old-days” (really before I started using Apache Camel) where I used it to move info from anyplace to anyplace. Very point-to-point, very old-school, but the gold-standard of effectiveness. But that was Mule without the “ESB”. The Mule EBS is lightweight (they say so) and I was told emphatically that Major League Baseball uses it so I must be sort of nuts to not purchase it immediately. The ability to use LDAP is an enterprise feature. I can almost even accept SAML2 or OpenID or OAuth as enterprise features, but LDAP? Trivial I know, but it telegraphed what I consider a lack of “developer heart”. I consider the community edition to be hobbled.
6) Apache ServiceMix
If I use servicemix I'd like to find one that added value to the consoles and reporting. But if I decide that’s not so important I might as well use ServiceMix itself if my intent is to create an extremely streamlined “programmer” experience. We’re pretty good at Ant, Maven, and Gradle. You might ask, if we’re going to jump the hoops why not jump the Fuse ESB hoops? No good answer for that except I expect Fuse to have already removed the hoops.
7) WSO2 ESB
We’ve used the G-Reg product for a little bit and my experience with it has been good. Their security standards are recent and very good; the interfaces are good and decent enough to give to an associate developer to help troubleshoot; as #ivo mentioned above the WSO2 staff use stackoverflow extensively. We have used their Stratos-live product in the “cloud” but could never quite get ourselves “there” (entirely our side of the equation security-wise and all). I have a soft rule here that any open-source software must be locally buildable by a developer of reasonable skill. That has never gone smoothly using WSO2 software. So that’s a risk. But if you’re happy running on the binaries as provided I think you could be successful with WSO2.
As #user9591 mentioned WSO2 is used by ebay and that’s either a thing for you or not. I think it has had a strong effect on “selling” it here.
8) Tibco, WebMethods, and any other non-opensource systems
Added this for completeness though I haven’t used Tibco in a few years. Not open-source, so there it is.
WSO2 ESB has supports all the things you need and is pretty easy user-friendly. There are a lot of useful blogs, online documentation and some webinars.
The wso2 esb free support is mainly here in stackoverflow, they have also payed support though for the price you'll have to contact them (I think prices vary depending on the type of support you need).
I haven't evaluated servicemix, but WSO2 ESB seems nice.
Depends a bit on what you need to do.
ServiceMix (Fuse ESB) is essentially an OSGi container/console around Apache Camel,Apache ActiveMQ and Apache CXF (+ a few other Apache integration projects like ODE). The bundled ActiveMQ gives a JMS platform out of the box, which is not the case with, for instance Mule ESB (although it is trivial to bundle Mule with ActiveMQ).
ServiceMix major components, Camel and ActiveMQ, has really strong community support through mail-lists and bug trackers.
Mule is indeed very powerful with it's Studio and data mapper, although the Community Edition that is free feels rather limited compared to the EE version, specially when it comes to supervisioning/monitoring which you request.
I don't know about WSO2, but there is very limited, if any, out-of-the support to actually follow the messages flowing through the ESB in both service mix and Mule ESB CE. It is not very hard to implement some statistics via logging, but it's a manual thing to do.
I would suggest this link as a beginner's reference page.
http://www.javacodegeeks.com/2012/03/integration-framework-comparison-spring.html
I have not used wso2 but can definitely speak about fuse. I have been using different integration capabilities of fuse. Foremost thing is, it is osgi based, it is definitely a thing to consider if you are architecting a new solution. I find fuse community very active. Best thing about fuse is it is provides integration capabilities for aws, hdfs and hbase besides jms, rest, http(s) proxy end points, load balancers etc
Fuse does provide an ide.
And about logging, you can definitely log every message that reaches the esb.
Finally, i would say the good ol words, dont consider the capabilities of the esb first, instead keep your problem in the front and see which of them solves it better for you.
WSO2 also offers free support through its community. WSO2 ESB has the support for different transport and also able to generate statistics (mediation, service etc.) . Just have a look at the product page. You can integrate ESB with WSO2 BAM 2.0 which gives you analytics and monitoring. Further it provides a complete platform which can be connected easily.
WSO2 ESB has extensive support for statistics. As I see, it has support for all the things user asked for, and more. There, while you can get detailed analytic and stats by integrating BAM, WSO2 ESB itself provide stats to suite the user. See the sections in WSO2 ESB documentation titled Monitoring WSO2 Enterprise Service Bus, and Statistics.
Yes, WSO2 ESB supports REST, SOAP, JMS, HTTPS among other supported Transports. Supported protocols and transports are available in the WSO2 ESB product home page.
WSO2 provides UI support to develop proxy services which makes developing proxy services little more easier.
I'm not familiar with ServiceMix, but I think you can get some applicable facts from other answers.
I was evaluating various ESB part of my current job and I have done bit of research on WSO2 and Apache synapse till date
WSO2 is created based on Apache synapse and it has excellent admin console. I would say It could be their selling point. when it comes support, the only viable solution is you have to pay for your support. even though there is community support through stackoverflow exist, but there is no response for my queries.
regarding Synapse, I would say it is not active. there is only 6 version released over the period of 6 years and last release was done around 18months ago. I am still evaluating JBoss Fuse, ServiceMix and Mule

swig, soap or restful for my c/c++ library

I have a library/API that is completely built with C/C++ for over 10 years (under Linux). Now I want to export the API as a web service for other web projects use. I search for the web and narrow down to the following 3 chooses:
use SWIG to export the API to PHP or other script/web base language
use gSOAP to export the API as SOAP protocol
export the API as RESTful service (I can't find any exist framework, any suggestions?)
I want to compare them in terms of
stability
easy of use
performance
SWIG seems easy to use buy I am not sure the stability of it.
gSOAP seems very stable but a bit difficult to use and setup.
Any suggestion?
I personally used WSO2-WSF-CPP which is a C++ layer on top of AXIS2/2 to export legacy C++ code as web-service.
I tried back then gSOAP which worked quite well, but for stability and deployment reasons I choose WSO2, since AXIS2/C can be deployed easily as a module of the well know Apache2 HTTP server.
For the ease of use requirement I don't know if you plan to take WSDL file as a template to generate source code skeleton, but you can forget about this feature of the WSO2 package ... It seems to have been deprecated for a long time and the generated code is way too ugly to be maintained by hand.
Although doing a code generator yourself could be a good idea depending on the complexity and the amount of services you have. I recommend it! I did that and creating/building/generating services is quite straightforward now.
Another thing to notice about the WSO2 web services is that it's simple to build out of the box, and comes with stand-alone server to develop and test with. It was quite helpful (even if I am quite sure any decent web-service platform provides this kind of stuff like gSOAP does).

How to connect a C++ program to a WCF Service?

In the place I work there are some software written in C# and some written in C++ (the most important ones). Some time ago we decided it would be a good idea to track any possible problem in the software, by sending stack trace and exception information over a web service. So I came with a WCF Service, that gets the information and store them on a database and send an automatic e-mail. It worked, we had to secure it through password, it's done, but now I want our other software, the one written in C++, to use this webservice (this software is used both on windows and linux, so we can't just make a call to another software in the user machine).
I've googled about it, and found this tutorial on how to use gSOAP, which so far didn't help me very much (lots of errors, it is not very detailed, and the web.config file is impossible to read). I was wondering if is there any other way to achieve this. In adition, since I'm using authentication on my webservice, it now has a wsHttpBinding (which AFAIK isn't supported by gSOAP).
Can you guys help me out?
Since your WCF service is in C# with .NET, and the only issue is getting the C++ application to be able to talk to it, one way is to follow the advice in REST / SOAP Endpoints for a WCF service and related articles.
Your C# programs continue to have the full SOAP access to your service.
Your C++ programs could do something like this for REST access:
"Browse" to the HTTP GET URL for the service command you wanted.
Then toss (or parse and use) whatever response came back.
It is a pretty minimal change to your WCF service to offer both SOAP and REST.
The REST ability opens your service to JavaScript as well as C++ clients.
You may need to restrict the interface to simple data, or class objects that are easy to parse in C++.
Will the machines running the C++ applications have the .NET Framework installed?
Check out: Create WCF service for unmanaged C++ clients