Resharper 6.0 – Key features

I’ve posted a screencast that goes through the key features that make ReSharper an invaluable tool for developers on the MS platform.
Note: I recommend watching this video in HD Mode, full screen.
(Video: Watch this video on the post page)
Screencast Download Link:
High Definition (.mp4) (85MB)
Please leave questions/concerns in the comments!

Blog Post by: Michael Gerety

Encoded Multi Part Messages to SOAP adapter

I had one of those old/non conforming to the standards web service of kinds Ineeded to call.

The ones you really hate, and wish they’d just upgrade them to WCF… but hey thats 90% of integration, old rotten systems… so I persisted.

It did accept xml messages, however was very fussy as it seemed to employ the good old, no xml translator, the one that is more of a text base, string manipulation xml decoder, where if you send quite valid xml, it will fail because they didn’t support it.

This kind of set up is… sadly… quite common….

It would not handle xml tags that had no content, but had a closing tag.

EG: <salary currency=”en-AU”></salary>

It needed to have them encoded differently:

<salary currency=”en-AU”/>

Now both of these examples are valid xml, however good old string parser went the easy route and didn’t cater for an end tag.

The problem is that you can’t exactly tell biztalk to not put the end tag, it’s going to put xml, valid xml, and thats what it does….

Further more… it also complained about white space in my xml message…. ??? you say???

<salary currency=””><salary> <standout logoid=””1111″><standout>

The white space it didn’t like was between the tags, <salary>[— white space —]<standout>

Now how on earth do you cater for this?

A custom pipeline component to the rescue, just before it sends the message I would “FixUP” the xml by removing the end tags, and white space between tags, using my old favourite, c#.net .

So I go to the trouble of making a custom pipeline component, hook it up to a custom send pipeline, and then attach the pipeline to the send port.

BANG, nothing happens… it stil fails for the same reason.

At this point I’m a little annoyed, and more p’d off than i’d care to mention.

I spend the next hour trying to figure out why……

Firstly the web service is a SOAP web service, I have to use the SOAP adapter because it’s a multipart message, I check with Yossi. http://blog.sabratech.co.uk/2009/08/biztalk-wcf-adapter-and-multipart.html to discover that even if I went to WCF and fudged a wcf-http port to work it would not make much difference.

I then try and pump the message out to the file system, using a send port in the orchestration. I get a message, with only the first part. It throws me for a second, then I realise that the FILE adapter does not support multi part messages. Weird, considering all messages are multi part messages, most with one part, but I prevail.

How do I see what is going to the adapter? I really need to see the message, I mean I have tested by component, and it is good, it works and does the trick, its .net, so I of course have a .TEST project to test it…

How… Ah..ha… You can stop the send port, not unenlist it, but stop it, the message will still go to the port however sit there waiting for you.

I can then see the message from the admin console, ALL parts of the message, a much better way to debug messages BTW, I notice the message part has been encoded, the multi part message takes two strings, the second of which is my xml message. So the message is wrapped in a <string> tag, with the contents…. no longer in XML format, they are html encoded. My lovely <salary> tag is now a horrid, & lt;Salary& gt; the xml is hardly readable…. I cringe, it’s destroyed my lovely xml…

Now I can see what’s going on, before it even gets to my custom pipeline, my xml is encoded, therefor my pipeline which is looking for xml, does not find any, and does not work…. UGH!

Interestingly when I assign the value of the xml in the outbound message, I do it from a message assignment shape, I have the xml in my grasp…

I do a cheeky thing in BizTalk, turn the message into an xml document, which I can turn into text. Luckily I wrote the pipeline by using a separate class for the tagging and white space cleaning. So I can call the methods from the message assignment shape, and I process the xml, clean and massage it.

I then set the xml document back up by loading the NEW xml into to, and then set the value of the parameter of the outbound message to the xmldocument.

The message is now encoded before it goes to the port. I send the message to the port and wolla, response message, in xml… that tells me it worked.

This is a bit of a hack and a workaround, it does work, however I would have preferred the pipeline to work.

I do note with interest that only the SOAP adapter is able to process this multipart message, because it’s an OLD soap web service, I did hear of talk of scrapping the SOAP adapter, however multipart messages are VERY common on soap web services, and this would be foolish to scrap it. I’d like to see support for multi part messages in the WCF set of adapters, with more backwards compatible support, so I don’t have to use an out dated SOAP adapter.

Export Powershell Objects to Xml – in a more natural format than Export-CliXml

Export Powershell Objects to Xml – in a more natural format than Export-CliXml

Introduction On a recent project I was calling a PowerShell script and wanted to return Xml from the script so that I could iterate on an object using Linq to Xml. I investigated options available for exporting an object in Powershell to Xml and looked at some built-in cmdlets like Export-CliXml: http://technet.microsoft.com/en-us/library/dd347657.aspx, but I could […]
Blog Post by: clineer

BizTalk 360 – Deployment Options

Today when we were showing the demo of BizTalk 360 to some potential customers, the question was raised about the various deployment choices for BizTalk 360. This is one of the common questions we have seen recently on our customer engagements. Here are the choices

Scenario 1:

You can install BizTalk 360 in one of the BizTalk Server environments (production, non-production etc) and configure all the environments using the administration module. The user can then access BizTalk 360 via a url (something like http://production/biztalk360) and access all the environments configured. The super user will have the ability to assign various fine grained authorization to the users for various environments using the user management module.

Scenario #2

This is another common scenario, where customers don’t want to install any third party products like BizTalk 360 directly on their production environment. BizTalk 360 supports this scenario by allowing customers to install BizTalk 360 on a standalone server and point to various environments. In this case customers need to install BizTalk administration components (only) in the standalone server.

Nandri!

Saravana Kumar

Social:
Join us on @biztalk360 | http://facebook.com/biztalk360 | http://getsatisfaction.com/biztalk360

BizTalk 360 – Start/Stop at Application Level

We released BizTalk 360 with lot of features targeted toward supporting and monitoring controlled BizTalk environments like production, test etc. After the release, our basic principle in the direction/road map of the product is mainly driven by customer request. That’s the result you are seeing on the latest addition of alert/notification functionality added to V2, fixing of clustered host instance behaviour etc.

One of the latest addition in the same line is the ability to start and stop the whole application. In previous versions of BizTalk 360 (prior to 1.0.206), there was no ability to start and stop entire application, user need to click "Select all checkbox" on each artifacts (receive location, send ports, etc) tab and do a bulk start. One of our potential customer wants to give the tool to some third party support company and they don’t want them messing around with individual artifacts and also they wanted to keep starting and stopping application simple.

To address the customer request, we added Start/Stop functionality at application level. Here are the screen shots

Nandri!

Saravana Kumar
Social:
Join us on @biztalk360 | http://facebook.com/biztalk360 | http://getsatisfaction.com/biztalk360

The SQL Server OVER Clause

One useful feature in SQL Server is something called the OVER clause. The OVER clause has been available since SQL Server 2005 and allows you to perform window functions over a set of data. SQL Server provides two types of window functions: aggregate window functions and ranking window functions. I will explain what aggregate […]
Blog Post by: Dylan Barrett

BizTalk 360 now handles clustered BizTalk Host Instances correctly

We need to admit this is one of the thing we didn’t pay enough attention in the previous versions of BizTalk 360. Until last week when one of our potential clients raised the issue and told us its a show stopper. We reacted quickly and can confirm from version 1.0.206 and above all the issues related to clustered host instances are fixed.

Background:
In majority of the cases you don’t need to cluster the BizTalk host instances. BizTalk group concept having multiple BizTalk servers and the internal mechanism of circulating the load is sufficient to make the host highly available. All you need to do is, create the host instances in multiple servers. But there are certain adapter which are not capable of running in multiple servers, example FTP, POP3 etc. due to the nature of these adapters. In those case you need to configure the host instances running these adapter using Windows clustering.

The first challenge to fix this issue was to setup the environment, our fail over cluster configuration looks as shown below.

 

Fix 1: Host Instance will have an icon to represent their clustered status

It’s important to differentiate the normal host instance from the clustered ones. So, we introduce small icons in the grid showing they are clustered host instance.

Fix 2: Dashboards reflect the status correctly

In the previous versions (without proper cluster instance handling) the above screen would have shown RED for host instances, since there is host instance in stopped state (refer to previous image). But now the dashboard will show the correct status GREEN understanding the host instances and their cluster behaviour.

Fix 3: Starting/Stopping clustered host instance

Starting and stopping of clustered host instances behaves differently to normal ones. In a normal situation you should be able to start and stop host instances individually without any dependency. But for a clustered host instance case, there is a patter.

1. You can stop the clustered host instance without any issue

2. Starting a host instance will bring the cluster group online rather than starting the host instance standalone.

3. If you try to start the host instance on a failover server (passive server), the behaviour will be same, it will bring the cluster group online rather than trying to start the wrong host instance.

If you want to start the host instance on a passive server, you need to do it via the "Failover Cluster Manager".

Nandri!
Saravana Kumar

Social:
Join us on @biztalk360 | http://facebook.com/biztalk360 | http://getsatisfaction.com/biztalk360