BizTalk Server 2006: Deployment Speed Rocks!

BizTalk Server 2006: Deployment Speed Rocks!

This is one of those good news, great news posts!

Yesterday I found myself needing to make a vital change to one of the maps running in our "Invoice Processing" BizTalk application but I couldn't find a significant window of time when the application wouldn't be processing during normal working hours. It was the end of the month and our accounting folks were invoicing at their end-of-the-month fast and furious pace. I've never redeployed an application during our normal working hours before but the map was outputting XML that didn't quite meet our customer's specification perfectly and we were getting backed up, so I had to take a chance. I had already tested the "fix" on my development machine and staging server so I stopped the live BizTalk application, deleted it, uninstalled the .msi, imported the new .msi, installed the .msi, imported the production bindings (just to make sure), restarted the application. All in 39 seconds!

NO, this is not the "recommended approach" and I'd certainly never advocate this unless absolutely necessary, but with BizTalk Server 2006 you can "deploy on the fly"!

Technorati Tags: ,

"New transaction cannot enlist in the specified transaction coordinator"

"New transaction cannot enlist in the specified transaction coordinator"

“New transaction cannot enlist in the specified transaction coordinator”

You can encounter same error when you using SQL Adapter.
The reason is simple. You need to check two things to use DTC.

1. Configure DTC both App computer and SQL computer.
2. Make sure each computer can actually ping each other by host name.
(You can simply add host name to \System32\drivers\etc\hosts.)

There are detailed work around I found on newsgroup.

New RSS Feed Address for my BizTalk Blog

New RSS Feed Address for my BizTalk Blog

If you are reading this post through an RSS Reader (like Newsgator, Yahoo, RssReader, etc) please update your feed address.



I have moved all my content to my new blog site at:


http://www.biztalkgurus.com/blogs/biztalk/



The new RSS feed is located at:
http://www.biztalkgurus.com/blogs/biztalk/rss.aspx



I will continue to post to both locations but will phase out GeeksWithBlogs at some point.



I have also set up a new Syndicated Blog Site. It syndicates over 75 BizTalk related blogs all in one location. I’ll be publishing the opml file shortly so anyone can easily add all the RSS feeds to your favorite reader.



The syndicated blog is located at


http://www.biztalkgurus.com/blogs/biztalksyn/



Or via RSS at


http://www.biztalkgurus.com/blogs/biztalksyn/rss.aspx



It is important to note that all syndicated content is property of the original blog owner.



Oh, it is also possible to search the aggregated blogs. It’ll search over 1000 archived BizTalk related blog posts. Give it a try: http://www.biztalkgurus.com/blogs/


<o:p

Microsoft Certified Techology Specialist – Biztalk® Server 2006: Custom Applications + Rant

Microsoft Certified Techology Specialist – Biztalk® Server 2006: Custom Applications + Rant

I passed exam 70-235 today.  The thing that stuck out most in my head about the exam was that it wasn’t particularly well written.  Back in my Uni days I did a subject in exam analysis.  I was thinking back to some of the things covered in that course as I did the BizTalk exam.  In particular I remembered that all the choices should be believable and none of the choices should stick out from the others or be absurd.  There were also things like checking to see if a questions was too easy (too many people got it right) or too hard.  There were heaps more metrics and calculations that you perform on the responses to see if your exam is valid and that it is indeed measuring what it is supposed to measure.


Anyway I got to thinking that the BTS exam was not properly analysed as many options were absurd, questions were not clear and wording was often awkward.


What is the purpose of the beta exams if MS does not perform this type of analysis?


Whenever I ask someone involved Microsoft training and certification why they don’t do things like this properly, they say it is beacuse they don’t have the resources.  I think “Why not?“.  You have the resources to render entire worlds in games but you can put together a decent exam (or course for that matter – don’t get me started on their SharePoint 2003 offerings)


Anyway if you are interested in learning more about exam analysis I found this document  Of course there is always plenty on wikipedia, for example http://en.wikipedia.org/wiki/Test_%28student_assessment%29 and http://en.wikipedia.org/wiki/Item_response_theory


I doubt MS take it to this extent – but they should. 

 

New Methods in XmlReader 2.0

New Methods in XmlReader 2.0

As you might have guessed it I work on a lot in the XML namespace of .NET and I’m finally starting to use some of the new XmlReader features.  This post will go over some of them here.  And remember a wise man once said that everything can be solved with one more layer of abstraction.  These new features are nothing more than an encapsulation of code that the major of us have written thousands of times before but its all about productivity.  Why just today I was at a meeting going over some change requests and noticed that n new features were being added and schedule and budget remained constant.  🙂

.ReadToFollowing(string)  This method will forwards the cursor and returns a true once the conditions of the XmlNodeType.Element and Name equals your parameter.  This is very useful for crawling through large files where you only require a small amount of data from.

.ReadToNextSibling(string)  This method is great for splitting out smaller Xml messages that are inside of a larger schema since it will return true once the next sequential sibling is matched.  Example is here:

do{

//do your stuff...

}while(reader.ReadToNextSibling("foo"));

I use this one often in doing my own disassembly in helper classes.

.ReadSubTree() This method actually returns a XmlReader with limited scope of the subtree.  It does this by the use of an internal class called the XmlSubTreeReader which basically uses a reader to .MoveToElement() until the initial depth of that subtree has been met.  This saves me heaps of time instead of my usual mess of climbing down into each subtree manually.  I’ve always thought that writing code that read Xml was never elegant since Xml is so flexible.  Something had to give.

.ReadElementContentAsXxx() Now there are a bunch of these methods one for each type (doubles, int32s, strings, etc.)  and they are great because we no longer have to cast the value out of the XmlReader.  Each different method has an underlying class that specifically handles extracting the contents out of a Node with casting which can be expensive.

.Create() This is probably my favorite one.  So how many times have we called XmlReader reader = new XmlReader();?  Well now the Xml team has taken a lesson from the Enterprise Library folks in giving us a Factory Pattern for creating new instances of an XmlReader.  XmlReader reader = XmlReader.Create() several overloads exist for this.  So much easier than before.  Love the factory pattern.

Now this is just a small amount of what changed in the XML namespace in 2.0.  Overall performance has improved 20-30% on average (especially with compile XSLT).  These are also were BizTalk 2006 has picked up most of its performance gains over its predecessors.  Also its worth reading this by Aaron Skonnard on the new features of XML 2.0.

Zombies in Biztalk 2006

Zombies in Biztalk 2006

You are familiar with the Zombie instances in Biztalk 2004.  For a background
on zombies
try these articles
 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/bts_2004wp/html/956fd4cb-aacc-43ee-99b6-f6137a5a2914.asp

http://blogs.msdn.com/biztalk_core_engine/archive/2004/06/30/169430.aspx

Zombies instances are created in Biztalk 2006 also under similar Sequencial Convoy
scenarios. The error description is different.. “The instance completed
without consuming all of its messages. The instance and its unconsumed messages have
been suspended.”

This time around you would think that failed message routing can be used to track
down these failed zombies. Unfortunately, these are not handled by the failed message
handling mechanism. Zombies are suspended as (not resumable). This leaves us with
few options to handle them.. mostly older Biztalk 2004 style WMI event handlers and
so forth

here is one from Darren Jefferd

http://blogs.msdn.com/darrenj/archive/2004/03/30/104135