I was wondering, the other day, what options there have been for developing web services on Windows. I did a little research into the question, and here is what I came up with. But first, thank you, darnold924 of msdn for helping.
When asking what are the options for web service development on Windows, we first must understand what a web service is. A web service is basically any application that operates primarily by commands received over a network. Although, some use the term to refer specifically to a service that is operated over the Internet. So, basically any network communication mechanism in Windows is an option for development of a web service.
There are four major network communication platforms in Windows, today (June 2012), that allow you to make an HTTP web service. They are
WCF is considered the current technology, and the others are legacy – in the .NET world, at least. I’m not sure if HTTP.sys is considered legacy technology; for example, what if you want to create a native web service?
Also, we must remember that there are cross-platform options, for example, the networking platforms of Java. I imagine there are also third-party options, but I haven’t seen any and haven’t looked into it.
Windows Sockets API. This is the earliest networking stack in Windows that I have learned of. It’s a general networking library, very low-level, providing little or no “web server” functionality. Winsock is a user-mode component.
So with Winsock, you could setup a simple C++ application that listens for commands on a network socket.
Hypertext Transfer Protocol stack. This is the first Windows stack offering “web server/services” functionality – i.e., more, deeper, built-in support for HTTP-based applications. It runs in a kernel-mode device driver.
So HTTP.sys is similar to Winsock except that you now get support for things like HTTP requests, responses, messages, etc.
.NET’s original web application development platform – ASP.NET. Technically, it’s not a network communication platform, but it does have a component designed for building HTTP web services. ASP.NET is largely about abstracting the statelessness of HTTP, so you program more like you’re writing a standalone application. It is also IIS-based, which the previous web service facilities are not.
So with ASP.NET, you get the support of a full-blown web server.
Windows Communication Foundation. This is .NET’s general network communication platform, introduced in .NET 3.0. It supports development of both IIS-based and non-IIS-based web services.
I think the main advantage of WCF, here, is that you get a uniform development experience for many kinds of web services, including HTTP-based and other protocols. Also, you get the power of .NET, but you don’t have to run in IIS if your application doesn’t call for that.
More on WCF
There are two major options for WCF HTTP web services, SOAP-based and REST-based. Also, WCF can have WCF Web, MSMQ, Named Pipe and TCP services.
Can you have a web service built directly on top of IIS, bypassing the .NET Framework? Would there be any advantage there?
Is there a native technology (not .NET-based) that is considered current and not legacy?
How important are the cross-platform options?
Are there any third-party options that are big players?