WCF - wsdl configurations explained

OK - after an intensive coding session I can now proudly say that I understand 4 attributes of the WCF configurations (of the 1200 + that exists ;))

The attributes that you should set are:

  • ServiceBehavior.Namespace - this get generated as the targetNamepace in the wsdl (instead of http://tempuri.org/). Also you should use this namespace in the endpoint, with the bindingNamespace-attribute in the config-file: <endpoint bindingNamespace="https://www.marcusoft.net/Services/" />
  • ServiceBehavior.ConfigurationName - this is the name that you use as service name in the configuration file: <service name="OffertTjanst" \>
  • ServiceBehavior.Name - the name property has solely to do with the generated wsdl-file. It is generated as the Name-attribute in the wsdl-file: <wsdl:definitions name="ListDataTjanst" ...
  • ServiceContract.ConfigurationName - (note: this is on the interface, service contract, all other attributes are on the service implementation) this name is used to reference the interface in...
Read More

WCF, WSDL and tempUri.org

It’s back! Just when we thought that we’ve seen the dreadful namespace http://tempuri.org is coming back at us with full power.

The feeling you get when a web service is exposed under the namespace tempUri.org is that the developer of that web service is either sloppy or don’t now what he is doing.

Well, well - don’t be like that when it comes to using WCF. Here is an article describing how to do it. The key points are quite easy:

  • Use the ServiceBehavior attribute. Note: on the service implementation - not on the contract!
  • Set the namespace-property to the namespace you want.

Here is an example (yes, I know, it’s in dreaded VB.NET):

<ServiceBehavior(Namespace:="<https://www.marcusoft.net/Services/2008/04/MyService>", _)> Public Class MyServiceImplementation...
      
Read More

WCF configuration or Do it yourself

Configuration of WCF-services is a vast area… anyone who looked into the subject are sure to agree on that. The whole idea with WCF-services is that you can via configuration tweak the behavior and appearance of a service without having to change any internal logic of the service.

When I tried my first services I was “tricked” into choosing one of the pre-manufactured project templates that Microsoft ships with Visual Studio 2008. This was bad decision. The number of configuration properties and stuff generated for me was so great that I didn’t understand the true important stuff that I needed to know.

However, this Tuesday we had a interesting visitor at Avega - Christian Weyer. He gave an introduction on WCF. From that lecture I got so much more than from what the templates showed me.

So this is what you really need to configure on your service:

...
Read More

Sending parameters to msbuild in TFS

The build process in Team Foundation Server is the one part where you still miss some stuff. Although it is much better in TFS 2008 than in TFS 2005 it is still quite cumbersome to handle.

The way you start off with a wizard and then almost always need to go into the .proj-file to do updates is also confusing. Most people don’t want to be fiddling around with the nitty-gritty details of a MSBuild-script - it is not pretty.

These, and other reasons, has led many of the projects that I am involved in to create a lot of build scripts - and some of them is not need. Like, for example, you shouldn’t be needing a separate build script to deploy to a certain environment, or the deploy part should not have to get and rebuild the sources.

The solution to this is of course to send and...

Read More

Required file 'alink.dll with IAlink3' could not be found - and the solution to it

OK - a bit irritating but the first time I tried to compile … well anything (a console-application in this case) on my newly installed Visual Studio 2008 on Vista - I got this error:

Required file ‘alink.dll with IAlink3’ could not be found

Fortunately a lot of people seems to be having the same problem. Here is one guy describing the solution. But just to be sure I’ve copied the solution into here:

The solution was to install two Windows Update items found on the Visual Studio 2008 DVD in the “<dvdDrive>:\WCU\dotNetFramework\dotNetMSP\x64” folder (for 32-bit version look in the “<dvdDrive>:\WCU\dotNetFramework\dotNetMSP\x86” folder):

  1. NetFX2.0-KB110806-v6000-x64.msu. Run it, wait forever, reboot when it’s done.
  2. NetFX3.0-KB929300-v6000-x64.msu. Run it, wait forever, reboot when it’s done
Read More

Naming service reference to get namespace-like behavior

In my current project we are accessing a legacy system using Microsoft Transaction Integrator. Luckily for us we don’t have to write any of that stuff, that is done by another team who exposes the objects and methods in the legacy system as web services.

However - they have chosen to encapsulate each object.method as one web service. Since we will have about 50 methods to call it we be … 50 web service references for us to keep track on.

That is not a problem if it wasn’t for the name spacing. There are a lot of wsGetBusinessCodes and wsUpdateInsurance namespaces running around in our code.

Yesterday we found a “solution” to how to organize the web service references on our, the client, side - and still let the server side publish the web service how they like. The solution is quite simple;

As it turns out you...

Read More

New York Staff Band and Enfield together

Wow - here is a whole concert with the two great bands, in top form as it sounds. And with the extra treat of hearing Philip Smith playing Victorious (is it a bit sloppy for the worlds greatest trumpeter…?). There are also some other great items from other occasions

Click on “Band profile” for the complete concert…

Here is the same thing in full screen-mode

Read More

Transactions in stored procedures with transaction scope

Yesterday I got a question from a colleague who had run into trouble using the TransactionScope-construct in .NET.

The case was as follows; the are programming against a database whose stored procedures they cannot change. Some of these stored procedures are using calling each other and doing so under stored procedures. When the .NET-code is calling those stored procedures and doing so under TransactionScope they run into problems. The TransactionScope is not Complete-ing and the reader they are using in the TransactionScope simply returns empty (Nothing).

OK -first and foremost; don’t mix! It’s no good idea to have two guys deciding on when you are done. So use either the excellent Transaction support given in .NET 2.0 or use transactions in stored procedures. However…

To my colleague’s defense it must be said that they cannot change the stored procedures they are using, so they are stuck. This is how you...

Read More