The current project I am assigned to at work is Smart Client application running own Windows CE that communicates with WCF Services that it uses to communicate with SAP via BizTalk Services. We choose to use WCF because of the power that we felt it would bring to the solution. What we didn’t realize was the limited support in Visual Studio for consuming WCF Services for a Smart Client application.
In a WinForms application you have two choices to add an Application Reference to your project you can use the SvcUtil.exe or you can right click on the References node of the solution and select Add Application Reference. In the Smart Client world you don’t have either option, you can try to use the SvcUtil.exe but it will not create a proxy that can compile against NetCF libraries because NetCF does not include all the classes referenced from that source code.
Fortunately we found the Power Toys for .NET Compact Framework 3.5 which contains NetCFSvcUtil.exe that could be used to generate NetCF complaint service proxies. Once install the power toys you will find the NetCFSvcUtil.exe in the C:\Program Files (x86)\Microsoft.NET\SDK\CompactFramework\v3.5\bin directory.
We setup a batch file to generate the service files for us. So, all we had to do was make sure we check out the files and then run the command file to update the proxies and check the files back in and we are good.
You should be aware that NetCF does not support all WCF Bindings, it supports: BasicHttpBinding, CustomBinding, WindowsMobileMailBinding, and ExchangeWebServiceMailBinding. Andrew Arnott has a post about The WCF subset supported by NetCF and other good information.
A good friend and member of our team Devlin Liles, has put together a great post, Batch File and Command File running in Visual Studio, to show how you can execute a command file from the Visual Studio IDE and use the output window for any text. I highly recommend you check it out. NetCFSvcUtil.exe http://localhost/MyService.svc
This will generate the CFClientBase.cs and the MyService.cs files we need to access the WCF Service. If you want to control the namespace that the proxies get created in you can use the /namespace argument to specify this.
NetCFSvcUtil.exe namespace:*,MyNameSpace.Proxies http://localhost/MyService.svc
Likewise you can also control where the files are generated by using the /directory argument.
NetCFSvcUtil.exe namespace:*,MyNameSpace.Proxies http://localhost/MyService.svc /directory:../MyApp/Proxies
There are a lot of other options you can use to control how the proxies are generated you can execute NetCFSvcUtil.exe /? to see all of them and what they do.
This gets you up and running with WCF Services in a Smart Client application, without the robust configuration that is offered with WinForms or WebForm projects. In my next post I will walk you through how we configured our WCF Service endpoints and set some custom binding information to control how our clients behaved when consuming the services.
This is something I have wanted to do for a long time, and just decided that this it the time. I saw this first on Michael Paladino’s blog. I always wished I would get called out, but since I didn’t I am calling myself out. I am also calling out a few others to share their story, and I hope you will pass it on to your closes enemies, eh I mean friends. ;-)
How old were you when you started programming?
In my senior year of High School I was overjoyed to be able to take a 1/2 semester programming class. The computer class had 11 TRS-80 computers where 1 was the main host. That meant that we all had to share the floppy drive on the host computer for saving data to disk. It was a basic programming class, of which I still have some of my code.
How did you get started in programming?
When I got to college I of course was seeking a computer degree. There I took all of the standard programming classes for my field which included a lot of Pascal programming, but I think I learned the most writing IRCII bots to share files and keep the channel ops in line.
What was your first language?
I would have to say that first language I developed in was Pascal or IRC Script.
What was the first real program that you wrote?
During college I was working a our local Wal-Mart and got the chance to go work in their Information System Division. After working there for about a year I was moved to a programming team and started using Visual Basic (starting with version 3) to create reporting tool was used to monitor the health of the companies system by analyzing help desk ticket information.
What languages have you used since you started programming?
I have spent time in several languages since then, C/C++, Perl, Visual Basic v3-6, ASP Classic, C#, VB .NET, and a short year working with Java.
What was your first professional programming gig?
As I mentioned earlier, creating reports with Visual Basic at Wal-Mart was my first paid programming gig. I learned a ton from my mentor John Lafoon, who I owe a great debt for setting me on my programming path.
If you knew what you know now, would you have started programming?
Heck yeah!!! I consider myself lucky that I get to do all day what I would be doing if I was independently wealthy had free time on my hands. A friend of mine, I believe it was Raymond Lewallen, stated like this, “I am a professional problem solver who has chosen software as the tool of choice”. I love learning and improving my development craftsmanship and spend as much time at home as I do at working improving my skills. Really that just means I have a lot things to improve. I like to say “I am failing my way to success” :-)
If there was one thing you learned along the way that you would tell new developers, what would that be?
Be a practitioner of your craft, practice your craft and keep your axe sharp. Set out to learn the fundamentals of your craft don’t just skim the surface to gain enough knowledge to get the job done. Be a proactive programming, too much of the time programmers are reactive. I need to perform task X lets get the book and hit the reference section and find the example to get me past this hurdle. This path has little learning, learn enough about your craft so that when the problem arises you already have enough information to formulate the correct action to solve the problem. In short study and practice your craft.
What’s the most fun you’ve ever had…programming?
For the past two years I have attended the We Are Microsoft Charity Challenge, a give camp event, in the Dallas area. Where developers come together for a weekend to produce web project for charities. It is awesome to see dev teams put together produce the awesome project they do in such a short period of time.
Tag, you’re it!
I’ve enjoyed hearing other people’s stories, so I think I ought to keep this going. I’m going to call out: