Sunday, June 27, 2010

Wcf interoperability wish list


If you have already filled your duty please share it in the comments. Here is my take.

My WCF 4.0+1 interoperability wishlist:

  • Be more forgiving. In so many cases I have sent a good request to the server, got a correct response, and had to workaround a non happy proxy complaining on "timestamp missing in the response", "expected to get serialized token" etc. If I do not explicitly require this I do not want Wcf to do it for me.

  • Low level extension point. Ok, so I got a wrong certificate reference from the other party, I just need to change it in the incoming message so Wcf will not throw some exception. I googled for "changing wcf message" and got a nice link about message inspector. Too bad it cannot change the security applied message. I had to use a custom encoder, which is really much harder to implement / maintain.

  • Better error messages. When you compile a VS project you sometimes get an error message like this:

    The type X could not be found (are you missing an assembly reference?)

    I wish Wcf would also have this. For exmple:

    The EncryptedKey clause was not wrapped with the required encryption token 'System.IdentityModel.Tokens.X509SecurityToken'. Are the client and server certificates in sync?

    I have actually posted a series of posts titled "Cryptic WCF error messages" which tries to supply the most common cause for many errors.

  • Better trace / debug. Wcf trace is really great and today we can already debug into the framework. So what do I want here? I'm not sure yet, I just know these are essential tools for interoperability and I want them easier and better.

    And more...

    In addition there are some lower level requirements that are not supported today. Not all are priority zero, but I have seen all of them in interoperability scenarios.

  • Encrypting / Signing specific elements in the message body (e.g. using xpath)

  • Control over xml signature algorithm / transformations

  • Support of the DSA algorithm

  • User / Pass authentication at the message level with a password hash + control over the nonce / created fields

  • WS-Addressing August 2004

  • Mime, SwA, Dime (probably a bigger effort than the others...)

  • Control over the security element mustUnderstand attribute

  • Native support for JKS (Java Key Store)

  • Keeping alive binding converter from the evil Azure trial expiration...

  • Some people require to use specific namespace prefixes in their Xml. Don't ask me what is it good for, but Wcf should allow it. I have seen this especially in interoperability scenarios.

  • Better coverage of wsdls - even today not all are parsed or pass code generation. Some examples last back to the old the 2.0 days and are easy to identify and fix.

    I'm pretty sure I have more somewhere but this should be enough for one version :)


    What's next? get this blog rss updates or register for mail updates!