December 2004 - Posts
Nice work by Jef Newsom. Although I cannot see any complete sample or even a download for it...
Simon and I do. They finally will have their breakthrough - cross fingers.
Interesting read... maybe Microsoft will include these ideas and concepts into a future version of VSTS?
The Fugue protocol checker: Is your software Baroque?
Even in a safe programming language, such as C# or Java, disobeying the rules for using an interface can cause exceptions at run time. Such rules govern how system resources are managed, the order of method calls, and the formatting of string parameters, such as SQL queries. This paper introduces Fugue, a modular static checker for languages that compile to the Common Language Runtime. Fugue allows the rules for using an interface to be recorded as declarative specifications and provides a range of annotations that allow a developer to specify interface rule with varying precision.
...and I must say that they just think doing it this way is good...
Web services programming tips and tricks: Improve interoperability between J2EE technology and .NET, Part 1: WSDL, RPC/encoded style, and WS-I conformance
Weaving together Web services to create cross-organizational business processes requires all partners to program to the same standard model and to avoid exposing proprietary implementations. After many years of promoting the interoperability among vendors through joint efforts on standardizing protocols, significant progress has been made. However, the ultimate goal of making Web services interact seamlessly is still a frequent concern and a hot discussion topic. Explore the source of some common interoperability challenges facing Web services integration across platforms and join the author in analyzing a number of interoperability problems resulting from interaction styles, basic data types and structures, and namespace issues between .NET and J2EE technology. Wangming Ye offers best practices that you can use to avoid problems and improve the chances of successful integration. The first part of the series stresses the importance of WSDL design and analyzes the strength and pitfalls of the traditional RPC/encoded style in Web services interoperability.
Part 1: The Web services empire strikes back - Introductory thoughts
Part 2: The Web services empire strikes back - Inner Workings
Part 3: The Web services empire strikes back - Web Services in Visual Studio 2005
Part 4: The Web services empire strikes back - WS-I BP Conformance
Part 5: The Web services empire strikes back - Custom XML Serialization
Part 6: The Web services empire strikes back - Proxy Type Sharing
Part 7: The Web services empire strikes back - Contract-first with .NET 'IDL'
Part 8: The Web services empire strikes back - Schema Importer Extensions
Part 9: The Web services empire strikes back - Making asynchronous Web service calls easier
Part 10: The Web services empire strikes back - Support for Nullable and SqlTypes
Part 11: The Web services empire strikes back - Support for Generics
Part 12: The Web services empire strikes back - Web services and large content [link]
A small but nice and very powerful new feature is intrinsic to the proxy generation process, again. I cannot count the number of emails and newsgroups postings I have read and answered regarding this problem. The standard proxy generation process in the 1.x version of the .NET Framework always emits public fields for complex types found in the service’s message contract’s data structures. This is of course a big disadvantage, at least when it comes to data binding – have you ever tried to bind Windows Forms controls to public data fields?
Version 2 now automatically and by default generates private fields encapsulated by public properties. This is a big win. The following code listing is the OrderStatusInfo class we have been talking a few times in former posts.
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(
Namespace="http://www.thinktecture.com/demos/Orders")]
public class OrderStatusInfo {
private int orderNumberField;
private System.DateTime orderDateField;
private System.DateTime shipDateField;
/// <remarks/>
public int OrderNumber {
get {
return this.orderNumberField;
}
set {
this.orderNumberField = value;
}
}
/// <remarks/>
public System.DateTime OrderDate {
get {
return this.orderDateField;
}
set {
this.orderDateField = value;
}
}
/// <remarks/>
public System.DateTime ShipDate {
get {
return this.shipDateField;
}
set {
this.shipDateField = value;
}
}
Finally we have the desired behavior that makes data binding a breeze. And for those of you paying attention to the above code, you might have realized an additional attribute that can save a lot of people a lot of work: System.SerializableAttribute. This means that now by default our types are not only XML serializable by using the XmlSerializer but also runtime serializable by using one of the runtime formatters like SoapFormatter or BinaryFormatter.
To sum up all the new and important switches of wsdl.exe that have been introduced in this short overview, you can take a look at the following table.
| Switch | Description |
| sqltypes | Generate SqlTypes for nillable primitive elements. The switch cannot be used with /server. |
| sharetypes | Turns on Proxy Type Sharing feature. |
| verbose | Displays extra information in the case /sharetypes switch were specified. |
| fields | Generate fields instead of properties. |
Table: Important wsdl.exe switches
BTW, if you want or need those features, i.e. public fields and [Serializable] types - already with .NET 1.x you can try the WSCF tool.
Yesterday, fellow RD Bernd Marquardt, Jens Häupel (DE from Microsoft Germany), and myself did the famous MSDN Online Weinhachts WebCast (Christmas web cast).
Besides giving away a number of presents - like books, VS.NET copies, mugs and the like - we also did some Xmas-related demos :)
There is a German web site with all the demos on it. Although it is German, everybody should understand what is on there - but anway, I will list the demos in order here again (you can download them from the other site):
- Drawing an interactive christmas tree with C# and GDI+ (Bernd)
- 'Sending Santa Claus a message to ask him what day of the week is christmas eve for a given year' Web service (Christian)
- Drawing an animated candle with Avalon (Bernd)
- An über-cool snowflake screensaver (configurable) with VB.NET (Jens)
Have fun! And happy christmas!
Being German I like beer.
I tried it at several places all over the world. This draught is gorgeous. But there is an Irisih saying that "Guinness doesn't travel". And It is *so* true.
After the IrishDev Christmas Event in Dublin last week I had the chance to taste a very special Guinness. There is a small and quite unknown pub near the original Guinness brewery - and it has admittedly (by the Guinness brewery chief inspector) the best Guinness in Dublin.

Click the image!
For me this clearly means that I had the best Guinness draught in the world! Thanks to everybody involved and making this a great evening/night/morning.
And a big and special thanks to INETA.
IBM updates its Emerging Technologies Toolkit (ETTK) bits which include a lot of interesting Web services stuff. The new version 2.2 also includes updated implementations of WS-MetadataExchange (9/04 spec version) and WS-Addressing (8/04 spec version).
Well, then we'll wait for a new WSE build...
As I am currently writing some articles for a German magazine, it happend I had to draw a picture that shows the four phases involved in a schema-based contract-first Web services design process.
So here ist the international version of the picture [click it to enlarge]:

More Posts
Next page »