TechEd NA Videos Now Online

TechEd NA Videos Now Online

I recently had the pleasure of speaking at Microsoft TechEd in Houston, TX, and the videos of those sessions are now online. A few thousand people have already watched them, but I thought it’d be good to share it here as well. The first one– Architecting Resilient (Cloud) Applications – went through a series of […]
Blog Post by: Richard Seroter

Why full NuGet support for BizTalk projects is important!

Why full NuGet support for BizTalk projects is important!

Let’s start with a summary for those who don’t feel like reading the full post.

Using NuGet to handle BizTalk dependencies for shared schemas, pipeline components and so on works fine today.

As .btproj files however aren’t supported by NuGet (as shown in this pull request) and are not in the current white list of allowed project types Package Restore will not work (issue closed as by design here).

Not having Package Restore of course is a problem as one now is forced to check in all packages as part of the solutions, something that in the end leads to bloated and messy solutions.

So please reach out to your Microsoft contacts and let’s get this fixed!

NuGet

As most people know NuGet is the package management solution from Microsoft for .NET. It started off as an initiative to further boost open source within the .NET community and NuGet packages uploaded to the NuGet.org platform are open and available directly within Visual Studio through the NuGet add-in. Currently there are well over 20 000 open packages for everyone to download and use.

Lately there has however been lots of discussions within the community to use NuGet as a package manager for internal shared resources as well (by Hanselman and others). Solutions like MyGet allows for private NuGet feeds – only available to those within your organization but still levering all the ease and control offered by NuGet.

Using NuGet for references has a number of of advantages:

  • Communication
    All available resources are directly visible in Visual Studio and when updates to a used library is a available a notification is shown. No more spam mails about changes and never read list of available libraries.

  • Versioning
    A NuGet package has it’s own versioning. This is useful as it isn’t always optimal to change the dll version, but by using the NuGet package version one can still indicate that something has changed.
    As you also reference a specific version of a NuGet package from your solution you always have full control of exactly what version you’re targeting and where to find the built and ready bits.

  • Efficiency
    When starting to work on a project with many references one first have to get the source code from source control for the references, build these (hopefully in the right version … hopefully you have your tags and labels in order …) until all the broken references are fix.
    With NuGet references this just works straight away and you can be sure you get the right version as the resource isn’t the latest from source control but the actual built dlls that’s part of the referenced NuGet package.

NuGet Feeds

As mentioned NuGet feeds can be public or private. A NuGet feed is basically a RSS feed with available resources and versions of these. A feed and a NuGet server can be a hosted web based solution or something as simple as a folder where you write your NuGet packages to. The NuGet documentation covers these options in depth.
The point being that creating your own private NuGet feed is very simple!

So if you haven’t already realized it by now – NuGet is not only a great tool to manage all public external dependencies but can add a a lot a value for internal references as well.

Couple of relevant NuGet features

  • NuGet Package Restore
    NuGet Package Restore enables NuGet to download the used referenced package from the package area. The goal is to avoid having to check in the actual references in source control as this will bloat the version control system and in the end the create a messy solution.

  • NuGet Specification (nuspec) metadata token replacements
    All packages are based on a nuspec file that dictates the version, package description and other meta information.
    NuGet has the capability to by using replacement tokens (such as $version$ for example) read some of this information from the AssemblyInfo files.
    This is far from a critical feature but nice to have and avoid having to repeat oneself and have the same information in a number of places.**

BizTalk and NuGet?

A typical BizTalk solution has a number of shared resources such as shared schemas, shared libraries and pipeline components. As the resources usually are shared between a number of project they often live in a separate development cycle. So when opening a BizTalk project with such resources it’s not only a lot of work getting the referenced code and building the references, there’s also this nagging feeling that it might not be in the right version and that the source might have changed since the first time the reference was added.

Another reference issue occurs when using a build server for a solution with references. As the solution has a dependency to the referenced project one has to make sure not only that the main solution is fetched to the build workarea by the build server, but also that all the referenced project are fetched from version control – and again, hopefully the latest version in the attended version …
This kind of works using TFS Build Service and common TFS Source Control. If however one’s using Git and have resources in separate repositories this becomes impossible as TFS Build Service currently only supports fetching a single repository per build definition to the build workarea …
(This issue does not apply for TeamCity that has a number of different options for dependency management)

All the these issues are actually solved when using NuGet references instead of traditional references as we can be sure we’re getting the packaged dlls as part of the NuGet package in the version that one referenced and not the latest checked in version.
A NuGet reference also makes things a bit easier when it comes to managing the workarea for the TFS Build Service as one only have to sure the NuGet package is available (either as checked in as part of the solution or by using Package Restore).

But …

NuGet doesn’t support BizTalk projects!

As disused here NuGet currently doesn’t support .btproj files. As BizTalk project files are are basically a standard .NET project file with some extra information a two line change in the NuGet whitelist is needed as in this pull request.

So the main issue it that by not having full support of .btproj files Package Restore won’t work and we’re for now force to check in all the NuGet packages as part of our solutions.
An other minor issue is that the token replacement feature also doesn’t work. I also think that if we could actually get full BizTalk support we’d see more BizTalk specific open shared packages for things like useful libraries and pipeline components.

Call for action: Reach out to the NuGet Team or other Microsoft connections and let’s get those two lines added to the white list!

My MuleSoft Connect 14 Recap

My MuleSoft Connect 14 Recap

This past week over 1200 attendees ascended upon San Francisco to attend Connect and APICon (a sister conference).  If you are interested in checking out the company recap of Connect you can check that out here.  The purpose of this post is to highlight some of my thoughts from the event.

This was my first time attending Connect and I had a great time chatting with attendees, customers and other Muleys about everything currently going on in the industry.  I also had the opportunity to co-present in two sessions. Whenever I speak at a conference like this I generally provide a post conference write up and figured I would take this opportunity to share some of the details from my sessions.

The Connected Insurer

In this session I shared the stage with Aaron Landgraf (Product Marketing Manager) where we discussed some of the themes that are taking place in today’s Insurance Company.

The first point is that the Insurance landscape is changing:

  • Organizations are trying to differentiate themselves via Customer Service.  This may include the ability for customer self service via the Web or Mobile.
  • Omni (or multi) Channel engagements.  No longer are customer interactions going to occur within one particular channel but may start over social media, continue over email and conclude through the web.
  • Lastly there should be one view (or 360 degree) view of the customer.  Regardless of the system that is being used to service the customer, all contextual information needs to be made available within that view.  This information may be pulled from a variety of systems in real time and aggregated while setting the appropriate context.

image

Another aspect of the presentation was to discuss some of the current challenges within this industry vertical.

  • Customers are looking for improved customer service while organizations are trying to reduce costs.
  • Any new solution will likely need to interface with existing (or legacy) assets.
  • Delivering solutions needs to be done in a very timely manner.

image

Next I discussed a high level architecture where we can address some of these challenges by providing RESTful APIs modeled in RAML, A Service Orchestration layer hosted by Mule ESB that is capable of orchestrating back end services.

image

An actual implementation of this architecture can be found in the next image.  More on this solution towards the bottom of the post.

image

Integrating the Heterogeneous Enterprise

The next session I co-presented with Ken Yagen (VP Products) where Ken walked us through some trends occurring within the industry including:

  • 36% of IT’s time is spent maintaining legacy systems and 67% of global execs said IT will spend the same or more time on these systems.
  • Cloud Services are used to augment current services.  65% of CIOs have deployed cloud solutions as a way to bolster existing services.
  • Enterprise Mobility: 45% of organizations will spend at least 500K on mobility projects over the next 12 to 18 months.

The reality of the current state that we are in is that organizations are being forced to integrate with heterogeneous environments.  No longer can organizations say we are an “ABC” shop or an “XYZ” shop.  While Enterprise Architectures may push for reducing technical diversity, the increasing adoption of Mobility, SaaS, Cloud and Social platforms are disrupting traditional architectures.  As a result a flexible, yet comprehensive platform is required to address these needs.  At MuleSoft, we feel that our AnyPoint Platform is the answer when integrating heterogeneous environments.

image

Demo

I put together a demo that addressees a lot of the challenges and trends that were discussed across these two presentations including:

  • Mobility
  • RESTful APIs (modeled in RAML)
  • Service Orchestration via MuleESB
  • Integrating Heterogeneous systems (SQL Server, WCF Services, .NET and SalesForce)
  • Also took the opportunity to introduce some of the new features of the AnyPoint Platform May 2014 release including Scatter-Gather, Web Services Consumer and enhanced DB connector which supports Data Sense)

Here are a few of the screen shots from the Windows 8 Mobile App that was built using C#/XAML.

image

 

image

image

image

image

image

RAML Definition

image

AnyPoint Studio – MuleESB solution (well part of it – didn’t fit in one screenshot)

image

Conclusion

Overall it was a great week with a lot of interesting sessions and conversations. Whether you attended it or were unable to attend,  the good news is that the London edition of Connect is right around the corner from September 24 – 26th. You can sign up for more details here.