by community-syndication | Aug 20, 2008 | BizTalk Community Blogs via Syndication
In previous blog posts I have mentioned this large project that I am working on. This project has been a great project for finding lots of material to blog about. What I have not mentioned so far are the people that I am working with.
This project is a joint effort between Microsoft Consulting Services and Microsoft Global Services India (MGSI). There have been great contributions by all of the off-shore team (unfortunately, far to many to list) and I would recommend them anytime as an off-shore group if you are looking to implement an off-shore model.
I have been very fortunate to be working closely with a small tight knit sub team. This team is made of up Vishal Agrawal, Ashish Mehndi, Ashish Shukla and Benny Matthew.
Why do I bring this up? Well, in the last blog post I talked about changing the config file so that we could validate our canonical messages. Once we did that we quickly found out that all of our interchanges that utilized a SQL UpdateGram broke. They broke because the map that generates the UpdateGram uses a character to represent the parent/child relationship. This character gets mapped to an element that is an Integer type – which is were it no longer conforms to the schema. We did this because when the UpdateGram was sent through the Send Port the SQL Adapter uses SQLXML which takes that character data and replaces it with the value of the parents primary key.
So, the first thing that we did was to modify the map to use a numeric value (yes, numeric values can be used) and we decided that we were going to use the following scheme so that we would not overlap with real data. We used a script functoid with the following code
System.Int32.MinValue.ToString() + the value from the iteration functoid.
Why do I bring up the issue with overlapping data? Well, that brings us to the second interesting (and important) fact about using the UpdateGram.
How does the SQLXml functionality work internally when replacing the child key with the value from the parent? Well, it takes the identifier (lets say that we were still using a character and that the character was Y) and does a string replace. The string replace however is done across all of the data in the child record and not just the child foreign key column. We found very quickly that all of our columns that contained a Y were now replaced with the value from the parent key relationship – definitely not what we wanted! This only happens if the data in the field is only a Y. This does not happen if there is a Y in the middle of a word.
So, if you are still going to use character data to identify your relationships in the UpdateGram make sure that you take this into account.
by community-syndication | Aug 20, 2008 | BizTalk Community Blogs via Syndication
A couple things to share on this glorious Wednesday.
First, one of our BizTalk developers came across an odd scenario, and I just learned that everyone’s favorite Dahan (Yossi Dahan) wrote about it a couple years ago. Our issue was that an orchestration needed to consume a service with a multi-part input, but the complex […]
by community-syndication | Aug 20, 2008 | BizTalk Community Blogs via Syndication
As promised, here is the second installment in the screencast series around the WF and WCF technologies – a weekly .NET developer screencast series to show how to accomplish tasks in WF/WCF 3.5 and Visual Studio 2008. As I mentioned last week, we’ve partnered up with PluralSight to deliver high-quality, task-specific screencasts that are short and to the point. The screencast videos will be published up to Channel9 on Wednesdays, available for either watching from the server or for download.
This week, for our second screencast in the series, CSD MVP Aaron Skonnard walks you through how to configure your your WCF Service with endpoints. The screencast guides the viewer through the XML configuration for an existing service (see last week’s screencast on how to create one) – examining the adapter, binding, and contract settings for the service – and then using the WCF Configuration Editor tool to add additional endpoints to the service. Along the way, Aaron introduces the concepts of base addresses, the MEX binding, and the non-HTTP bindings.
As mentioned above, the WCF screencasts are a weekly series of Channel9 videos done in conjunction with the folks at PluralSight to help developers new to WF/WCF see how the technology is used. It’s worth noting that Aaron and the PluralSight folks are now offering online training courses (in a format similar to these screencasts) as a compliment to their catalog of instructor-led training courses covering Microsoft connected systems technologies. Their training topics range from .NET v3.5 (including an excellent WF/WCF Double Feature course) to WSS to BizTalk server.
Side Notes:
Yes – I’m still using an image in the post and linking to the Channel9 posting, as opposed to an embedded viewer…and let me tell you why: Since last week, I caught up with Matt Winkler on how to do embedded videos from Channel9, and he explained how to do it (pretty simple, actually). But it seems that it comes down to a choice between either doing this as a screencast (where it automatically opens up the video in a new window) or as a player embedded in the page – I’m unable to get both. So…going the other way, we get the upside of the ability to embed it…BUT…the downside is that the graphic in the Channel9 post no longer opens a new window when you click on it – it plays it in the small, low-res box; and users have to then click the ‘Download’ and ‘Screencast’ links to get a high-quality streaming play of the screencast. Because I’m assuming that most folks don’t know that they can get to the screencast via the ‘Download’ link, I didn’t go that route. But, that being said, I’m willing and able to be swayed on the issue. So drop me a line either in the comments section below, or via e-mail if you feel strongly one way or the other.
Also, I promise to drop the introductory paragraph next week. ^_^
by community-syndication | Aug 20, 2008 | BizTalk Community Blogs via Syndication
Attached to this post is a standalone .NET Windows Form application which can be used to browse artifacts on SAP, and build queries which the SAP ADO.NET provider can understand. The main aim is to reduce the grunt work required when building the queries.
The provider supports EXECuting RFCs, SELECTing from a single table, and SELECTing from two tables (JOIN). The tool I’ve attached currently supports EXECuting RFCs and SELECTing from a single table; support for generating queries which use a JOIN will be added in a later version.
The current version of the tool is linked against the 32 bit version of CTP3 of the BizTalk Adapter Pack V2. I’ll update the attachment as and when newer versions of the Adapter Pack are released.
by community-syndication | Aug 20, 2008 | BizTalk Community Blogs via Syndication
As announced on the Simple-Talk blog, Red Gate software will be responsible for the future development of .NET Reflector, the popular tool authored by Lutz Roeder. Red Gate will continue to offer the tool for free to the community.
I think this is great news for an already excellent tool and although there doesn’t appear to […]
by community-syndication | Aug 19, 2008 | BizTalk Community Blogs via Syndication
CTP3 is here and we have added a lot more features based on some feedback we have been getting from various channels. So here is the list of major enhancements
SQL adapter:
1) Strongly typed polling
2) Strongly typed stored procedures
Oracle Adapter
1) Inline Value support
2) App context initialization
3) Oracle Notifications
4) ReadLOB/Update LOB operations
5) PLSQL tables inside RecordTypes
6) Performance improvement for metadata generation
Others
1) We now support upgrade from APv1 RTM to APv2 CTP3
2) More meaningful schema names for SQL adapter – again a common feedback from customers, we will be doing this for other adapters in next releases
3) Using the SAP ADO provider from SSRS
4) Making WCF LOB adapters more discoverable – one of the common requests was that users have to select WCF-Custom and then sqlbinding or sapbinding from yet another menu in the BTS admin console while configuring ports causing problems with usability and troubleshooting.This has now been fixed and you can choose WCF-SQL or WCF-SAP from the list of send ports.
So go ahead and try out the new CTP and do send in feedback. As always, if you want to try this CTP you need to join the TAP(Technology Adoption Program). You can see the details for joining TAP here .
Thanks
Vivek Krishna
by community-syndication | Aug 19, 2008 | BizTalk Community Blogs via Syndication
The poster is available for download from here: http://www.microsoft.com/downloads/details.aspx?FamilyID=4a7e28b9-9f4b-4989-a35a-247f379f2142&DisplayLang=en Subscribe in a reader Join my blog network on Facebook Blog Networks Share this post: email Read More……(read more)
by community-syndication | Aug 19, 2008 | BizTalk Community Blogs via Syndication
Pluralsight has joined forces with the WCF/WF teams at Microsoft to deliver a series of short videos that illustrate how to get started using WCF/WF in your applications. The videos will be hosted on Channel9 within the Screencasts section, and they'll be highlighted on The .NET Endpoint Team Blog and the MSDN Dev Centers for WCF & WF. These videos provide 100-200 level content intended for folks new to the technology or those looking for quick tutorials on how to perform common tasks within each framework.
Cliff Simpkins announced the first video in the WCF series last week — you can find it over here on Channel9. It's called Creating Your First WCF Service. This short video guides you through how to create your first WCF Service from scratch in VS2008 – defining a data contract, a service contract, and testing/hosting the service using the new built-in WCF tools found in VS2008.
A new video will be posted every week in the series…so check back on Channel9 if you're interested! And if you like what you see, you should also check out Pluralsight's new online training system that is currently in beta at the moment. You'll be hearing more about this over the next few months but if you're interested in participating in our early-adopter program, shoot me an email.

by community-syndication | Aug 19, 2008 | BizTalk Community Blogs via Syndication
Most modern blogging engines support the MetaWeblog API, which was defined by XML-RPC.com many years ago. It's become one of the most popular API's for programmatically interacting with blogs because of its simplicity. Even Microsoft's Windows Live Spaces provides support for it.
I wanted to use this API recently to interact with our Community Server implementation so I started searching around for client-side implementations that would be easy to program in C#. I was surprised that I couldn't find a mainstream implementation readily available. So I followed the example on MSDN and built my own MetaWeblog library in C# on top of Cook Computing's XML-RPC.NET library.
Here's what my MetaWeblogClient class looks like (truncated for brevity):
public class MetaWeblogClient : XmlRpcClientProtocol
{
[XmlRpcMethod("metaWeblog.getRecentPosts")]
public Post[] getRecentPosts(string blogid, string username, string password, int numberOfPosts)
{
return (Post[])this.Invoke("getRecentPosts",
new object[] { blogid, username, password, numberOfPosts });
}
[XmlRpcMethod("metaWeblog.newPost")]
public string newPost(string blogid, string username, string password, Post content, bool publish)
{
return (string)this.Invoke("newPost",
new object[] { blogid, username, password, content, publish });
}
...
With this class, you can simply make method calls like getRecentPosts, newPost, editPost, etc to interact with any blog that supports the MetaWeblog API. You will need to specify that URL to the MetaWeblog endpoint prior to making those method calls. Here's an example:
class Program
{
static void Main(string[] args)
{
MetaWeblogClient blog = new MetaWeblogClient();
blog.Url = "http://www.pluralsight.com/community/blogs/metablog.ashx";
// here's how you post a new entry...
Post newPost = new Post();
newPost.dateCreated = DateTime.Now;
newPost.title = "Test post from Metablog Api";
newPost.description = "This is the body of the post";
newPost.categories = new string[] { "WCF", "WF" };
blog.newPost("blogid", "username", "password", newPost, true);
// here's how you retrieve the most recent entries...
Post[] posts = blog.getRecentPosts("blogid", "username", "password", 5);
foreach (Post post in posts)
Console.WriteLine(post.title);
}
}
The code turns out to be wonderfully simple. So if you find yourself in the same boat as me, looking for a MetaWeblog C# implementation, feel free to download my library here. Hopefully it will save you a little bit of time!

by community-syndication | Aug 19, 2008 | BizTalk Community Blogs via Syndication
My lovely wife Shannon is helping to do proof-reading on my book,
and today she was working on the preface.
One of the things I talk about in the preface is about Roy Fielding, and how his dissertationis
really a named codification of the architecture of the Web
She said to me “This really bugs me, why does someone get credit for just naming and
distilling something that already exists”
I replied with “Well – naming things is important and he was part of the effort to
create the thing (the Web) so he should get some of the credit”
She said “Hmm – I still don’t get it, can you give me an example from outside of the
world of technology”
I said “Imagine when bebop was being
created as a genre of music. Think about Dizzy
Gillespie, imagine he wrote a paper in about 1950 describing bebop, how it worked,
and what went into creating it, and how to tell bebop from other forms of jazz based
on chord structures, etc.”
That made sense to her, so I thought I would blog about it. 🙂
Check out my BizTalk
R2 Training.