2008 Oct 28
1 of 35 | Azuli: A Windows Azure Client -
As many have already heard or read, today Microsoft unveiled the Windows
Azure Cloud Computing Platform. Besides allowing you to host your own applications,
Azure also provides a Blob storage service, a Queue Service and a Table service exposed
over REST-based HTTP endpoints.
Azuli is my attempt to write a client
library for these services in Ruby. Since it’s one of my first attempts at any meaningful
ruby code, it’s pretty ugly, but already usable to get started with it.
Currently there’s no documentation (except a few tests), but it already has the authentication
bits in place for using the default Shared-Key authentication, and som......
2008 Oct 18
2 of 35 | PowerShell V2 & Cmdlet Keyword -
In the latest
entry in the official PowerShell Blog,
Jeffrey Snover leaves a little tidbit about a change coming on the next CTP of PowerShell
V2:
The cmdlet keyword is going away and we'll just have function.
Notice that now you can specify the [Parameter()] attribute on parameters.
When you do that, we treat the function like a cmdlet.
I don’t mind getting rid of the cmdlet keyword; honestly, but is the
new syntax that much of an improvement? So now instead of an explicit keyword telling
you whether something is a function of a cmdlet, you have an attribute spilled around
the function parameters? Not sure if that’......
2008 Oct 12
3 of 35 | Encryption Pipeline Component now on GitHub -
I’ve been working on organizing the code for my old custom Symmetric
Encryption Pipeline Components for BizTalk Server 2006 and I’ve posted the updated
code on a new GitHub repository.
Be aware that I renamed things a little bit and cleaned other parts of the code.
The code includes both the encryption and decryption component, some basic tests using PipelineTesting,
and the Windows Forms Configuration Utility that stores the crypto keys used by the
components in a custom Configuration Application in Enterprise Single Sign-On.
...
2008 Sep 28
4 of 35 | /dev/null Adapter on GitHub -
I’ve just uploaded the source code for my old /dev/null
BizTalk Adapter sample on GitHub, which
is where I’m posting all my utilities, libraries and tools now.
The repository contains both the original version of the adapter, as well as the special
BizTalk 2006 R2
version I did that showed how to use create custom
configuration dialogs for adapters in R2.
The original version is in the ‘master’
branch, while the R2 version is in the ‘R2’
branch. Enjoy.
...
2008 Sep 24
5 of 35 | PipelineTesting v1.2.0.0 Released -
I’m happy to announce a new release of my PipelineTesting library!
PipelineTesting is used alongside your favorite Unit Testing tool to make it easier
to create and test custom pipeline components, pipelines and schemas for BizTalk Server
2006 using Test-Driven Development, or simply to have a set of regression tests to
detect bugs arising from code changes.
These are the most important new features introduced in this version:
Per-Instance
Pipeline Configuration: You can now load an XML file with modified settings into
a pipeline instance. This relies on the same XML format used by the BizTalk 2006 Admini......
2008 Sep 03
6 of 35 | FixEncoding on GitHub -
I just published the source code for my FixEncoding
pipeline components for BizTalk Server 2006 to GitHub as
well. FixEncoding provides two custom components that can help you resolve issues
when resolving charset/encoding issues when receiving or sending messages.
I haven't touched FixEncoding in a while, but I still find it very helpful on a lot
of projects. You can find the new repository here: http://github.com/tomasr/fixencoding/
...
2008 Aug 31
7 of 35 | Why GitHub? -
Nick Heppleston, a fellow BizTalk blogger and
user of my PipelineTesting library, left
a comment on a recent post asking why I chose to put the library code on GitHub instead
of CodePlex. I think it's a fair question,
so let me provide some context.
As many of you are probably aware of it by now, there has been much talk lately about
Distributed Version Control Systems (DVCS), as an alternative to the more traditional,
centralized control systems that have been common in the past (and still are). DVCS
has gained a lot of traction lately, particularly with Open Source projects because
it really suits the already distributed nature of Open Source d......
2008 Aug 28
8 of 35 | PipelineTesting: XML Assembler and E_FAIL -
Fellow BizTalk developer Bram Veldhoen was kind enough to send me some suggestions
for a future version of my PipelineTesting library,
as well as with a question that could point to a potential bug in the library.
The problem basically revolves around consuming a stream returned by the XML Assembler
component in a send pipeline when testing under a library. What Bram noticed was that
executing the pipeline would seem to work, but trying to read the body part stream
of the output message would fail with a ComException with error code 0x8004005
(E_FAIL).
I was fairly confident this should've been working, based on my own use of the library,
but......
9 of 35 | PipelineTesting: XML Assembler and E_FAIL -
Fellow BizTalk developer Bram Veldhoen was kind enough to send me some suggestions
for a future version of my PipelineTesting library,
as well as with a question that could point to a potential bug in the library.
The problem basically revolves around consuming a stream returned by the XML Assembler
component in a send pipeline when testing under a library. What Bram noticed was that
executing the pipeline would seem to work, but trying to read the body part stream
of the output message would fail with a ComException with error code 0x8004005
(E_FAIL).
I was fairly confident this should've been working, based on my own use of the library,
but......
2008 Jul 16
10 of 35 | CreateXmlInstance() with Multi-Root Schemas -
The DocumentSpec class
in the Microsoft.BizTalk.Component.Interop namespace of the Microsoft.BizTalk.Pipelines
assembly is commonly used in custom pipeline components (particularly assemblers in
disassemblers) to represent a compiled BizTalk schema (a document specification).
This class has one interesting method: CreateXmlInstance(),
which can generate an sample instance XML based on the associated schema [1]. Recently
I saw a question in the BizTalkGurus forum
about how to use this functionality if you had a schema definition with multiple potential
root elements.
Turns out its pretty easy, once you understand how DocumentSpec works and how......
2008 Jul 13
11 of 35 | PipelineTesting code now on GitHub -
I just pushed all the source code for my BizTalk 2006 PipelineTesting library
to GitHub. I'll keep this
public repository updated whenever I make any changes to the library, so if you're
interested in keeping track of the code or forking it, this should make it a lot easier.
You can find the clone URL for the new repository is: git://github.com/tomasr/pipelinetesting.git
Enjoy!
BizTalk
Server 2006, PipelineTesting
...
2008 Jun 26
12 of 35 | Controlling BizTalk Orchestrations with PowerShell -
Here's a sample PowerShell script/functions to start/stop BizTalk orchestrations.
This is an extended version of the Stop-Orchestration VBScript included in the BizTalk
2006 SDK, which I hope someone finds useful .
The script can be used to start or stop either a specific orchestration or a group
of orchestrations defined in a BizTalk assembly. For example, to stop and unenlist
all orchestrations in a given assembly, you could use this:
stop-orch -assembly 'MyProject.BizTalk,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=50b7b2906e3f8aa5' -unenlist
Here's the code for the script:
......
2008 Jun 21
13 of 35 | BizTalk Filters not Getting Imported -
... or how automatic formatting of XML files can make you miserable.
During the last few days I've been helping out a client get ready for deploying a
BizTalk solution. One of those things this involved was taking the existing BizTalk
Binding XML files and making minor edits to them so they would match the new environment.
I did the changes, and the BizTalk Administrator used the updated Binding Files to
import them into the new BizTalk Servers. They imported without any errors at all.
A couple hours later he noticed some test messages were getting incorrectly routed
to the wrong send ports (there's a lot of messaging only stuff in this solution)......
2008 Jun 08
14 of 35 | PipelineTesting 1.1.3.0 Released -
I just uploaded a new update to my PipelineTesting library.
This one comes courtesy of Gregory
Van de Wiele, who kindly made me aware of a nasty bug: The library wasn't handling
schemas with no targetNamespace correctly when adding them to the pipeline context.
Because of this, you needed to specify the documentSpec name as "#root"
instead of simply "root". This has now been fixed in this version and I
added a new unit test to make sure it doesn't come up again. Thanks a lot Gregory!
As usual you can download the updated code/binaries from here.
BizTalk
Server, Testing
...
2008 May 01
15 of 35 | Vim Scripts -
Someone recently asked me what Vim scripts and plug-ins I use on my Vim setup. There
are literally hundreds of plug-ins on the Vim site,
some of them quite complex and interesting.
Though I've customized my own Vim setup quite a bit, I don't use all that many plug-ins.
Here's what I normally use:
Plug-Ins
Calendar: Displays
a calendar in a Vim buffer. Though not as complete as the functionality in Emac's
calendar, it is still pretty useful .
Camelcasemotion:
This one adds word-movement navigation motions that are aware of the casing of characters
inside words. So, for exampl......
2008 Apr 24
16 of 35 | Registering Null Adapter on 64-Bit Machines -
Shashikant Raina was kind
enough to share with me an issue he ran into while trying my /dev/null
Adapter for BizTalk Server on a 64-bit machine:
After creating the adapter registry keys using the included .reg file, he noticed
that the adapter would not appear listed in the BizTalk Administration Console when
trying to add the adapter to BizTalk.
Here's how Sashikant fixed it:
On 64 bit machine, when you simply click on a registry key file (i.e NullAdapter.reg)
it creates entries in default registry editor on that machine. When you then go to
Biztalk admin and try to add Null adapter, you can't see it is ......
2008 Apr 05
17 of 35 | PipelineTesting v1.1.2.0 -
I've just uploaded a new version of my PipelineTesting library.
This one contains just a few minor modifications: A few improved unit tests, and new
methods to make it easier to create multi-part messages to use as pipeline inputs.
Here's an example of the last one:
IBaseMessage message = MessageHelper.Create(
"<body>This is the body part (part1)</body>",
"<body>This is the part2</body>",
"<body>This is the part3</body>"
);
Assert.AreEqual(3, message.PartCount);
The new MessageHelper.Create() method takes a params array of strings as argument.
Ea......
2008 Mar 23
18 of 35 | Distant Shores - A Visual Studio Color Scheme -
I created this color scheme a while ago but had not posted it yet. Distant Shores
is a low-contrast color scheme with a dark background.
I've been using it for a while now and it's fairly usable (particularly on a bright
screen); though it is a bit different than most of my other themes. It's (loosely)
based on the Stormy
Seashore color palette, with a few additions for contrast and provide basic coloring
to user types in C#.
Code:
XML:
As usual in most of my schemes, this one is using Dami......
2008 Feb 12
19 of 35 | BizTalk Send Adapters and Failures -
I've spent part of the weekend playing with some code for a BizTalk 2006 Send adapter,
and while looking at the failure handling code, remember something that always struck
me a bit odd about the model.
BizTalk supports a several different ways of implementing a send adapter, depending
on the complexity of the adapter and the capabilities it provides. An adapter can
made to handle a single message at a time (but with likely multiple messages in parallel),
or handle batches of messages. An adapter can also handle messages synchronously or
asynchronously.
Synchronous adapters are not really very desirable in general terms, unless the adapter
it......
2007 Dec 17
20 of 35 | Minor Update to PipelineTesting -
I've uploaded a new update to my PipelineTesting library, a tool for creating automated
tests for BizTalk Server 2006 pipelines and custom pipeline components. Read
more about PipelineTesting, and download the code here.
The only change on this version is that the IPipelineContext.GetEventStream() method
now returns a stub implementation BAM EventStream instead of returning null as previous
versions did. This makes it easier to execute pipelines that require access to BAM.
BizTalk
Server, PipelineTesting
...
2007 Dec 03
21 of 35 | What Irks Me About Visual DSLs -
There's a lot of talk about Domain Specific Languages lately. The exact definition
of what a DSL is, however, might change depending on who you ask. Microsoft itself
tends to favor significantly Visual
DSLs, that is, domain specific languages that are made of visual components
(as opposed to Text-based DSLs that are made of some kind of text driven representation).
Frankly, I don't expect MS to change their direction, nor am I sure it would be the
wisest decision given their target audience, but I do tend to favor text-based DSLs
myself, for several reasons:
Text-based DSLs work best during development. We have a significant amount......
2007 Nov 22
22 of 35 | Port VS2005 Color Schemes to VS2008 -
Visual Studio 2008 (Orcas) handles some of the Font and Colors settings differently
from VS2005. While Orcas can import .vssettings files generated its predecessor, there
are a couple of problems:
Custom colors for User Types and C# @" " strings don't get imported. This
is because the name of the settings in the exported files changed between versions.
For example, the setting for Delegates was named "User Types (Delegates)",
but it is now called "User Types(Delegates)" (notice the missing space!).
Visual Studio 2008 introduces a whole new set of settings for XAML. This seems like
a pretty needless thing to me, because all but three......
2007 Nov 14
23 of 35 | BAM EventStream in PipelineTesting -
Last night someone brought to my attention that the current versions of PipelineTesting always
return null from the IPipelineContext.GetEventStream() method.
This is expected to return an EventStream object
so that pipeline components can write to BAM, but I never had bothered looking it
up before.
I've now fixed this so that the property returns an EventStream-derived class that
simply swallows all calls to it silently, to avoid tying the library to having any
specific BAM infrastructure in place, and this will be included in the next version
of the library.
Is this good enough? Is there anyone who would prefer to have a way to override this......
24 of 35 | BasicHttpBinding with Transport Security -
This is just something to remind myself next time I need to implement a WCF service
using the BasicHttpBinding with transport-only security (SSL + client certificates)':
WCF expects that the "Require SSL" option in IIS is enabled.
If Metadata Exchange is needed, configure the MEX endpoint with a custom binding with
the right settings; otherwise the service won't start.
Remember to set httpsGetEnabled="true" option in the <serviceMetadata> service
behavior instead of the usual httpGetEnabled attribute.
WCF does not understand the "Accept Client Certificates" option in IIS. It treats
it the ......
2007 Nov 13
25 of 35 | Silverlight Xunit.net Test Runner -
A couple of people have asked if I could share the code for my experimental Xunit.net
silverlight v1.1 test runner. Actually, the stuff I did was fairly simple and not
very polished, but I'll should get someone else started on building a real runner
out of it
You can download the code here.
Some things to keep in mind:
The zip doesn't contain all the code. Only the silverlight specific parts:
The sample test HTML page and its JS scripts
The silverlight control XAML
The TestRunnerView, a Canvas derived class that implements the actual silverlight
control
This means you still need to go and ......
2007 Nov 12
26 of 35 | Desert Nights: A VS2005 Color Scheme -
This is my latest Visual Studio 2005 Color Scheme: Desert Nights. This one features
a dark background that isn't quite black (it has a slight hint towards brownish/greenish),
and colors that stand from the background but without being too bright (most of them,
at least).
Code:
XML:
I've been using this one for the past three or four weeks and I'm liking it quite
a bit so far, and it is certainly different from the ones I've made before. Download.
Color
Scheme, Visual
......
2007 Nov 01
27 of 35 | Bandwidth Usage -
My website usually has fairly low traffic, given that much of it (or this weblog,
for that matter) isn't all that well known and I host few big files. Normally, the
monthly bandwidth usage for winterdom.com is between 4.5 and 6 GB.
However, bandwidth usage during october jumped to 16.28 GB! That was a surprise, so
I started looking at what might have caused it. From my adsense stats and my usage
of Google Analytics, I knew that traffic had increased a bit during this last month
on the weblog, but not on the rest of the site, which is normal given that I don't
update it often and it is mostly used to host the downloads for my samples.
Also, the RSS subscriber base hasn't c......
2007 Oct 31
28 of 35 | Color Schemes in SQL 2005 Management Studio -
As many of you know, I spend time every now and then coming up with new color
schemes for Visual Studio 2005. It's fun, and having a good color scheme can make
all the difference in the world to your eyes when spending long times in front of
your screen writing code.
I use dark backgrounds, so it was always painful to switch to SQL Server 2005 Management
Studio to write SQL code, because I had not configured a custom color scheme there.
I also didn't want to have to spend more time doing so, particularly since Management
Studio has no Import/Export Settings wizard.
Enter VSColorsToSql
This is a simple utility I wrote last night that will port your current VS2005 Fonts......
2007 Oct 23
29 of 35 | Archiving Original Messages in BTS -
Siva Ram asks in a comment on a previous post:
"How to Archive/(copy to another location) the Source file as it is , Before the biztalk
picks up the file?"
I think what he's really asking is how he could archive an exact copy of the original
incoming message (possibly for regulatory compliance, auditing, or simply to provide
easier tracing of problems). This is a common question, and the truth is there are
several ways to approach this in BizTalk server.
Here are some options:
Double Hop: A fairly simple option is to do a double hop when processing
the incoming message. Instead of parsing and processing the message right away, receive
it through a pass-thru pipe......
30 of 35 | Custom PropPage in R2 Sample -
As promised,
here's a sample managed adapter implementing a custom adapter configuration dialog
for BizTalk Server 2006 R2. It isn't a fancy sample, just a new version of my /dev/null
adapter with a simple, custom dialog. It should be enough, however, to illustrate
the basic details needed to get you up and running quickly.
Here's a snapshot of the configuration dialog when invoked from the BizTalk Administration
Console:
Some things I discovered that complement my previous article on the topic:
COM Registration: The class implementing IPropertyPageFrame needs to be registered
with COM. However, you won't be able to use the "Register for COM interop" option
in......
2007 Oct 22
31 of 35 | Custom PropPages in Adapter Configuration -
OK, time to post some technical content again
If you've used BizTalk server 2004/2006, you've probably seen the configuration dialog
where you enter the adapter-specific settings on a send port or receive location.
Have you noticed how some adapters simply have a property grid with values, while
others have a full-blown set of custom property pages with custom dialogs? Ever wondered
why?
The
standard property-grid based settings dialog is provided by the BizTalk Adapter Framework
by default, all you need to do have your adapter's MgmtClass provide the proper XML
Schema (XSD) that defines the adapter options.
In a lot of ways this is very good, as it makes adding d......
2007 Oct 03
32 of 35 | BizTalk MVP + 1 -
I was just awarded for the second time as a BizTalk Server MVP .
Pretty cool, and thanks to Fernando Garcia and all the great people in the MVP program
and Marjan Kalantar and the rest of the BizTalk/CSD team for talking such good care
of us!
BizTalk
Server, MVP
...
2007 Sep 28
33 of 35 | SvcUtil Generated Config -
Scott
Seely seems to
object to my previous
comment on being careful about the defaults used by svcutil.exe. Scott goes on
to describe in detail how svcutil figures out what should get written in the default
configuration, which is pretty useful.
But, seems to me like Scott may have misunderstood my comment. Yes, I do know how
svcutil.exe works and even why it chooses the defaults it chooses. I'm not
arguing against it configuring default values (even for all binding properties, as
cumbersome as that can be). I'm arguing against the rationale of the default values
themselves, as they make little sense for a client side proxy.
Don't get me wrong, I fully agree with Scott'......
34 of 35 | WCF Tips -
My good friend Sam
Gentile pointed me to David Pallmann's set of WCF
tips. Lots of good stuff in there, and I found myself agreeing with most of the
stuff David brought up.
One that particularly resonated with me was Tip
#4 on default settings. One of my biggest gripes with svcutil.exe is that it generates
a default client-side proxy configuration that is fairly useless, because it initializes
all binding properties explicitly with values that are too small to be useful in many
cases. What's worse, you may not realize the consequences of this during initial testing
and may only notice the problem later on. In particular, message size and encoding
quotas have default values t......
2007 Sep 27
35 of 35 | BizTalk 2006 R2 Dev on MSDN -
BizTalk Server 2006 R2 Developer edition (RTM) is now (finally!) available on MSDN
downloads for MSDN subscribers. Downloading!
BizTalk
Server 2006 R2
...