BizTalk moving to the cloud… and to Windows Server AppFabric#
For those of you who may have missed Sriram’s blog post, there will be a CTP of the Integration as a Service version of BizTalk appearing in Azure sometime before July 2011 (interestingly, the blog entry was posted at 10am on October 28th, i.e. an hour after PDC10 started…!).
Additionally, BizTalk vNext will transition to being AppFabric...

Friday, October 29, 2010 12:37:12 PM (GMT Daylight Time, UTC+01:00) #    Comments [6]  |  Trackback


AppFabric’s AutoStart feature: great news for BizTalk#

Any of you who have been writing WCF front-ends for BizTalk services will know about one of ASP.NET’s failings: first request latency. A service (or application) hosted in IIS doesn’t start-up and JIT itself fully until the first request is received.

And if low-latency is important to you, this isn’t acceptable, as the first request can incur delays ranging anywhere from 2 secs to 60 secs!

There are many common ways to...

Wednesday, October 27, 2010 12:01:04 PM (GMT Daylight Time, UTC+01:00) #    Comments [0]  |  Trackback


BizTalk 2010 Released; Development edition now free#

Well the announcement came over a week after I thought it would arrive, but BTS2010 is now officially released. And the developer edition is now free.

However, that doesn’t mean that you can do development for free: you still need to pay for SQL Server and Visual Studio.

Although having said that, SQL Server 2008 Dev edition is fairly cheap (as in, about £20 on a select agreement), so the only real cost is Visual Studio... Still, it means that there won’t be hoards of hobbyist devs out there trying out BTS, unless they manage to get it running with Visual Studio Express (does that actually work? Never tried it, but wouldn't have thought so – might have a go tomorrow). Still, it means that you no longer need an MSDN license to do BizTalk dev, which removes a huge barrier for budding/hobbyist BizTalk devs. Especially if you want to start developing with the AppFabric integration features in BTS 2010.

You can download the dev editions of BTS2010 and HIS2010 from here:
Sunday, September 26, 2010 9:19:06 PM (GMT Daylight Time, UTC+01:00) #    Comments [0]  |  Trackback


Installing the ESB Toolkit v2.0 on Windows 7 Error: Operation Not Completed#

Here's an interesting one: I was installing the ESB Toolkit 2.0 on a Win 7 x86 machine the other day, and during install got an error from Visual Studio saying "The operation could not be completed.":

If you choose OK, the ESB Installer finishes with a success message, but then the Itinerary Designer doesn't work in Visual Studio (you get an error about a missing assembly when you try and add a new itinerary to a project).

There was nothing...

Sunday, August 22, 2010 6:22:56 PM (GMT Daylight Time, UTC+01:00) #    Comments [2]  |  Trackback


PDC2008: Introducing BizTalk Express, sorry, Dublin#
Just at a session on BizTalk Express, sorry Dublin…
Dublin is a set of extensions to Web Application Server (WAS) also known as Web Process Activation Server (also WAS) – confused yet?!
Basically, Dublin allows hosting of WCF/WF services/workflows on IIS/WAS.
What it adds though is UIs for Hosting, Messaging, Durability, Correlation, and Tracking
Sound familiar? Yup, all things that BTS provides today.
It’s early days yet – most of the advanced stuff is currently configured via PowerShell scripts, but it shows where they’re going with it.

Persistence is implemented by storing message information in SQL Server.
In the IIS Administration Console, you can look at suspended instances, resume them, cancel them, etc. All stuff that seems very very familiar to a BTS dev.
Correlation and filtering is achieved via XPath statements (no comments on whether it loads the message into a DOM, or whether it supports fast–read-only forward XPath only).

We’ve all received copies of Dublin with our PDC bits – I’ll be keen to see what perf you can achieve under load. I suspect the answer is "not much".
The BTS dev team spent a lot of time tuning the filtering/persistence stuff, and in a lot of ways it seems that the Dublin team are reinventing the wheel here.

One cool thing shown was creating a model in Quadrant (the Oslo modelling tool) and deploying WCF/WF apps from there to Dublin.

More to come as I spend time with Dublin.

Wednesday, October 29, 2008 11:10:53 PM (GMT Standard Time, UTC+00:00) #    Comments [0]  |  Trackback


PDC2008: Wow, look Windows 7, it’s so exci… zzzzzzzz#
I’m sorry, is it just me? I just can’t get excited about Windows Vista R2, sorry, Windows 7.

[side note: Windows Vista, and Windows Server 2008 use v6.0 of the windows kernel. Windows 7 uses v6.1 of the kernel. They’ve also upgraded Windows Server 2008 to use v6.1 – and called this refresh Windows Server 2008 R2… but they’ve called the client refresh Windows 7. Even though it technically is just Vista refreshed with an updated kernel.
I suspect that MS got so burnt with the Vista brand name, that they’ve been forced to re-name it.
But I wonder what the client OS which will contain v7.0 of the kernel will be called. I suspect it won’t be Windows 8!]

So Windows 7 is pretty much Windows Vista with some new features.

And some of them are pretty cool (e.g. reduced resource footprint, improvements in collaborating with connected computers/devices). But don’t be fooled into thinking that this is a new OS, or even an evolution – it’s Vista with some new features.
Which is absolutely fine – Microsoft have just managed to stabilize Vista, and are starting to leave the early painful years behind.

For me, the coolest and most useful feature is the ability to boot from a VHD.
Now just stop and think about what that means: there must be a thin layer of bootstrap code which knows how to read a VHD and present to as a physical HDD/Storage Controller to the system.
[Note: yes, Win 7 allows you to create/mount VHDs using DiskManager, but this functionality has been around for a while if you installed Virtual Server, although it was command-line only.]

I imagine this bootstrap code is pretty much the same as for Windows Hyper-V server, which works on a similar principle i.e. booting from images, although Hyper-V does this in a virtualised environment, allowing you to boot multiple VHDs at the same time.

What I’m not clear about is if the VHD must contain an install of Win 7, or whether you can boot any OS install. If the latter, then this is super cool.
(given that there appears to be a VHD HostBusAdapter in Device Manager in Win 7, I suspect it’s the former i.e. Win 7 only VHDs. I hope not.)

What this means for me: I do all of my BizTalk/Services dev in Windows Server 2003/2008. And up to now, this has been done using Virtual PC images (running Vista 64-bit as the host OS).
But now, hopefully, I have the choice of booting my dev VHD, or running it in VPC/Virtual Server/Hyper-V.

And that’s pretty cool.

Wednesday, October 29, 2008 6:34:45 PM (GMT Standard Time, UTC+00:00) #    Comments [0]  |  Trackback


PDC2008: New features in C##
Just been to Anders Hejlsberg’s talk on the future of C#, where he outlined what’s coming in C# 4.0 and (some) of what might come in C# 5.0.

Importantly: C# 4.0 focuses on Dynamic Languages (i.e. the Dynamic Language Runtime (DLR))  and concurrent programming (i.e. programming for multi-core CPUs).

New in C# 4.0 is support for the attic type dynamic.
This allows you to specify a type which isn’t known until runtime.

Under the hood, it all seems to use the whole Type Invoke mechanism (i.e. reflection, which can be very slooooooow).
Which leads me to wonder: dynamics in C# 4.0 look like they’re cool in certain situations, but you end up with perf-problems, and the possibility for difficult-to-find runtime bugs.

For example, if I typed:
dynamic calc = GetCalculator();
int val = calc.App(2, 10);

Instead of

int val = calc.Add(2, 10);
well.. I won’t know that there is a  bug until I get to that line as it’s dynamically executed
At least, that’s my understanding.
It’ll be interesting to see how they address this.

In C# 5.0, Anders showed how they’re re-writing the C# compiler (csc) in managed code – and allowing you to interact with it from code.
Specifically, he showed how to dynamically generate, compile and execute code.. similar to what CodeDOM does today, but much much cooler.

Monday, October 27, 2008 10:47:56 PM (GMT Standard Time, UTC+00:00) #    Comments [0]  |  Trackback


PDC2008: Microsoft unveils Windows Azure at PDC 2008#
Well, I’m at the Microsoft PDC (Professional Developers Conference) 2008 at the LA Convention Center in LA.

The keynote session is happening at the moment – Ray Ozzie has just announced Windows Azure, the new name for the cloud-services platform (I had heard that they would call is Windows Strata, but there you go!).

Azure look fairly cool, although the development environment is just VS.NET.

What’s new is that they host your services for you, including (in the future) SQL Services i.e. hosting your databases, which will be fairly cool.
When you create an Azure service in VS.NET, and then choose deploy, the service is packaged and you’re taking to the Azure Developers Portal, where the service is uploaded.

Bear in mind that this Microsoft’s answer to Amazon Web Services (AWS) and Google Apps – Microsoft are joining the party late, but I’m hoping that they have learnt something by being able to watch from the sidelines.

I’m also interested in all the Oslo sessions – for those of us in the BizTalk world, Oslo gives us information about what future versions of BizTalk will look like (post BTS 2009).
What’s important to realise is that Oslo is the code name for a whole suite of tools, as opposed to a single product.

I imagine this means that there will be a whole lot of products that come out under the Oslo codename/brand.
Monday, October 27, 2008 7:49:59 PM (GMT Standard Time, UTC+00:00) #    Comments [0]  |  Trackback


Aggregating messages and removing duplicates in a BizTalk Map#
Aggregating messages is a fairly common task in BizTalk.
By "aggregating" I mean taking two separate messages with repeating elements and combining them into a new message which contains the elements of both messages - the same as doing a Union in SQL.

However, what if you want to remove duplicates?
It's not as easy as it seems, and in truth the only way I have found to do this is via custom XSLT.

Combining two messages
This is actually fairly easy: you use...
Wednesday, May 21, 2008 2:42:26 PM (GMT Daylight Time, UTC+01:00) #    Comments [1]  |  Trackback


System.Data.SqlXmlHelper - calling extended XPath functions from BizTalk Maps#
In this post:
   Methods in the helper class
   Notes on implementation
   Installation Instructions
   Problems with the Script Functoid
   Examples of Usage
   Download the code
   Testing the sample map

I’m not sure if this is actually of any use to anyone but if you do want to use Microsoft's Extended XPath Functions from a BizTalk Map (see my previous post) then I've created a wrapper assembly to do this for you.
Method names are the same as the original functions, but using "_" instead of "-".

Saturday, March 15, 2008 11:30:27 AM (GMT Standard Time, UTC+00:00) #    Comments [0]  |  Trackback


Using Microsoft's Extended XPath functions in BizTalk#
It's not that well documented, but Microsoft have a bunch of extra functions you can use from XPath expressions within XSLT.
You can find the documentation on them here.

What isn't made apparent is that none of them work with XslTransform: a subset of them will work with XslCompiledTransform, and the others only work with MSXML 4.0 onwards.

This becomes obvious if you try and use these functions, or if you read this blog post from the Microsoft XML team on the XslCompiledTransform class.

Being the curious cat I am, I wondered if there was any way to use the functions from within XslTransform - if there was, I figured you could use the functions in a BizTalk Map...

Thursday, March 13, 2008 11:21:00 AM (GMT Standard Time, UTC+00:00) #    Comments [0]  |  Trackback


Understanding the BizTalk Mapper: Download the Article#
If you prefer to do your reading offline, then you can download the entire series of 13 posts as a single 68-page Microsoft Word document, or Adobe PDF document.

Get them here:
     Understanding the BizTalk Mapper.doc (1.2MB)
     Understanding the BizTalk Mapper.pdf (640kB)

Please let me know what you think!
Saturday, March 01, 2008 8:14:07 PM (GMT Standard Time, UTC+00:00) #    Comments [3]  |  Trackback


Understanding the BizTalk Mapper: Part 13 - Is the Mapper the best choice for Transformation in BizTalk?#
In this section:
Transformation Choices
BizTalk Mapper
Custom XSLT with the BizTalk Mapper
External Transform Engine
Transformation in code
Which one should you use?

Transformation Choices
When performing transformations in BizTalk, you have four choices (that I can think of):
  1. Using the BizTalk Mapper
  2. Using a custom XSLT file with the BizTalk Mapper
  3. Using a separate transformation engine (called from code)
  4. Performing transformations in code
Each of these offers their own benefits depending on your requirements.

Normally your choice will depend on 3 factors:
  • Performance
  • Complexity
  • Maintainability
Generally you will get one (or two) of these, at the cost of the third.

For simple transformations, you can get all three with the Mapper using the built-in functoids.

Friday, February 29, 2008 4:05:35 PM (GMT Standard Time, UTC+00:00) #    Comments [3]  |  Trackback


Understanding the BizTalk Mapper: Part 12 - Performance and Maintainability#
In this section:
   Summary of Tests
   Testing performance in isolation (non-BizTalk)
   Performance Test Results
   Measuring Memory Usage in BizTalk
   BizTalk Memory Test Results
   Byte Arrays
   Analysing the performance results
   External XSLT
   Serialisable Classes
   Why is it so difficult to edit code in the Script functoid?

Any large BizTalk project will likely have had the inevitable conversations about performance and maintainability: will it be fast/sustainable enough, and will the tech support team (or whoever looks after the code once the developers have finished) be able to maintain it?

In this post I want to look at the performance of the Mapper, and also look at how maintainable maps are generally.

In order to do this, I want look at the different options you have for executing XSLT with the Mapper, and compare this to the most common non-Mapper mechanism for performing transformation: using serialisable classes.
Tuesday, February 26, 2008 7:14:07 PM (GMT Standard Time, UTC+00:00) #    Comments [1]  |  Trackback


Understanding the BizTalk Mapper: Part 11 - Advanced Functoids#
Interestingly, all of the advanced functoids emit XSLT. No C# in sight at all.
The reason for this is that the functoids in this category all perform operations best suited to trees of data i.e. XML.
The only way to do this in C# would be to load the data into a DOM (i.e. XmlDocument) or XmlReader, or treat the XML as string data and search for tokens.

Note: this category was the one that actually started this series – I felt that if you knew the XSLT emitted by these functoids it would help understand when to use them, and what you can achieve with them.

Functoids covered in this category:
Assert Record Count
Index Scripting
Iteration Table Looping
Looping Table Extractor
Mass Copy Value Mapping
Nil Value Value Mapping (Flattening)
Wednesday, February 20, 2008 3:21:53 PM (GMT Standard Time, UTC+00:00) #    Comments [0]  |  Trackback


Understanding the BizTalk Mapper: Part 10 - Database Functoids#
This category contains both Database and Cross Referencing Functoids – but they all connect to a database to retrieve/update data.
Unlike all other default functoids, these functoids all call classes/methods in external assemblies – no inline C# is emitted at all. Because of this, this is the only category that emits an ExtensionObjects file listing the strong names of the external assemblies used.

Note: in this category I show some of the source code from the external assemblies as well.

Functoids covered in this category:
Database Lookup Get Common Value
Error Return Remove Application ID
Format Message Set Common ID
Get Application ID Value Extractor
Get Application Value Common Code
Get Common ID  

Monday, February 18, 2008 3:20:59 PM (GMT Standard Time, UTC+00:00) #    Comments [0]  |  Trackback


Understanding the BizTalk Mapper: Part 9 - Cumulative Functoids#
Of the functoids in this category, only Cumulative Sum has a counterpart in XSLT v1.0 – all the others can be performed in XSLT v2.0, but not XSLT v1.0.

Functoids covered in this category:
Cumulative Average Cumulative Minimum
Cumulative Concatenate Cumulative Sum
Cumulative Maximum Common Code

Saturday, February 16, 2008 3:20:01 PM (GMT Standard Time, UTC+00:00) #    Comments [0]  |  Trackback


Understanding the BizTalk Mapper: Part 8 - Scientific Functoids#
Yet another category which has no direct support in XSLT v1.0 or XSLT v2.0!
However, given the strong support for scientific functions in .NET, it's easy to call out to .NET classes, which is exactly what every single one of the functoids in this category does.

Having said that: have you ever used one of these functoids in a map? Care to share a real world example?
I'd be interested to find out how often they are used.

Functoids covered in this category:
10^n Natural Logarithm
Arc Tangent Sine
Base-Specified Logarithm Tangent
Common Logarithm X^Y
Cosine Common Code
Natural Exponential Function  

Friday, February 15, 2008 3:19:04 PM (GMT Standard Time, UTC+00:00) #    Comments [0]  |  Trackback


Understanding the BizTalk Mapper: Part 7 - Conversion Functoids#
Surprisingly, neither XSLT v1.0 nor XSLT v2.0 have any built-in conversion support (well, not for the scenarios represented in this category anyway).
It is possible to download XSLT libraries which can do this sort of conversion (as mentioned in the notes below each functoid), but the XSLT is not pretty, and I'm not convinced about performance.
So C# is generally your only option here.

Functoids covered in this category:
ASCII to Character Octal
Character to ASCII Common Code

Thursday, February 14, 2008 3:18:07 PM (GMT Standard Time, UTC+00:00) #    Comments [0]  |  Trackback


Understanding the BizTalk Mapper: Part 6 - Date/Time Functoids#
XSLT v1.0 has no support for Date/Time values, whilst XSLT v2.0 has full support.
Therefore it's not surprising that your only option is to use C#'s rich support for Date/Time values.
And this is why all of the functoids in this category emit inline C#.

Functoids covered in this category:
Add Days Time
Date Common Code
Date and Time  

Wednesday, February 13, 2008 3:17:24 PM (GMT Standard Time, UTC+00:00) #    Comments [0]  |  Trackback


All content © 2021, Daniel Probert
On this page
This site
<October 2010>
Blogroll OPML

Powered by: newtelligence dasBlog 2.3.12105.0

The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

Send mail to the author(s) E-mail

Theme design by Jelle Druyts

Pick a theme: