Wednesday, December 31, 2008

BizTalk 2009 Beta - Code Migration Process

After going through the process of migrating a BizTalk 2006 R1 solution to BizTalk Server 2009 (beta) I am happy to report that the process is a painless endeavor. The process itself reminds me a lot of the BizTalk 2004 - 2006 migration process.

Scenario
My dev box has a clean install of BizTalk Server 2009 and did not previously have Visual Studio.Net 2005 on it. Therefore, I needed to go through the Code Conversion process. I used a BizTalk 2006 project from a previous blog post. The project was not all that complex but it did include the typical artifacts that you would find in a BizTalk solution. This includes:
  • The BizTalk Solution file
  • Orchestration Project
  • MapsAndSchema Project
  • Pipeline Project
  • .Net Helper Project
  • Binding Files (more on this later)

Process
As you can see the DeliveryNotification sln file is a Visual Studio '8' (or VS.net 2005) file.

Double clicking on this file will launch Visual Studio 2008 and the Code Conversion Wizard

After clicking on "Next" you will be prompted with a dialog box that lists all of the related projects that will get migrated.

Success! Enable the check box to see the conversion report.


The results of the conversion process are documented below and the project listings are on the right hand side. Note that BizTalk projects currently have a "C#" icon. I do expect this to change as this is Beta. The underlying reason for this is that BizTalk projects are now considered to be 'flavours' of C# projects as discussed in this post.

So what was converted?
Here is a screenshot of what my BizTalk artifacts look like after the conversion process. By observing the Date modified timestamps, you get a sense of what was changed.

After taking a closer look, you will find that the actual BizTalk artifacts(schemas, orchestrations, maps etc) are not actually getting modified. Rather, it is the Visual Studio artifacts(solution file, project file, user settings) that are being modified.

I look at this as good news/bad news. Good in the sense that you will have a lot confidence that nothing will get broken when converting code. Bad in the sense that this means little has changed(from a development perspective) between BizTalk Server 2006 Rx and BizTalk Server 2009


Post Conversion
So the conversion process worked - now what? When I tried to build and deploy the solution I had no issues:


When I launched the BizTalk Admin Console, I was pleased to see that my Application Container and related artifacts were created during my deployment from VS.net 2008. Since this was my initial deploy on a clean dev box, I didn't have any bindings for the orchestration, receive locations or send ports.

I decided to import an existing binding file from my BizTalk Server 2006 solution.

The binding file import was successful!

I did discover an issue when I tried to start up the application from the tree view on the left hand side:

I could not Start, Stop or Configure the application. I was able to manually start the send ports, the orchestration and enable the receive locations. Or I could click on "Applications" folder and start the application from the "main frame". Both of these actions did start the application and turned the application's icon green.

I checked the Microsoft Connect site and saw that Ben Cline had already reported this as a bug. I added some of my own comments so Microsoft is aware of it and I would expect that it will get resolved for the next release.


Once the application was online, I processed some files to ensure that the application was functioning correctly and that it was.

Conclusion
While my project was not all that complex, I was happy with the migration experience and feel pretty confident in moving my projects from BizTalk 2006 to BizTalk 2009.

Saturday, December 20, 2008

BizTalk 2009 Beta - First Look

On December 8th, 2008 I created a blog post indicating that the BizTalk 2009 Beta had gone public. Since then I have had a chance download the bits and play around with this latest release from Redmond.
I consider this release to be an evolutionary release, not an revolutionary release. One of the main purposes of this release is to align with Microsoft's latest technology platform offerings. This includes: Windows Server 2008, SQL Server 2008 and Visual Studio 2008. In addition to those additions, you will also see tight integration with Team Foundation Server, ESB Guidance 2.0, greater Unit Testing and debugging abilities and additional UDDI support.

I have taken some screen shots of the installation experience and will provide some relevant comments inline. The install was done on a Windows Vista dev PC, using SQL Server 2008 Developer edition and Visual Studio 2008 Professional Edition.

Also note that this is Beta code so there are bound to be some changes to the final cut of the code.


The Prerequisite component installation remains a pain-less and efficient endeavor. Who remembers the pain that gathering all of the BizTalk Server 2004 prerequisites inflicted?
Something you may notice missing is Human Workflow Services (HWS). This feature was previously deprecated in BizTalk Server 2006 so it does not come as too much of a surprise that it is M.I.A.

For continuous integration enthusiasts, the highlighted "Project Build Component" should be of interest. It allows you to build BizTalk projects on a server that does not have an installation of Visual Studio on it. For instance, within my organization we use CruiseControl.net to poll our VSS repository looking for any changes to BizTalk projects. This occurs on a dedicated Build Server where we have an installation of VS.Net. Using this feature would allow us to reduce a VS.Net license. BizTalk is a first class citizen in MSBuild. So everything that you can do in VS.Net (with respect to build and deploy) you can do in MSBuild.

Below is the standard configuration screen that we are use to seeing with BizTalk Server 2006 Rx. Not too much has changed with the exception of MSMQT. This was another feature that was deprecated in BizTalk 2006. Microsoft has been pretty adamant about getting off of MSMQT as there were plans for its dismissal

Success...and on the first attempt no less!

Since BizTalk was installed on a machine with VS.Net already on it, you can see that the BizTalk templates have now been installed which allows developers to create and modify BizTalk Projects.




So as I have previously stated, this is an evolutionary release so you will not find many actual BizTalk changes in Visual Studio. This includes:
  • No new BizTalk Shapes
  • No new Functoids
  • The Expression Editor still is not re-sizable - This debate never gets old :-)

Something that you will notice different is that the "Development and Deployment" VS configurations are gone! You will now only have Debug and Release which aligns better with what .Net programmers are use to. It also simplifies some of the automated Build and Deploy configurations, when dealing with .Net Helper assemblies.

I had the opportunity to participate in a Microsoft BizTalk 2009 Brown Bag session and have made some ad-hoc notes which I am happy to share with you (Non-NDA):

  • BizTalk Project System – New Project System is implemented as a Flavor of C# Project System. This should allow for smoother transitions for future versions of Visual Studio. The BizTalk project is now a first class citizen in Visual Studio.
  • BizTalk Project can contain any item (not just BizTalk artifacts). This means that you can have a C# class in your BizTalk project and do not have to create a separate .Net project that BizTalk would call. Note there are a few minor issues with adding a new class in the current build of this Beta but it will be fixed.
  • Debug and Release as default configurations as opposed to Development and Deployment
  • Add Web Reference is not directly available on Project anymore. Need to access it through “Add Service Reference” dialog box.
  • Migrated all BizTalk project and item templates to the new style (.vstemplate)
  • Old style templates are still supported.
  • Full Visual Studio integration for BizTalk project migrations. This integration supports both BizTalk 2006 (R1 and R2) to 2009 migrations. ( I plan on creating a separate blog post that deals specifically with migration).
  • During migration, only .sln, btproj and btproj.user files are backed up as there are no fundamental changes to remaining artifacts.
  • Support for conversion of projects checked into Source Code Control.
  • Implemented entire BizTalk build system using MSBUILD.
  • Support for incremental builds (only re-build what you need to rebuild - this will reduce some of the build times for minor changes to your project).
  • Refactored all compilers to eliminate any VS Dependencies – can compile BizTalk projects without VS – Project Build Component in BizTalk install (for build server).
  • Map, Schema(validate against sample instances) and Pipeline(programmatically) unit tests can now be executed from within Visual Studio.
  • Currently you cannot debug a map that has an extension object – such as calling an external assembly – will be addressed in a future release. You can unit test it though.
  • Currently(2009 beta) multi source maps cannot be united tested
  • DEBUG and TRACE constants will work for c# classes in BizTalk projects.

Thursday, December 18, 2008

Azure Services Kit - Exercise 2 (IntroServiceBus)

I have recently been evaluating the Azure Services Kit and ran across an error that I figured I would post in case anyone is looking for a solution.

The error occurs in Exercise #2 when trying to initialize the Server project to listen for requests through the .Net Services Service Bus. I would imagine that this error applies more so to IIS and WCF than the actual Service Bus.

Error
System.ServiceModel.AddressAccessDeniedException was unhandled Message="HTTP could not register URL http://+:80/services/My-Solution-Name/EchoService/. Your process does not have access rights to this namespace (see http://go.microsoft.com/fwlink/?LinkId=70353 for details)." Source="System.ServiceModel" StackTrace: at System.ServiceModel.Channels.SharedHttpTransportManager.OnOpen() at System.ServiceModel.Channels.TransportManager.Open(TransportChannelListener channelListener) at System.ServiceModel.Channels.TransportManagerContainer.Open(SelectTransportManagersCallback selectTransportManagerCallback) at System.ServiceModel.Channels.TransportChannelListener.OnOpen(TimeSpan timeout) at System.ServiceModel.Channels.HttpChannelListener.OnOpen(TimeSpan timeout) at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) at System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout) at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) at System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout) at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) at System.ServiceModel.Channels.CommunicationObject.Open() at Service.Program.Main() in D:\Development\AzureServicesKit\Labs\IntroServiceBus\Ex02-BindingsConnectionModesSample\begin\Service\Program.cs:line 34 at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart() InnerException: System.Net.HttpListenerException Message="Access is denied" Source="System" ErrorCode=5 NativeErrorCode=5 StackTrace: at System.Net.HttpListener.AddAll() at System.Net.HttpListener.Start() at System.ServiceModel.Channels.SharedHttpTransportManager.OnOpen() InnerException:

Solution
The solution itself can be found in the link that is provided ( http://go.microsoft.com/fwlink/?LinkId=70353) ...I know what a bonus; an error message that actually points you in the right direction to a solution.

The description of the error is not all that useful, but does cover some scenarios:
Using Windows Communication Foundation (WCF) over HTTP either requires the use of a host, such as Internet Information Services (IIS), or manual configuration of the HTTP settings through the HTTP Server API. This document describes manually configuring WCF when using HTTP and HTTPS.

In order to actually solve the problem, I ran this command on my Vista machine:

netsh http add urlacl url=http://+:80/services/My-Solution-Name/EchoService/ user=domain\user

Note:
  • "My-Solution-Name" is where I inserted my Azure Solution name. You would enter yours in this place holder.
  • If your machine is not part of a Domain, just use the local machine name instead of Domain

Now that I have some spare time, I plan on spending some more time with Azure and more specifically .Net Services. Hopefully, I will have some interesting posts regarding these technologies.

Wednesday, December 10, 2008

Canadian TechDays - Virtualization

I spent my day at the Microsoft Canada TechDays conference. There were no Connected Systems related sessions going on so I figured that I would sit in on a few sessions that I knew very little about; virtualization.

From what I got out of these sessions is that Microsoft has made some great progress in this area. No longer can virtualization only be used on servers with non-mission critical applications. In fact under the right scenarios; servers capable of running VMBus and "Designed for Windows" hardware there is suppose to be very little overhead involved in running a guest Virtual Machine on a Windows 2008 Host server.

(image credit)

With virtualization creeping to the top of many CIO's lists I wanted to learn more about the topic so that I can intelligently speak about the subject when it comes time to discussing virtualizing BizTalk servers.

A document that I am aware of but have not had a chance to read yet is the BizTalk 2006 R2 Hyper-V Guide written by Ewan Fairweather and Clint Huffman. After sitting in the sessions and learning about the capabilities of Hyper V and Windows 2008, reading this document has risen towards the top of my "to-do" list.

On a lighter side, I must give the Microsoft Marketing folks some credit when it comes to the swag that they handed out. While the 160 gb portable hard drive that they handed out at PDC was nice, it was no where near as creative as what they handed out today.



And for my American friends that black piece of clothing is called a "tuque" not a "hat". :-)



Monday, December 8, 2008

BizTalk Server 2009 - Public Beta now available

The bits are now available for download from Microsoft Connect.

What can you expect?

(from Microsoft Connect site)

BizTalk Server 2009 represents the next release in Microsoft’s long-term strategy to enable the connected enterprise. BizTalk Server 2009 enhances enterprise connectivity with broad industry support of WS* protocols, the edge via Microsoft BizTalk RFID, and business partners though EDI.
What’s new in BizTalk Server 2009?

Simplify Interoperability

  • Support for .NET Framework 3.5 SP1 and Visual Studio 2008 SP1 - take advantages of the latest developer tools.
  • Support for Windows Server 2008 and SQL Server 2008 – full support of Hyper-V, and increased performance and scale.

Extend To The Edge

  • EDI - enhanced out of the box support for the most commonly used EDI schema and trading partner management tools.
  • Simplify development of mobile applications that expose relevant, real-time business information (RFID Mobile).

Enhance Productivity

  • ALM – new support is provided for Team Foundation Server (TFS), allowing development teams to leverage the integrated source control, bug tracking, support for team development, Project Server integration and support for automating builds via MSBuild.
  • Enhanced Developer Productivity – improved underlying project system enhances debugging support for artifacts, pipeline components and orchestrations, and enables support for unit testing.

Support

This beta is community supported. The TechNet forums will be the primary place for support - http://forums.microsoft.com/TechNet/ShowForum.aspx?ForumID=1470&SiteID=17.

  • This beta is for evaluation purposes only. It is not supported in a live operating environment.
  • ESB Guidance 2.0 CTP is also now available at - http://msdn.microsoft.com/esb

Come back to this blog for more information regarding BizTalk Server 2009 - Public Beta