VMRCplus – Virtual Server cool WinForm based Appnow public!

If you’re like me and run a few virtual machines each day, then running them with
ease is key I reckon.

Generally I’ve found on dual core machines etc. virtual server makes better use of
multi-cpu based hosts than what Virtual PC2007 does (VMWare vs VPC is another debate
🙂

The only draw back is that I’ve always had to setup this IIS based website and it
gets painful, particularly on a laptop etc. when all sorts of things get installed
and uninstalled etc. IIS sites sometimes stop working and thus your only lifeline
to the running virtual machines.

Well VMRCplus is the answer! (This used to be an internal MS tool
which it looks like they’ve released to the public)

YOU DO NOT NEED IIS with this baby – it uses the COM Api behind the scenes.

Grab it here……..

http://www.microsoft.com/downloads/details.aspx?fa…

Some features to wet your appetites:

    • Direct control of local or remote instances of the Virtual Server service. IIS and
      IE browser are no longer required!

    • Tabbed interface to quickly jump between Virtual Server hosts and guest VMRC sessions.

    • Reusable saved states: this feature allows users to preserve a particular saved state
      and return to that state at any time.

    • Multiple guest selection supported for startup/shutdown/save/display.

    • Browse button navigation for media, hard disk images, ISO images, .VMC files, etc.

    • Drag and Drop support for .VMC files, ISOs images, VHD and VFD files.

    • Resizable desktop support for guests running Virtual Machine Additions (maximize VMRC
      window supported).

    • Limited cut and paste of text from host to guest (only).

    • A built-in utility to take JPG screenshots of running guests. Useful when filing bugs.

    • Built-in error notification with Virtual Server eventlog viewer.

    • A Virtual Networks Manager and Virtual Disks Manager that cover all features.

    • Keyboard shortcuts (e.g. Ctrl-S to save state a guest).

    • Create multiple guests at once.

    • Create guest from parent (or multiple guests)!

    • Automatic reconnect to a designated Virtual Server host.

    • Toolbars in both Guest and Console Manager for quick access.

    • Unlimited number of guests.

    • Maximum of 32 Virtual Server hosts.

    • Sorting on columns of guests so you can sort based on status and multi-select.

    • Automatic detection of Virtual Machine Additions and notification.

    • Detection of Virtual Server 2005 R2 SP1.
baf:FolderName

baf:FolderName

The BizTalk Adapter Framework handles a lot of the configuration baggage for adapters
automatically using property grids and an annotated XSD schema provided by the
adapter management classes. Besides this, the framework allows the developer to customize
how a configuration property is edited in the property grid by including annotations
in the configuration XSD that inject custom type editors or custom type converters.

The Adapter Framework schema (BizTalkAdapterFramework.xsd [1]) also provides some
initial editors one can use by simply setting the type of the configuration element
to the correct value. One new type that appears to have been introduced in BizTalk
Server 2006 is baf:FolderName, which uses the standard Windows Folder Picker dialog
to select a file system directory. Pretty useful for properties that must reference
a folder name! Here’s how to use it:

<?xml version="1.0" encoding="utf-16"?> <xs:schema elementFormDefault="qualified" id="ReceiveLocation" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:baf="BiztalkAdapterFramework.xsd"> <xs:import namespace="BiztalkAdapterFramework.xsd"
/> <xs:element name="Config"> <xs:complexType> <xs:sequence> ... <xs:element name="OutputDirectory" type="baf:FolderName"/> .. </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

This seems like a good complement to the baf:FileName type that already existed in
BizTalk 2004, which used the WIndows File Open dialog.

[1] For the curious, this schema is embedded as a resource inside
the Microsoft.BizTalk.Adapter.Framework.dll assembly.

BizTalk is COM (or update to my post on Orchestration Performance)

BizTalk is COM (or update to my post on Orchestration Performance)

So I was answering a question on a internal (to Microsoft) email list I am lucky to
be on.  Someone asked a question about some code they were having trouble with 
– the code in question was being called from an Orchestration in BizTalk and they
were passing in the message as XmlDocument – converting that to an XmlValidatingReader
as a way of validating the document against their schema.

I pointed them to my
post on using XLANGMessage instead of XmlDocument
for performance.  This
actually seems to have solved their problem (even though I didn’t think it would –
I was just sort of morally opposed to creating an XmlDocument and then turning it
into an XmlReader when they could just go directly to an XmlReader – why do two steps
when one step would work?).

Tim Wieman (one of the BizTalk Rangers) pointed out to me that my code didn’t explain
something really important that my earlier post doesn’t mention (perhaps I should
edit that post as well now that I am writing this).  If you look at the docs
for XLANGMessage it
is pretty clear that when you are passing XLANGMessage to a .NET component – and you
just plan on reading it during your method call – you *should* call Dispose on it
before the end of your call.  This means you should always put the usage of XLANGMessage
inside of a try block and call Dispose in a finally block (as the above documentation
link clearly shows).  This was my bad – because of course I am generally thinking
about .NET and not about COM.  Well – BizTalk isn’t COM based – but XLANGMessage
is reference counted. 

After a discussion with Tim and Paul Ringseth (one of the orignal developers of XLANGs)
I came to accept this implementation.  Why did I reject it at first (I think
on the email thread I called it “stupid” ;-)?  Well – it just felt unnatural
to require *me* as the callee (the method implementor) be responsible for cleaning
up the XLANGMessage object passed in by the caller.

In most APIs – if you were passed an object and then called Dispose on it – you’d
be breaking the rules of your interaction with that API (one person I ran this by
said “I’d be really pissed if you Disposed of *my* object” – that would be Mark Taparauskas
– another really smart guy who doesn’t blog ;-)).

As Paul explained – the message doesn’t really belong to the .NET runtime – it belongs
to the MessageBox database – so it is similar to a COM interop scenario.  The
interesting thing is that the system is ref counted by the Orchestration instance
in this case – so if you fail to call dispose – the reference gets cleaned up at the
end of the Orchestration.  So depending on how long your Orchestration runs for
(if it is short) it isn’t a big deal.

But still –  the general rule of thumb is – if you are only using an XLANGMessage
instance during a method call – make sure to call Dispose on it during that method
call.

Brings
me back to the days when we used to have heated discusions about Refernce Couting
versus GC.  I guess those days are not completely gone yet – even in a .NET
product like BizTalk.

 



Check out my BizTalk
R2 Training.

Microsoft Live Ideas

Hi,
Microsoft LiveIdeascaught my attention, while surfing throughfellow developers blogs today. Microsoft in association with BBC has produced ‘How We Built Britain‘ television series. I havewatched this series and feel this is definitely “NOT TO MISS”. Read about how microsoft got involved with BBC on a television seriesand more from their website at http://live.labs.com

WCF: Don’t trust /serialize:Auto

There is a small bug in .NET 3.0 WCF proxy generation tool:
Using an .asmx web service with a method like
[WebMethod]
[return: XmlAttribute]
public string HelloWorld(int a, [XmlAttribute]int b, int c)
svcutil /serializer:Auto or the AddServiceReference feature in Visual Studio generates a
public void HelloWorld(int a, int c)
proxy method – without any complain or warning. Using svcutil /ser:XmlSerializer works. See […]

Take a Look at These…

Take a Look at These…

I’m not about to start a series of “daily links” post, but here are recent links I find relevant:

  • BizTalk 2006 R2 will come out in September, including a more affordable “Branch Edition” (for those who remember the Partner Edition), destined to be used in conjunction with Enterprise Edition instalations.
  • Two new BizTalk Server whitepapers: Best Practices for the Sql Adapter and Sample Design Patterns for Consuming and Exposing Web Services from an Orchestration. Personally I’m not a big fan of directly exposing databases to BizTalk, so I can’t give an opinion on the first, but the second is very useful and I advise you read it.
  • If you are used to think in Pub/Sub, there’s a new Microsoft project at CodePlex that looks interesting: Distributed Pub/Sub Event System, a %u00aba general-purpose distributed publish/subscribe event system designed for high performance and low latency%u00bb.

Happy reading!