I did an introductory WCF workshop the other week so I thought I’d post the basics here. This diagram shows the usage of WCF (excuse the crappy PowerPoint art) – brief explanations below:
This is your actual service, which is just made up of standard .Net code, usually an interface and the implementation. The interface has a couple of attributes on it to make itself known to WCF as a service, e.g.:
In VS2008, you can create this by adding a new ‘WCF Service Library’ project, which includes some example code.
The host is whatever runs the service, making it available on a particular address. In most cases this will be IIS, but it could be a Windows Service or even just a console/winforms app.
Either way, you’ll need some config to specify the Address, Binding and Contracts (known as the ABC), which in it’s most basic form will look something like this:
These are collectively known as an ‘endpoint’. If you created a WCF Service Library for your service, Visual Studio will actually have created this for you in an App.config file, which you can just copy into your host application.
Then to run the service, just stick this in your main():
Here’s where you actually call your service, again just a standard application of your choosing. The point at which it turns into a WCF client is when you select ‘Add Service Reference’ in Visual Studio, and give it the address of your running service. This does a load of magic, and the important things you and up with are:
- A config file with the relevant WCF endpoint in it
- A service proxy
The proxy is basically a local version of the service that you created. If you look at all the files in the service reference, you will see ‘reference.cs’, which contains your service methods. When we want to call the service from the client, we just make a call to this proxy, which goes away and handles all of the tricky networking stuff in the background so you don’t have to worry about it.
So, WCF’s pretty easy to use. The main issue you’ll face are probably with config, and firewalls (addresses not matching, remote machines not responding, and so on). Once you get into it, WCF’s a massive technology, but at a basic level it’s pretty straightforward.
Apologies if this was a little short, but I thought it was about time to feed the blog! Feel free to get in touch for more details.