by community-syndication | Mar 19, 2009 | BizTalk Community Blogs via Syndication
We recently announced several new instructor-led training courses focused on the Azure Services Platform and cloud computing. We already have a few scheduled for May and June and we'll be scheduling more at various locations around the world over the next several months – check out our course schedule grid for more details. All of these courses will also become part of our Pluralsight On-Demand! library by mid-year.
Azure Services Fundamentals
A new platform is emerging that promises to usher in a wave of new opportunities by dramatically changing the way companies deal with IT and the software built on it. This platform ultimately makes it easier for the little guy to take innovative ideas to market through a "pay as you go" business model, avoiding many of the upfront costs and complexities of typical IT investments. This platform is what we commonly referred to as "the cloud" today.
This intense three-day course introduces you to the new world of cloud computing and how to build on the Azure Services Platform. We'll cover Windows Azure, .NET Services, SQL Services, and Live Services and you'll learn how to start building applications using each one through a series of hands-on labs. Along the way we'll discuss cloud computing tradeoffs and help you understand the constraints and limitations imposed by the cloud computing model offered by the Azure Services Platform today. [more…]
Azure Services Workshop (1-day)
This fast-paced workshop introduces you to the new world of cloud computing and how to build on the Azure Services Platform in a single day. We'll cover Windows Azure, .NET Services, SQL Services, and Live Services. During this workshop, you'll learn about the overall platform architecture, the purpose of each service offering, and most importantly, how to begin building Azure-based applications today. [more…]
SOA and Cloud Computing Fundamentals
Service Oriented Architecture (SOA) is a set of principles and methodologies for building distributed systems. Cloud Computing is an emerging trend wherein processing power, data storage, and other resources are accessed as utilities over the Internet. This course provides an introduction to SOA and Cloud Computing for technology decision makers who want to learn what these symbiotic notions are, what they can do for their technology and business solutions, and how to successfully implement them. If you are currently employing or considering employing SOA or Cloud Computing in your solutions, this course is for you. [more…]
RESTful .NET Fundamentals
Representational State Transfer (REST) is an architectural style for building services on the tried and true architecture of the World Wide Web. REST defines a set of useful constraints that if followed lead to loosely-coupled, extensible, and scalable services callable from the widest set of service clients. You'll learn how to build services that embrace HTTP, URIs, and standard formats like XML, RSS/ATOM, and JSON. This course will quickly immerse you in RESTful thinking and teach you how to apply it using several Microsoft technologies including WCF, ASP.NET MVC, and ADO.NET Data Services. [more…]
Azure Services Fundamentals is for developers & architects who want a deep-dive into the Azure Services Platform. It covers each area of the platform in detail and provides a series of hands-on labs to cement your understanding. The Azure Services Workshop is the condensed version of the same course, making it possible to get fast-paced exposure to the Azure Services Platform in a single day.
The SOA and Cloud Computing Fundamentals course is primarily designed for architects focused on designing distributed systems using SOA architectures and cloud computing technologies. And finally, RESTful .NET Fundamentals is for developers who need to solidify their understanding of REST principles and programming techniques — a prerequisite for anyone moving towards the Azure Services Platform.

by community-syndication | Mar 18, 2009 | BizTalk Community Blogs via Syndication
I will be speaking at TechEd 2009 in Los Angeles.
I will be presenting two sessions.
My first presentation will be on ‘Application Lifecycle Management Experience for BizTalk Server 2009 Developers’.
My second presentation will be a ‘Deep Dive with Microsoft BizTalk Server 2009 Development Platform’.
If you are going to be there stop by and say hello.
by community-syndication | Mar 18, 2009 | BizTalk Community Blogs via Syndication
Posting from The Venetian Hotel in Las Vegas where I’m taking part in Microsoft’s 4th annual MIX event, where the crowd is a sea of red red shirts that is, in honor of Scott Guthrie’s style.
Looking around I see a diverse group of web designers and developers eager to learn how businesses can achieve a ’return on experience’ by using a new generation of development tools, web platform technologies and software plus services to better engage their customers. Web 2.0 technologies have become a business norm and an essential customer interaction point for most businesses.
So what does this have to do with MIX? Well, MIX provides a forum for developers to learn about Microsoft’s newest technologies and developer tools — whether they be on the web or in the cloud, so that they can engage their customers and forge deeper connections through rich online experiences that deliver a better experience.
From the Web to the Cloud
Developers using the web as a key access point to build rich content, social media applications and innovative business application isn’t new. In fact, Microsoft has, and continues to provide the tools and technologies to enable web developers to build these rich applications, including Web App Gallery, Silverlight 3 Beta, Expression, etc.
With changing economics and technical innovations, we are taking this opportunity to extend the web workload into the cloud helping developers harness the power that they want and need, at scale without having to manage the complexities of hardware. Moving beyond hardware, Microsoft’s Azure Services Platform helps developers focus on their applications and user experiences.
When Microsoft began thinking about its software plus services vision over three years ago, we knew that in order to help our customers solve their business problems, they would need a balance between on-premise and cloud solutions, and the choice to determine which workloads they moved in and out of the cloud. We’ve created a dynamic internet-scale cloud services platform hosted in Microsoft data centers, which provides an operating system and a broad set of developer services that can be used individually or together. Today, I’m happy to announce the roadmap updates with the SDS relational database capabilities, Windows Azure updates (including FactCGI, .NET FullTrust & Geolocation), and the .NET Services interop enhancements.
For those who weren’t able to attend MIX in person – here are few things to consider.
Get Involved
%u00b7 Visit the MIX 09 website and check out the latest innovations on the web and cloud, or stream the keynotes from your desk.
%u00b7 Begin leveraging Microsoft’s cloud, visit the Azure website and register for the Community Tech Preview.
%u00b7 Download the Silverlight 3 beta and take advantage of the newest tools outlined above.
%u00b7 Check out the WebPI and the App Gallery.
For those of you who made the trip to MIX, I’ll see you at tonight’s party at TAO!
by community-syndication | Mar 18, 2009 | BizTalk Community Blogs via Syndication
I just discovered that in Chapter 11 – my code for generating ETags has a bug.
The code needs to wrap the ETag in a set of quotes:
string GenerateETag(User
u) { byte[] bytes = Encoding.UTF8.GetBytes(u.UserId
+ u.LastModified.ToString()); byte[] hash = MD5.Create().ComputeHash(bytes); string etag
= Convert.ToBase64String(hash); return string.Format("\"{0}\"",
etag); }
Sorry – as I always say “Hi – I’m Jon, I’m a developer, and I write code with
bugs” 😉

Check out my new book on REST.
by community-syndication | Mar 18, 2009 | BizTalk Community Blogs via Syndication
We’ve been slowly migrating our services from asmx to WCF, but as we’re still using BizTalk 2006 with no support for WCF we’ve been exposing endpoints configured for basicHttpBinding and consume them using the SOAP adapter.
Generally speaking things have been going well, although we completely gave up on the idea of moving the services to WCF and NOT have to change the client, until yesterday we’ve stumbled into a serialisation issue –
The SOAP adapter, as part of its work deserialises the request message arriving through the send port into t he web service proxy class it generated, before calling the web service (which would result in the class now being serialised back into xml, which is another story); that deserialisation failed.
The error message was clear enough and indicated it failed to deserialise an enum parameter the service was expecting, and that ran a bell – I posted on exactly that back in September, but after carefully checking and re-checking everything we could swear that our message (which was now suspended) matches perfectly the schema generated by the add web reference wizard; what’s going on then??
After chasing our tail for a short while we brought up reflector to the rescue and found out the cause of our woe is a combination of a difference in behaviour between WCF and ASMX and the use of BizTalk – here are the details –
Consider the following asmx web method –
[WebMethod]
public string GetDataUsingDataContract(CompositeType.someEnum myEnum)
{
return "Hello World";
}
With CompositeType being
public class CompositeType
{
public enum someEnum
{
Value1,
Value2
}
}
(..and pretend CompositeType has many more things, but these are irrelevant to this topic)
The definition for myEnum in the WSDL looks like
<s:element minOccurs="1" maxOccurs="1" name="myEnum" type="tns:someEnum" />
Where the type tns:someEnum looks like
<s:simpleType name="someEnum">
<s:restriction base="s:string">
<s:enumeration value="Value1" />
<s:enumeration value="Value2" />
</s:restriction>
</s:simpleType>
As a result the definition of the enum in a proxy generated via the add web reference VS 2005 option (which is what BizTalk would use) looks like –
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.3053")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://tempuri.org/")]
public enum someEnum
{
Value1,
Value2,
}
All makes sense.
Now, let’s look at what WCF does in the same case; consider the following service –
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetDataUsingDataContract(CompositeType.someEnum myEnum);
}
[DataContract]
public class CompositeType
{
public enum someEnum
{
Value1,
Value2
}
}
The WSDL generated looks like
<xs:simpleType name="CompositeType.someEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="Value1" />
<xs:enumeration value="Value2" />
</xs:restriction>
</xs:simpleType>
<xs:element name="CompositeType.someEnum" nillable="true" type="tns:CompositeType.someEnum" />
The key difference is that the name of the class containing the enum has made it into the type name for the enum, which never happened in the ASMX version.
As a result the proxy is generated as such –
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="CompositeType.someEnum",
Namespace="http://schemas.datacontract.org/2004/07/WcfService1")]
public enum CompositeTypesomeEnum : int
{
[System.Runtime.Serialization.EnumMemberAttribute()]
Value1 = 0,
[System.Runtime.Serialization.EnumMemberAttribute()]
Value2 = 1,
}
Again – note the name given to the element now contains the class name and, crucially, a dot (’.’).
On it’s own – nothing to malicious – although it’s another nail in the coffin for the idea that you can substitute web service with WCF service, configured them to use basicHttpBinding and all should be the same (ok – am I the only one still wishing this was possible?)
Enters BizTalk.
When you use the add web reference wizard to add a reference to the WCF service, BizTalk generates all the schemas and proxy for you, which is what you would use to create requests going to the service (and process responses).
Because the WSDL of the WCF service contains the longer name of the enum (with the class name, the dot and the enum name) the .net proxy generated is identical to the one created for the WCF service above; the schema, however, is generated incorrectly!
BizTalk “kindly” decides that having dots in the element name is not a good idea and removes it so the schema generated looks like this –
<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/WcfService1" elementFormDefault="qualified"
targetNamespace="http://schemas.datacontract.org/2004/07/WcfService1"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="CompositeTypesomeEnum" type="tns:CompositeTypesomeEnum" />
<xs:simpleType name="CompositeTypesomeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="Value1" />
<xs:enumeration value="Value2" />
</xs:restriction>
</xs:simpleType>
</xs:schema>
“CompositeTypesomeEnum”??????
Well, we’ve seen this, and created a message with exactly that element, which – of course – the SOAP adapter failed to deserialise into
[System.Runtime.Serialization.DataContractAttribute(Name="CompositeType.someEnum",
Namespace="http://schemas.datacontract.org/2004/07/WcfService1")]
public enum CompositeTypesomeEnum : int
{
[System.Runtime.Serialization.EnumMemberAttribute()]
Value1 = 0,
[System.Runtime.Serialization.EnumMemberAttribute()]
Value2 = 1,
}
The solution was fairly simple – we’ve simple change our xsl to put the element name as the .net proxy requires it, and not as the schema describes it, and it all worked well.