Wednesday, April 28, 2010

Creating a WCF Web Service with VS2010 Express

Last night while I was reading up on OPC-XML the interwebs took me on a merry trail of SOAP, XML-RPC and the like that ended with WCF Web Services. I found a very good tutorial on WCF Services at http://www.xvpj.net/2008/03/08/wcf-step-by-step-tutorial/ but this was for Visual Studio 2005. I only have express versions of Visual Studio 2010 so there were some things that needed to be done differently. In the interests of posterity here is how I wrote a very simple WCF web service and a WPF client that accesses it using only Visual Web Developer 2010 Express and Visual C# 2010 Express.

Configure the Development Environment

  1. Install Microsoft Visual C# 2010 Express
  2. Install Microsoft Visual Web Developer 2010 Express installed (you can download all Express editions on one iso image at http://www.microsoft.com/express/Downloads/#2010-All)
  3. Enable Windows features:
    1. IIS Metabase and IIS 6 configuration compatibility
    2. IIS Management Console
    3. ASP.NET
        iis_features
  4. In IIS Manager, under Application Pools right click DefaultAppPool, select Basic Settings then change .NET framework version to v4.0.x
    iis_manager
  5. Install Windows SDK. This can be downloaded from http://www.microsoft.com/downloads/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&displaylang=en 

Create the Web Service

  1. First we will create the web service. To do this we need to run Visual Web Developer 2010 Express with administrator privileges so hit the start button type in “web dev” or similar and when Web Developer is highlighted press ctrl+shift+enter. This will start it as an administrator and show the UAC prompt. Alternatively locate Web Developer in the start menu then right click and select run as administrator.
  2. Select File –> New web site and choose WCF Service and name it MultiplyService
    new_web_site
  3. Add code App_Code / IService.cs  
    IService
  4. Add code to App_Code / Service.cs
    Service
  5. Run the service by pressing ctrl F5 and click the Service.svc link in the page that opens. Nothing much to see here yet, you need a client to view this data. As indicated on the page you need to run the svcutil.exe utility to generate code that will be used by the client application
    svcutil1

    The svcutil.exe utility is installed with the Windows SDK and can be found at c:\Program Files\Microsoft SDKs\Windows\v6.0a\bin

    To create the Service.cs file on the desktop try the following in a cmd prompt:
    svcutil2 
  6. That ends the WCF service. Leave all of this running, including the internet explorer window that Web Developer opened and open Visual C# Express to start on the client application.

 

Create the Client Application

  1. Start up Visual C# 2010 Express and select File –> New Project. Select WPF Application and name it MultiplyClient.
  2. Add a Service Reference
    service_ref

    In the Service Reference dialog paste in the address from the internet explorer window that web developer opened. Select the service and select OK
    Service_ref2
  3. Copy the Service.cs file on the desktop that was generated by svcutil into the root folder of the project
    add_cs
  4. Add two entry textboxes, a multiply button and a result textbox to the MainWindow.xaml
    mainwindow
  5. Add code to MainWindow.xaml.cs to call the service when the multiply button is clicked
    mainwindow2
  6. Modify the app.config file. Simply change the contract value from “ServiceReference1.IService” to “IService”
    appconfig
  7. Press ctrl+F5 to run the WPF application. Enter two values to multiply and hit the Multiply button, you should see the answer in the result textbox!
    clientapp

 

References

  1. The basic gist of WCF services:
    http://www.xvpj.net/2008/03/08/wcf-step-by-step-tutorial/
  2. Adding IIS features:
    http://www.howtogeek.com/howto/windows-vista/how-to-install-iis-on-windows-vista/
  3. Where to find the svcutil.exe utility:
    http://www.dotnetspider.com/forum/239950-Where-find-svcutil-exe.aspx

Friday, April 9, 2010

OpenVPN on Windows 7

OpenVPNI had some trouble getting OpenVPN to work on my Windows 7 laptop. After a lot of messing around it turns out to be a fairly simple operation, so to save others the messing around part here are the steps to follow.

  1. Download the latest OpenVPN windows installer from http://openvpn.net/index.php/open-source/downloads.html I used openvpn-2.1.1-install.exe
  2. Completely uninstall any previous versions of OpenVPN from your machine
  3. Install OpenVPN
  4. On the start menu right click “OpenVPN GUI” and click properties. On the Compatibility tab select “Change settings for all users” then tick the box “Run this program as an administrator”
  5. This step is not so obvious. Open the network and sharing centre and click on “Change adapter settings”. There should be a Local Area Connection with the type TAP-Win32 Adapter, right click on this and select properties. Tick the boxes next to “Internet Protocol Version 6 (TCP/IPv6)” and “Internet Protocol Version 4 (TCP/IPv4)”
  6. Copy your config and credentials files into the C:\Program Files\OpenVPN\config folder
  7. Now click OpenVPN-GUI in the start menu. You’ll have to enter your Administrator password to run it. When it’s running just right click on the OpenVPN icon in the system tray and select connect

And that’s it! I hope it works for you too, leave a comment to let me know…