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

Thursday, November 6, 2008

BizTalk Hosted Web Service - Error CS2001

The project that I am currently on has an Orchestration that is exposed as a Web Service. This is running on Windows 2003, so we have created an app pool and assigned the BizTalk Isolated Host Instance user to this app pool's identity.


We just migrated our app to a pre-prod environment and were having some troubles connecting the client application to the BizTalk exposed web service. There were no errors in the event viewer on the BizTalk server, but there was in the client application's event viewer.


Here is the error:
Problem while generating request for waiting records: Server was unable to process request. ---> Unable to generate a temporary class (result=1).
error CS2001: Source file 'C:\WINDOWS\TEMP\hgz0bwpr.0.cs' could not be found
error CS2008: No inputs specified



There are a fair amount of CS2001 and CS2008 errors documented on the web, but I figured I would add this one to highlight that the error occurs on the client machine, not the host server.


How did I fix it?
I provided the BizTalk Isolated Host Instance user with the following permissions on the C:\Windows\temp folder:
  • Read & Execute

  • List Folder Contents

  • Read

Also note that this machine is internal to our network so if your machine is externally facing, you may want to further restrict some permissions.

Sunday, November 2, 2008

PDC Day 4 - More time spent in the Cloud

On the 4th day of PDC I spent more time in the Cloud learning about some architectural scenarios that the Cloud is capable of supporting.

As part of the PDC Symposium series, I attended Gianpaolo Carraro's session called "Head in the Cloud, Feet on the Ground". The objective of this session was to further investigate the Architectural challenges and opportunities in the cloud.

I found this session to be really helpful as so much of the other sessions has been about the technical bits that makes the Cloud technology "cool". This session focused on decisions that an Architect or even CIO may face when thinking about what applications belong in the cloud and which applications may be better hosted on premise. On premise meaning locally in your organization.

He also attacked this subject from two perspectives:
  1. Corporate IT perspective
  2. ISV Perspective

Since I live in Corporate IT I will spend more time in this area.

On Premise
Applications that are hosted locally tend to have more control than those in the cloud. Think of this more in terms of a custom application versus an application that runs in the cloud like Salesforce. If you have a custom built application, then your organization controls the feature set and have more agility when making a change as less people are involved. A challenge with this approach is that you have very little economy of scale as only your organization can extract value out of this application.

Cloud Applications
Conversely, an application that runs in the cloud has an opportunity for great economy of scale. Since many customers may be paying for this application, the savings are returned to the customers as collectively they are paying for the software to be developed. The challenge with this approach is that a company may need to alter an internal business process to align with the way that the application has been designed.

Conclusion
The end result came down to determine which applications are core to your business and provide a competitive advantage. These are the types of applications that are ideal candidates to be built and hosted internally. The commodity applications like Mail Services or Timesheet applications that are required to run your business, but not necessarily make your business more competitive are candidates for cloud based applications.

Best of both worlds
What I find extremely compelling is the idea of building an on premise service, yet leverage the capabilities of the cloud to expose this service to the world. This alleviates you from being overwhelmed with challenges related to Firewalls, NATs and security. I find this of even of greater value when you introduce several B2B partner scenarios. You don't need to be concerned with each of your partner's connectivity requirements. You let the .Net Service bus deal with those complexities.

Co-location
Also worth mentioning is a middle ground called Co-location or Managed Servers. This type of scenario may be ideal for you to build a custom application, but have it hosted by a 3rd party where you are not responsible for the on-going maintenance of the server that is hosting your application. For instance you may be a small or up and coming company that just does not want to make a large up front investment in infrastructure, but want to build an application and have it hosted in an external environment. This allows you to reduce the amount of up-front Capital Expenditures.

Looking Ahead
While some of this discussion is nothing earth shattering or ground breaking, I am curious to see how monitoring will evolve with these cloud based scenarios. For instance, currently with our on-premise applications we run Microsoft Operations Manager (MOM) and System Center Operations Manager (SCOM) to provide us with some visibility into the health of our applications. If in the future we decide that we want to host a WF workflow in the cloud, what type of tooling will be available to inform us of any issues that may be occurring? This is a scenario that Microsoft is definitely aware of so I will be keeping an eye open on what type of tooling will be available.

Thursday, October 30, 2008

PDC Day 2 - Windows 7



The big news on Day 2 at PDC was the first public sneak peak of Windows 7. Overall, I was pretty impressed with what I saw.

The first thing that stuck out at me is that Microsoft has dedicated a lot of effort to improve the usability of the operating system. Below is a list of features that I feel will greatly improve the usability of the Operating System.

Jump Lists
A feature called a "jump lists" is viewable in your task bar area. You know when you have 8 windows of IE or Word open and they stack up on top of each other? Well a jump list will provide some better visibility into what each of those windows contains.

Libraries
Do you have several folders where you store most of your content? For instance you may have some files you keep on a network drive, external drive or local drive. Do you hate having to search each of them independently(or having to search the entire drive)? The concept of the Library is to have the ability to aggregate your content. So if you need to do a search within your library, it will automatically search each of your work spaces that are configured in your library.

Homegroup
Homegroup is designed to make networking, and more specifically home networking, easier. The idea is that when you introduce a new computer to your home network, it shouldn't be difficult. The feature is also "smart" enough to seamlessly allow you to connect your work laptop to the network and take advantage of all of the file, network and printing capabilities without exposing sensitive data on your laptop to the remaining devices in your home network.

Pushing Content to a device
Are you in your home office but want to play some content on another machine? This feature will allow you to "Play media "xyz" on machine abc".

System Tray Notifications
Annoyed by those pop-ups that appear in you system tray? A new management tool exists that allows you more freedom to display the notifications that you want to display and suppress the ones that you do not want displayed.

Themes
Improved abilities to customize your Windows Themes. Also the ability to import/export themes to allow for sharing.

External Memory devices
Windows 7 supports Memory Stick - bit locker protection out of the box to ensure that if your memory stick gets into the hands of someone else that your data is encrypted.

VHD Support
New capabilities exist that allow you to create a VHD from Disk manager and also the ability to boot a Windows 7 vhd(directly) while maintaining state between reboots.

Dual Monitor Support
Ever RDP (remote desktop) into a PC/Server that has dual monitors? New capabilities exist that allow you to RDP into those machines and actually use both monitors.

User Account Control (UAC)
Tired of the "nag" messages that Vista gives you when you actually try to do something? A new UAC Slide control easily allows you to set the level of "nag" (or security) that you want applied.

Increased Touch Support
More monitor touch support is provided "out of the box" including the ability to use flicks inside of Internet Explorer. (Monitor must actually have touch capabilities).

Customized Shutdown
Have users that "accidentally" shut down machines when they should be logging off? New shutdown capabilities exist that allow you to customize the shutdown menu.

Other Features
Been waiting for the update to Paint or Wordpad? Wait no longer, as some improvements have been included in this release including Open XML support in Wordpad.

Windows 7 Principles
The goal of the Windows 7 team is to deliver an OS that:

  • Has a decreased Memory (RAM) footprint
  • Reduces the amount of Disk IO
  • Does not require excessive Battery power (think laptops)

while

  • Improving Speed(Faster boot/Device readiness)
  • Responsiveness (start menu, task bar)
  • Scale (Windows 7 supports up to 256 processors)
This release looks extremely promising, however don't expect it any time soon. The message that was given was "it will be ready when it is ready". This isn't such a bad thing as Microsoft is trying to deliver a solid product.

I encourage you to take a further look by viewing the actual web cast here.

PDC Day 3

The highlights for me on Day 3 include the .NET Services: Connectivity, Messaging, Events, and Discovery with the Service Bus and Dublin": Hosting and Managing Workflows and Services in Windows Application Server" sessions.

This blog post will provide a summary of both of these sessions and any additional 'tid-bits' that stuck out for me.

.NET Services: Connectivity, Messaging, Events, and Discovery with the Service Bus
Clemons Vasters presented the .Net Services session and did he ever do a good job. Not only is he extremely technically gifted, but he also has good presentation skills(this reminds me that I need to fill out a review for this session).

What are .Net Services
.Net Services is the successor of what was formerly called "BizTalk Services" and is one of the core components of the Azure platform. I would describe .Net Services as providing the abilities to host .Net Applications in the cloud (off-premise) and provide the ability to traverse firewalls by using Relay Bindings in messaging scenarios. For instance, if you have an on premise service that you would like to expose to the world but don't want to deal with some of the challenges that firewalls and security bring.

Dealing with firewalls is becoming a bigger and greater challenge as they are extremely pervasive. Also the use of NAT (Network Address Translation) devices makes it difficult to connect with publicly exposed services. This is the result of the IPV4 address supply being pretty much exhausted.

Service Bus Capabilities
.Net Services provide Service Bus capabilities in the cloud. What this essentially means is that you are able to are able to place a message on the wire and let the Service Bus look after directing that message to the appropriate subscriber. Subscriptions are handled by the Service Bus Naming System and are URI based.

Message Confidentiality
Transport security, in the form of SSL, is used for all connections. Microsoft has no need to look at the payload of your messages and claims that they do not. They welcome, and to an extent, encourage you to use Message level encryption if you have concerns as to whether or not your data is safe. A question that I repeatedly heard was, what type of audience do you expect to use these services as certain agencies would "never" trust Microsoft with their data. For instance, could the level of privacy that Microsoft is offering be sufficient enough to meet the criteria of Governments or Health Care organizations? Since .Net Services is still in CTP mode, I never did hear a real definitive answer to the question, but it is definitely something that is on Microsoft's radar.

Bindings
A very cool demo and discussion about the NetTCPRelayBindingHybrid was included in this presentation. The goal of this binding is to try to establish a direct peer to peer connection between the service consumer and service provider. You may be asking: how is this accomplished? At a (very) high level, A Relay connection is established that includes some NAT Probing. Microsoft will use the data that is obtained during this NAT Probing to form an educated guess on what NAT settings need to be used in order to establish a direct connection between the parties. If a direct connection can be established then the message payload will be sent directly to the destination system. If a direct connection cannot be established, then the Relay connection will be used to send data to the destination system via the .Net Service bus. Since .Net Services will use a "Pay as you go approach" the data, that is sent over the Relay connection, would be subject to the "cost" model.


Dublin": Hosting and Managing Workflows and Services in Windows Application Server"

This was my first real good look at the technology since the SDR sessions that were held at the MVP Global Summit in April. While I cannot discuss what I saw in April, I am able to say that the Dublin team has been doing some good work and has made progress.

When will Dublin be available
No public date was given other than "shortly" after Visual Studio 10 is released. This means we are probably looking at 1.5 - 2 years from now.

It just works
A slogan that is being used by the Connected Systems team. The idea behind this slogan is that in the past developers have had to either implement some features themselves or tweak their WCF/WF application in order to get it to work the way they want it to. In Dublin, more tooling and visibility into your WCF/WF applications is provided. The goal is that you design/build/test your application and after that ..."it just works".

Feature list (non-exhaustive)

  • Management Capabilities through IIS Manager snap in tool
  • Management APIs in the form of PowerShell command-lets
  • Hosting (Durable Time Service/Discovery Service)
  • Persistence (Scale-out and Reliability)
  • Monitoring(WCF and WF Tracking)
  • Messaging (Forwarding Service)
  • System Center Integration
  • Modeling Deployment via Quadrant

Management
The Management experience had some of the "look and feel" that you would find in BizTalk. The difference being is that there is not a new or separate tool. Additional functionality is "plugged" into IIS Manager. The rationale behind this decision was that Microsoft did not want to introduce a new tool that would also introduce another learning curve. By using IIS Manager, they could leverage an existing tool which should allow people to get up to speed quicker since they may already be familiar with the tool.

Model Deployment
They showed a cool demo where they were able to Model a workflow in the new Quadrant tool. They were then able to deploy the Model to the runtime. This demonstrated the vast integration between the technologies and perhaps gave us a real world glimpse into how we will develop and deploy software in the future.

Looking Ahead
There were a few things that I believe require some additional investigation. I do realize that Dublin is currently a CTP so it may just be a matter of having more time to include some of these features.

  • More details in IIS Manager surrounding instances. Having just a dialog box pop up indicating the amount of successful or failed instances is not quite enough information.
  • No Workflow Debug/Replay capabilities. What I am looking for here is a similar experience to the Orchestration Debugger that essentially allows you to replay a suspended (or successful) instance.
  • Provide a GUI for the forwarding service configuration. While Powershell is a great tool and I can see it being very useful, something like inputting an XPath statement into a GUI would be my preferred method. While I encourage scriptable deployments, making a change to this could be done on the fly and I may not always want to switch into a command based session to make a change like this
  • Unless I misunderstood, you have to deploy the installation 'package' on each node in your Dublin "group". There was no way to "push" the application to all nodes in a "group". While this is probably achievable via Powershell, it would be nice to have more visibility into other servers that may be running the same application.

So all in all , I have listed some pretty minor enhancements . Overall, I think the Dublin team has done some great work with the technology and remember that it is still early.

Wednesday, October 29, 2008

PDC Day 1

Monday, October 27th was the official start to the Microsoft 2008 PDC conference. The event is taking place at the Los Angeles Convention center in downtown LA. The conference has the feel of a "Microsoft" conference...which is a good thing. The conference is extremely well organized, there are plenty of people around to help you where you are going and there is plenty of caffeine.




PDC is the place to be for upcoming Technologies and "Sneak Peaks". On Monday, Chief Software Architect, Ray Ozzie unveiled a new Software + Services offering called Microsoft Azure. Azure allows you to "build new applications in the cloud - or use interoperable services that run on Microsoft infrastructure to extend and enhance your existing applications. "


Azure looks to have a LOT of potential. Here is a non-exhaustive list of some of the ways that people can take advantage of Azure:
  • Use a Relay service(.Net Services) that allows an on-premise service to connect with an external application without the hassle of mind numbing firewall configuration.
  • Use Azure in an ASP(Application Service Provider) model where you can expose a WCF + WF service and have it run in the "Cloud". A decision that many companies will need to make is whether to host services on premise in your own data center or leverage Microsoft's "pay as you go" model. Clearly for smaller organizations or organizations looking to avoid a large upfront infrastructure cost, this is an attractive solution.
  • Exposing structured, semi-structured or unstructured data to the world via SQL Server Services.
  • Leveraging Authentication and Social Networking capabilities of Live Services. Have data that you want to propagate through a Social Network or want to leverage Live Id authentication through your application? Using Live Services may provide you with a wack of opportunities to solve your challenges.
  • Leveraging other Microsoft Cloud applications like Sharepoint, Exchange and Dynamics.

I think that there are going to be endless opportunities with this platform and highly recommend that you learn more by visiting http://www.azure.com/.

Personally, I am really interested in the .Net Services and more specifically the new relay service possibilities. I definitely plan on learning more about Azure and .Net Services specifically.

Wednesday, October 22, 2008

Book Review: Microsoft.Net Framework 3.5 Windows Communication Foundation Self Paced Training Kit

I have recently read the Microsoft.Net Framework 3.5 Windows Communication Foundation Self Paced Training Kit book and figured I would post a review of it for anyone debating purchasing this book.



Everyone has opinions about books and definitely technical books. I am going to try to stay away from opinions as much as possible, focus on the features of the book and what you can expect when reading it.

This book has LOTS of content, which isn't always a great thing but when you get a wide variety of content it adds a lot of value. When I say content, I am referring to all of the features that you will find in every chapter in the book. This includes:

  • Real World Sections - Real world scenarios are discussed that are relevant to the chapter that you are currently studying. The author will usually look back upon some of their scenarios and experiences to provide some insight into the topic that is currently being discussed.
  • Chapter Objectives - How this chapter is applicable to the exam.
  • Quick Checks - a mid chapter check-point to empathize a point or to test you on a recently discussed topic.
  • Labs - that include before and after solutions for you to work on. Step by step instructions are included.
  • Exam Tips
  • Lesson Summary - Chapters are broken down into Lessons to break the information into manageable chunks.
  • Lesson Review (Q and A) - At the end of the Lesson you are presented with some relevant questions regarding the section you just read. The answers are provided at the back of the book.
  • Chapter Review - At the end of the chapter, some further practice is recommended to enforce what you previously studied.
  • Chapter Summary
  • Key Terms
  • Case Scenarios - The Authors give you a hypothetical situation that is relevant to the chapter that you just read. You then think about the problem and how you would solve it. They provide you with their answers at the back of the book which allows you to compare your notes to theirs.
  • Suggested Practices - Additional information or resources that are applicable to the chapter just read. These resources include MSDN web casts which may be provided on the CD that comes with the book or a link to an online resource.
  • Practice Tests
  • Sample Code - This book provides sample code in both VB.Net and C# so no matter your (.Net) language of choice you will find suitable examples.

The book is very comprehensive with topics that include:

  • Contracts
  • Exposing Services
  • Deploying Services
  • Consuming Services
  • Configuration
  • Instrumentation
  • Infrastructure Security
  • User-Level Security
  • "When simple isn't sufficient"
  • Sessions and Instancing
  • Transactional Services
  • Concurrency

I really enjoyed the Instrumentation chapter, perhaps because I learned quite a bit from that chapter. It discusses how to trace your WCF services(basic and end to end), Extensibility and Monitoring your WCF services. While the ABC's (Address, Binding, Contracts) of WCF are the most talked about features of WCF, I thought the authors did a a good job of the "Operations" side of WCF.

Who this book is for

In my opinion, I think this book is ideal for someone who has some good experience with WCF that perhaps has not explored all of the features of WCF. This is definitely not the book you start with, but rather a book where you can re-affirm what you do know and get some exposure to what you may have missed or lack in experience.

Do I recommend the book

Yes, if you plan on using it for the purposes I have previously stated. The book is well-written, engaging and interesting. It is definitely not a book that you struggle to get through. As already mentioned there is so much content that whether you are looking for real world scenarios, exam tips, practice questions or labs you are bound to find value in this book.

Additional WCF Resources

Prior to reading this book I enjoyed the Windows Communication Foundation Unleashed book and recommend watching Michele Leroux Bustamante's web-cast series. She also has a book but I haven't read it so can't comment on it.

Tuesday, October 21, 2008

Business Rules Engine (BRE) Customer Survey

Do you use BRE? Do you have any feedback that you think the product team could benefit from?

If you answered yes to either of these questions, I suggest that you fill out the following survey. The results of the survey(collectively) may have an impact on the next version of the Connected Systems - Rules engine.

Thursday, October 16, 2008

PAL is still a good friend of mine

A new colleague of mine was experiencing some issues with performance in our BizTalk test environment. They hadn't heard of PAL before so I gave them a quick walk through. When I launched the PAL site I noticed that Clint Huffman had recently updated his tool.

The current version of PAL is 1.3.4.1, when I initially blogged about PAL the version that I was running was 1.1.8.

The tool's purpose has remained unchanged. PAL continues to provide empirical data based upon defined Performance Counters that are related to your Product(s). Green/Yellow/Red indicators are used to tell you when your counters are "Safe/Warning/Critical".

From looking at the GUI and the feature's list, here are some of the changes that stuck out for me. This is a non-exhaustive list(some points copied from official site):
  • The ID Process (PID) for each of the BizTalk 2006 host instances has been added to make it easier to identify them. A side note is that if you want to see the name of the BizTalk host as long as you know the PID you can execute the following from a command prompt: tasklist /svc /fi "imagename eq btsntsvc.exe

  • Some of the analyses in the other Exchange 2007 threshold files did not make it into the single file.

  • The PAL installation wizard now detects if Microsoft Office Web Components 2003 is installed and if Microsoft Log Parser v2.2 is installed. If they are not installed, then the installer points the user to the installation URL for the respective product.

  • A Windows Server 2008 Hyper-V threshold file has been added to PAL. This is a beta release of this threshold file pending review from other subject matter experts.

  • The ability to "queue" multiple vbs instances so they are run as a group instead of you executing individually.

  • The UI now supports time range restrictions - meaning the perfmon log can be restricted to a time range

  • UI is now "wizard based" - what can I say Clint works for Microsoft. :-). It is cool though, it is more intuitive than the previous version.
Below I have included some images that highlight some of these new features.







Saturday, October 11, 2008

Testing Web Services - .Net WebService Studio

I am currently engaged in a project which involves integration with a 3rd party using Web Services. A colleague recommended a tool to me called ".Net WebService Studio" for testing Web Services. He was using this tool on his project and had nothing but good things to say about the tool. The tool itself is available for free on Codeplex by Adnan Masood.

Within my project, I am hosting a Web Service and the 3rd party is hosting several Web Services. So during some of my unit testing and before I exchanged WSDLs with the 3rd party I wanted to be able to submit messages to BizTalk via my Web Service. My BizTalk Web Service was generated by the "Expose Orchestration as Web Service Wizard" and is a traditional two/way, request/response service.

In the past I have built my own 'stubs' that would allow me to send in messages that satisfy my testing scenarios. This resulted in a lot of code that eventually is just thrown away. Using .Net Web Studio allows for a Proxy to be download "on the fly". So you basically point the tool at your Web Services and start submitting messages without writing any code!

The first thing you are going to want to do is launch the application and input your Web Service URL in the WSDL EndPoint dropdown. A list of recently used URLs is kept so you don't have to remember a long list of URLs.




The next thing you are going to want to do is click on the "Get" button. This will generate the Web Service Proxy for you and is required in order for you to invoke the Web Service.

You are now in a position to invoke the Web Service. The application is capable of sending some basic data to the Web Service based upon the expected data types. It works similar to the way the "Generate Instance" works when wanting to generate a sample message from a Schema in BizTalk/Visual Studio . In order to Invoke the Web Service you need to select the Operation(or Web Method) that you want to invoke and click the "Invoke" button. Once you have clicked the button, the Response of the Web Service will be displayed in the "Output" text box in the lower left corner.


From this screen you can also modify the "default" values that Web Service Studio is going to use by clicking on an element and then updating the value in the top right "quadrant".



By clicking on the "Request/Response" button, you are able to see, and modify, the actual SOAP request that is being sent to the Web Service and the SOAP Response that is being returned to your client.



This screen also allows you to tweak your SOAP request in case you have some additional security, content type or Proxy requirements.

Overall I think the tool is great and definitely a worth having in your "toolbox".

Tuesday, October 7, 2008

Canadian Tech Days Update

For those of you that are interested, the Tech Days site has been updated. Do note that the Early Bird prices are in effect until October 15th, 2008.

The sessions, tracks and presenters are also listed on the web site so check it out!

Sunday, October 5, 2008

BizTalk Mapper: Ensuring that Node Exists before calling scripting Functoid

A scenario that I have recently encountered is that I have an optional element coming in that, if present, requires some manipulation before it can be assigned on the outbound message. The problem that I encountered is that an exception is raised when the map is executed and has nothing to pass to the scripting functoid.


Below is an image of my original map. All elements are required except Operation. The Operation element is of type long and a third party system will be sending this so we don't have total control over the data types. The equivalent element on the destination message is VORNR which happens to be part of an SAP IDoc. The element on the IDoc is also optional, but if it is provided, it needs to have padded values to make it a 4 digit string. So if 220 is provided by the source system then 0220 needs to be passed to the IDoc.


Below is an image of a message sent in without the Operation element. The issue is that if the element doesn't exists, then BizTalk will generate the following exception(truncated for readability):
Exception type: OverflowExceptionSource: mscorlibTarget Site: Int64 System.IConvertible.ToInt64(System.IFormatProvider)The following is a stack trace that identifies the location where the exception occurred


So to get around this, I have added some checks in the Map to ensure that the scripting functoid is only called when the Operation element exists.


The checks come in the form of Logical Existence and Value Mapping functoids. The Logical Existence functoid will return "True" or "False" based upon whether or not the element/attribute that you connect it to exists. You then use this output to feed the Value Mapping functoid. The Value Mapping functoid requires two inputs:

  1. An boolean indicator that if True will output the 2nd input
  2. The 2nd input will be passed to the next functoid(or element) should the 1st input be true.
Without the scripting functoid, BizTalk takes care dealing when elements exist and when they do not. The addition of the scripting functoid creates some issues when the Optional element is not provided in the message. But, with a couple standard functoids, a check can be made that only calls the scripting functoid when the element is provided.

Wednesday, October 1, 2008

Microsoft - Dublin

No this isn't an announcement for a new Microsoft office in Ireland, but rather the latest technology announcement coming out of Redmond. Microsoft has publicly released some information regarding .Net 4.0 and the new "Application Server Extensions". This announcement is significant as Dublin will allow for:
  • A standard host for WF/WCF applications
  • Tooling and Managment for the application server
  • Support for scale-out durable messaging
  • Scalable monitoring and diagnostics
  • Message based correlation
  • Long Running applications
  • Management functions via IIS Manager

Much like the BizTalk Server 2009 announcement that occurred a few weeks back, I think Microsoft wants to clear the air and provide a glimpse into what the future holds before developers make their way to PDC in LA later this month.

As much as I am a "BizTalk guy", I am very encouraged with where Microsoft is taking the Connected Systems Division. If nothing else, I feel that the WCF/WF technologies provide options for developers when implementing solutions. Microsoft has already announced their committment to BizTalk, so it is not disappearing any time soon. It should be interesting to see some of the solutions that people come up with using Dublin.

For more information regarding this annoucenemt, please visit Steve Martin's blog.

Thursday, September 25, 2008

BizTalk SAP Adapter and Extended SAP IDocs

I recently ran into an interesting scenario when generating the BizTalk schema for an IDoc. I have generated several schemas from SAP in the past but was having trouble "finding" this particular IDoc.


SAP Background:
I do not confess to being an SAP expert, but this is the way that I understand IDocs. Out of the box, SAP provides lots of IDocs that relate to particular modules within SAP. These modules include Finance, HR, Plant Maintenance among many others. You can also buy separate packages that relate specifically to your industry. For instance I am in the energy industry so my organization heavily uses that ISU module. Generally organizations like to limit the amount of customization that they do to their SAP system but it is usually impossible to have no customizations.

When you want to customize one of these "out of the box" IDocs you have a couple options:

  • Creating an IDoc based upon a "copy" of an original IDoc. Kinda like a copy-paste, rename scenario. The naming convention for custom Idocs is to place a 'Z' in front of the IDoc that you just customized. For instance if you were to customize the 'CONF32' (Confirmation IDoc) you would name your IDoc ZConf32.

  • Extending an IDoc. You can think of this more like inheritance. You start by inheriting the "base" Idoc and adding, or extending, any segments that satisfy your needs.

My experience in the past primarily involved generating schemas for custom IDocs. So when I input the IDoc that I am looking for in the BizTalk Adapter Meta Generation wizard I would type in ZConf32* and it would return a result. The problem that I ran into is that when I typed this name as the IDoc that I was looking for, no results were returned.

At one point it was suggested by someone on our SAP team that perhaps BizTalk could not download Extended IDocs. I was not too surprised that the suggestion was made since BizTalk often mis-understood. On the flip side, BizTalk resources generally do not have a lot of SAP knowledge so I couldn't initially confirm whether BizTalk could or couldn't. However, I wasn't quite ready to throw in the towel.

Microsoft has done a pretty good job of abstracting the "little" details away from us by providing wizards that allow us to generate schemas. This is definitely a value-add offering by Microsoft and a key driver in organizations using middleware like BizTalk. It allows integration projects to turn around solutions faster and cheaper.

So I started by querying with a "wider" search criteria via wild cards. What I found was that since this IDoc was extended, I needed to find the "Standard" SAP IDoc and then drill down from there to find the extension.


Error returned while searching for "Custom Name" ZConf32

When I changed my query to include the "Standard" SAP Conf32 IDoc and drilled down a level I was presented with both the SAP Idoc and the version that had been extended. Since I wanted the extended version, I selected the entry called Conf32-ZConf32. The naming convention follows that of Custom IDocs in that "Z" is used to indicate that the extension is custom and not something provided out of the box.


Success! IDoc is found with the "Standard" SAP version.

The two preceding examples used the BizTalk Server 2006 (R1) Adapter. I was curious to see if the behaviour was similar with the WCF based SAP adapter that can be used with BizTalk Server 2006 (R2).

When searching for my Extended IDoc called ZConf32 I was presented with an "IDoc not found" message. Not the same message as the R1 error, but in essence the same meaning.



The next step I did was provide a search that included the "Standard" SAP IDoc Conf32 to see if the extended IDoc was hanging out with the original. While the experience in the Wizard is a little different, the end result is the same. The Extended IDoc is available for download by the Adapter Meta Data Generation wizard


So hopefully this post will help someone out. I know myself and a SAP resource were scratching our heads for a bit but in the end we got the result that we were looking for.

Tuesday, September 16, 2008

Another Canadian Microsoft Event - BizTalk/SOA

For more info, visit Peter Kelcey's blog


The Canadian Connected Systems Conference 2008
Canada’s Connected Systems Road show: Can’t make it to PDC but would like to hear more about BizTalk and how it relates to broader connected systems and SOA initiatives? Please join us at one of these locations for a day. We’ll be putting out a registration link & agenda soon but for now please note these locations/dates:

a. Vancouver – 30 October 2008
b. Toronto – 4th November 2008
c. Montr̩al Р6th November 2008

Overview: In a service-oriented world, effective business processes unite people and systems. Find out how BizTalk® Server builds on the Business Process Management and SOA capabilities in prior releases to help your organization extend core process management technologies even further.

We will share the latest on Microsoft’s SOA offering - as well as details of the strategies and technologies that Microsoft is delivering today, over the next year, and into the future. At this event, you will learn:
· BizTalk today and through FY’09
· Microsoft’s Roadmap for the future
· Microsoft’s “Real world” SOA vision, positioning and messaging
· Service Virtualization & ESB guidance 2.0
· RFID & mobility of BizTalk

These events will provide further insight for customers and technology partners into best practices for building SOA and BPM solutions, guidance for advancing SOA, and using the latest Microsoft-based technologies for connecting people, processes and information.Agenda

8:00 Breakfast
8:30 Connected Systems Overview
9:00 BizTalk today, over the next year & Roadmap for the future
10:00 Adapter Pack
11:00 Break
11:15 Self Service SOA
12:30 Lunch
1:30 Service Virtualization & ESB 2.0
2:30 RFID stack & Mobility
3:30 Break
3:45 Connected Systems Assessment
5:00 Reception
6:00 End

Target Audience:This event will be of value to Technical Decision Makers, Developers and Architects interested in BizTalk, enterprise integration, and SOA solutions.
To RegisterSpace is limited so register today to ensure your attendance at this event. Click the city name below to register:

Vancouver: October 30, 2008 (Thurs)
Toronto: November4, 2008 (Tues)
Montreal: November 6, 2008 (Thursday)



It is too bad that there is nothing being held in Alberta. Last year the Canadian BPM/SOA conference came to Calgary and it was a good event.

Wednesday, September 10, 2008

New Microsoft Conference Series coming to Canada - Canadian TechDays 08

A new conference series is coming to a city near you in Canada! It is expected that this conference series will be like a 'Mini-TechEd'. These conferences will be paid events, so you can certainly expect a good experience.

The agendas are not finalized but you can expect a wide variety of topics including Windows Development, Web Development, Virtualization, Data Platform/Business Intelligence and Infrastructure. I am still hoping that we will see some Connected Systems Division content(fingers crossed).

Check http://www.techdays.ca/ for updates or come back to my blog as I will be keeping it up to date for this event as well.