by community-syndication | Apr 20, 2009 | BizTalk Community Blogs via Syndication
Microsoft just shipped the final episode in their three-round WCF marketing campaign found at http://www.microsoft.com/net/wcf/champ/. It’s actually pretty entertaining while highlighting the key value propositions of WCF as a communication framework. Here’s the blurb from the site:
Let’s get it on! We are engaged in a battle that pits the “old way” of creating web services versus the “new way.” In the video series, two fighters go toe-to-toe, or rather keyboard-to-keyboard to highlight the benefits of using Windows Communication Foundation (WCF) to build robust web services. Take a tour of what WCF has to offer by exploring the pillars below. You may find yourself saying,“Finish Him!”
In addition to the 3 videos (one per round), this site also provides some categorized links to some valuable WCF learning resources. If you’re considering WCF in the near future, it’s definitely worth a look.

by community-syndication | Apr 20, 2009 | BizTalk Community Blogs via Syndication
Cross-posted from the Silverlight Web Services Team blog.
I hope you enjoy the content we post on this blog. I’ll be giving a talk at the upcoming TechEd conference in LA, going through some Silverlight 3 content similar to what we have been posting here. If you’re attending TechEd, check out:
SOA03-INT Interacting with Web Services Using Microsoft Silverlight
Yavor Georgiev
Tue 5/12 | 4:30 PM-5:45 PM | Blue Theater 2
300 – Advanced, Middle Tier Platform and Tools, SOA and Business Processes, TLC Interactive Theater
Learn how easy it is to utilize POX, REST, RSS, ATOM, JSON, and SOAP services in your Silverlight 2 mash-up application. Hear best practices for developing and consuming secure services within and across domain boundaries. Experience new features in the upcoming Silverlight 3 release including optimized binary communication format, improved support for server- to-client "push" scenarios and new security features.
If you have not registered, you still have the opportunity to do so:
If you do attend, make sure you let me know you’re a reader of our blog I’d love to hear any feedback you have.
Cheers,
-Yavor
by community-syndication | Apr 16, 2009 | BizTalk Community Blogs via Syndication
I have seen quite a few instances where people run into issues while using the WCF Siebel adapter because of
a. Siebel Web Client is not installed correctly on the machine
b. Or the URI passed to the adapter, that eventually gets transformed to the connection string passed to Siebel, is incorrect
In order to eliminate the above 2 as possible causes, you can try out the following sample code that will use the Siebel COM interface to directly talk with Siebel (adapter is not involved). Please make sure you don’t see any error messages.
/// Application that will issue Login-Logoff request to Siebel
///
/// To run this program,
/// – Set ConnectString, Username and Password. ConnectString is of the format
/// siebel://host/EnterpriseServer/AppObjMgr/SiebelServer
/// (SiebelServer is required in case of Siebel 7.5)
/// For an example, please see the code below.
/// – Add a reference to sstchca.dll (found in siebel client install folder)
/// – Compile and run the program
/// – If the login fails, you will see an error message
using System;
using System.Runtime.InteropServices;
using SiebelBusObjectInterfaces;
namespace Sample
{
class Program
{
const string ConnectString = “host=\”siebel://adapsblsrvr77:2321/ent77/SSEObjMgr_enu”;
const string Username = “abc”;
const string Password = “def”;
static void Main(string[] args)
{
SiebelDataControl sdc = null;
bool loggedIn = false;
try
{
/// Create a connection
sdc = new SiebelDataControl();
sdc.EnableExceptions(1);
sdc.Login(ConnectString, Username, Password);
loggedIn = true;
}
catch (COMException ex)
{
Console.WriteLine(“ERROR: “ + ex.ToString());
}
finally
{
if (sdc != null)
{
if (loggedIn)
{
sdc.Logoff();
}
Marshal.ReleaseComObject(sdc);
sdc = null;
}
}
Console.WriteLine(“Press any key to terminate…”);
Console.ReadLine();
}
}
}
by community-syndication | Apr 16, 2009 | BizTalk Community Blogs via Syndication
As I’m looking into sizing up systems currently for a project, the question that you
always ask “Is my CPU choice any good?” “Should I go Dual Quad Core or Quad Dual Core?”
and the questions just keep on coming, even in your sleep sometimes 🙂
I recently came across a gem of a site that gave me all my answers. There’s a bunch
of other CPUs and options available also. Check it out.
http://www.cpubenchmark.net/cpu_lookup.php?cpu=%5BDual+CPU%5D+Intel+Xeon+E5420+%40+2.50GHz
by community-syndication | Apr 16, 2009 | BizTalk Community Blogs via Syndication
We had a little problem a few days ago when we were reviewing the testing of a B2B solution implemented with BizTalk.
This implementation was basically the collection of a file via FTP and then a splitter pattern which would break up a batch and cascade updates to appropriate systems. The file which was recieved was a moderately complex file containing multiple rows containing different types of positional records.
We had implemented this as per the specification and were moving from testing this internally to test it with the business partner. One of our limitations was that we could not do integration testing as early as we would like due to some external constraints.
Our internal tests were fine, but during integration testing we found some unexpected behaviour from the partners FTP service. A summary of this behaviour is:
- The server would store multiple files with the exact same file name. If the partner uploaded 2 files we could see them as seperate instances with seperate file creation dates, but they would both have the same name.
- When we executed a GET command on a file it would get the file and then mark it as collected and prevent us from downloading the file again. To be able to get a file if transmittion had failed we need the partner to make the file available again
- We are unable to delete files from the server
- If 2 files with the same name can be seen on the remote server, if we execute a get it will actually merge the files together to give us one file locally containing all of the date from both remote files. The data positions the content of the files in date order
We experienced a little problem and became aware of this unexpected behaviour and our first thoughts were that we would need to do some custom coding to deal with this. On closer inspection our problem seemed to be something else and BizTalk was actually dealing with this FTP behaviour in a way that worked well for us. Our setup basically had the FTP adapter polling the remote server when files were downloaded they were streamed through a custom pipeline which contained the FFDasm pipeline component which used a schema based on the partners message specification.
The way BizTalk was dealing with this additional FTP requirements was as follows:
- It didnt matter that BizTalk couldnt delete the file from the remote server because once the file was downloaded it was no longer available anyway.
- When 2 or more files were merged together when downloaded the FFDasm component was recognising this and actually still broke the message up correctly. If 2 files were downloaded and merged together we would actually get 2 disassembled messsages in the messagebox which had been handled correctly by FFDasm
I guess in hindsight this kind of makes sense, but it was nice to come across a situation where something like this happens and you done end up having to pull together some hack to workaround it.
In terms of the partners FTP service we didnt get confirmation on the vendor specific setup but based on some googling (sorry I mean Live searching) I believe that the it could be based on a VAX file system where you can have multiple versions of a fileand the FTP service could be either HP/UX Enterprise Secure FTP or possible an offering from Sterling
by community-syndication | Apr 16, 2009 | BizTalk Community Blogs via Syndication
| The Australian BizTalk User Groups (Sydney Connected Systems User Group, Brisbane BizTalk Community (BrizTalk) and Melbourne BizTalk User Group, would like to invite you to attend one of the BizTalk Server 2009 Hands On Days being presented in May and June 2009.
The event is targeted for those using previous version of BizTalk Server and those wishing to learn more about BizTalk Server. The attendees will have an a dedicated BizTalk 2009 development environment to use during the event. The attendees can either work on the hands on labs or to experiment with the feature of BizTalk 2009. The BizTalk 2009 development environment will include BizTalk 2009, RFID, ESB 2.0, Windows 2008, SQL 2008, Team Foundation Server 2008, Visual Studio 2008 Team Suite. |
|
The Hands On Days will be on the following dates:
|
Melbourne
|
Brisbane
|
Sydney
|
Canberra
|
Perth
|
Adelaide
|
|
Saturday May 30th
|
Saturday June 13th
|
Saturday June 20th
|
TBA
|
TBA
|
TBA
|
|
|
Registration Opens Soon |
Register Your Interest |
Register Your Interest |
Register Your Interest |
| Register early as there are limited seats. |
The Event cost is $200* (inc GST) and will include lunch.
The event fee will be used to cover the venue and travel expenses of the presenters, any left over funds will be used for food and drinks at upcoming user group events.
* Please note that the registration fee will be processed via PayPal by Chesnut Consulting Services
|
Agenda for the Days
|
|
Presenters
|
|
Time
|
Topic
|
Duration
|
Melbourne
|
Brisbane
|
Sydney
|
| 9:00 AM |
Intro |
15 minutes |
Bill Chesnut |
Daniel Toomey |
Mick Badran |
| 9:15 AM |
What’s New in 2009 |
60 minutes* |
Bill Chesnut |
Daniel Toomey |
Mick Badran |
| 10:15 AM |
TFS Integration (Unit Testing & Automated Build) |
60 minutes |
Bill Chesnut |
Dean Robertson |
Bill Chesnut |
| 11:15 AM |
RFID |
60 minutes |
Mick Badran |
Mick Badran |
Mick Badran |
| 12:15 PM |
Lunch / Networking |
45 minutes |
|
|
|
| 1:00 PM |
Enterprise Integration (WCF LOB adapters, EDI, AS2 and Accelerators) |
60 minutes |
Miguel Herrera |
Miguel Herrera |
Miguel Herrera |
| 2:00 PM |
ESB 2.0 |
60 minutes |
Bill Chesnut |
Bill Chesnut |
Bill Chesnut |
| 3:00 PM |
Trouble Shooting & Problem Determination |
60 minutes |
Miguel Herrera |
Miguel Herrera |
Miguel Herrera |
| 4:00 PM |
Q & A |
30 minutes |
All |
All |
All |
| 4:30 PM |
End of Day |
|
|
|
|
* Each presentation will finish in time for the attendees to have a chance to put what they have learned to use on the BizTalk 2009 Environments that will be provided.
by stephen-w-thomas | Apr 16, 2009 | Stephen's BizTalk and Integration Blog
With BizTalk Server 2009, setting up integration with Team Foundation Server (TFS) has become much simpler. While setting up continuous integration, automated unit tests, and msi packaging was possible before BizTalk 2009 it was a huge pain.
Below I will walk through the steps to set this up with BizTalk 2009. I was able to get this up and running in about 30 hours including the time to create the Virtual Machine (that was 15 hours). It took 47 build attempts in TFS before all the bugs were worked out in the process. While I cut some corners for the demo it would not take much more time to develop a true production ready solution.
We can start by taking a look at the Virtual Machine setup:
- Windows 2008 SP1
- TFS 2008 SP1 with Build Server installed
- SQL 2008 with all optional components installed
- Visual Studios 2008 SP1
- BizTalk Server 2009 with MSBuild tools installed
As you read though the steps below keep in mind I have about 10 hours of experience with MS Build and TFS 2008. This was my very first time setting up automated unit tests and continuous integration with BizTalk. This is just one approach for demo purposes. In real life, for example, all these systems would not be on the same server. This would surely make the process harder.
At a high level, this is what is happening:
Update to a file is checked in -> Build is kicked off -> Build completed with no errors -> Unit Tests are ran -> (Verification – Not Shown) -> MSI is created
Keys Pain Points:
- Setting up TFS 2008 with SQL 2008 is many times more complex that you would think. Make sure you Google this before starting.
- Remember user permissions. This will affect your share permissions, other folders, and the ability to run scripts. For example, to run the Create MSI Process below the user running the Build Agent will need to be a BizTalk Admin.
- Relative and absolute file paths are a killer. I spent a lot of time finding temp locations and getting relative paths to work. Looking at the Build Log and MSBuild Targets was a huge help.
- Keep in mind TFS will use the version of code checked into TFS. If you update a file or the build project make sure you check it in or the new settings will be ran.
Download the Solution Code
Setting Up Continuous Integration, Unit Tests, and MSI Creation in BizTalk 2009 Sample Code
Setting Up Unit Tests for use in Continuous Integration
Step 1: Setup a Unit Test project following the help guide instructions at http://msdn.microsoft.com/en-us/library/dd224279.aspx
Step 2: Create a Test List in the .vsmdi that was added to the solution when the Unit Test project was created. Right click on the Lists of Tests. Creating the new list named RunAllUnitTests is shows below.
Step 3: Add the test methods from Step 1 to the new test list. Drag and drop the test into the test list. This is shown below.
Pointers: The hardest part of setting up the unit tests is getting the file paths correct for Schema and Map testing. I finally got tired of trying to figure it out and hard coded the paths to known local files. This is not the right way to do it.
Setting Up Continuous Integration
Step 1: Add Solution to Source Control in its own folder tree. In this case it is called CIDemo as shown below.
Step 2: Create a new Build Definition inside Team Explorer.
Step 3: Give the Build Definition a name. In this case it is called CIDemoBuildDefinition.
Step 4: Set the Workspace to the CIDemo solution folder created in Step 1. This is shown below.
Step 5: Go to the Project File section of the wizard. Select Create on the Project File screen to make a new Build Project. A new wizard will open.
Step 6: Select the CIDemo solution. This will be the solution that the build project will build.
Step 7: Select the build type. In this case it is Release.
Step 8: Since we already created the Unit Tests and a Test List select the RunAllUnitTests test list to have the unit tests ran when a build is performed. This is shown below. This can always be updated in the build project later on if the Unit Tests are not ready. Click Finish to end this wizard.
Step 9: Back on the main wizard, leave the Retention Policy items unchanged.
Step 10: Under Build Defaults, select New to create a new Build Agent. Name the build agent and set the computer name. In this case the name is CIDemoBuildAgent and the computer name is Win2008Ent-Base as seem below.
Step 11: Set the Share location for the builds to be copied to, also known as the Drop Location. A local share was created called Builds. To ensure no permission problems Everyone was added to this share. This is not what should be done in real life. Most likely this would be on another server.
Step 12: Under Trigger, select the Build each chick-in radio button. This will create a new build with each check in. Click OK to create the Build Definition.
Step 13: Test the process. Check in a file.
Creating A BizTalk MSI
The process used here to build an MSI package first installs the BizTalk Assemblies and Binding file to a local BizTalk Server. Then it exports out the MSI Package. While other approaches can be used that do not require a local BizTalk instance, this approach would allow for additional BizUnit style Unit Test (or Build Verification tests) to be ran against deployed code.
Step 1: Modify the CreateFullandPartialMSI.bat sample file in the CreateApp folder under Application Deployment in the BizTalk 2009 SDK. This file is called BuildMSI.bat in the Helper folder in the solution. Changes made to the file include changing paths, dll names, and application names. Make sure the order of the dlls is in the correct deploy order. i.e. Schemas before Maps.
Step 2: Modify the Build Project created in Step 5 above. This file is a MSBuild file that controls the build and tests ran against the build. At the end of the file right before the closing </Project> tag add the following:
<!– This Target created a directory for the binding files and Copies them and the build bat file to the temp directory. –>
<Target Name="AfterTest">
<MakeDir Directories="$(BinariesRoot)/Release/Bindings" ></MakeDir>
<Copy SourceFiles="$(SolutionRoot)/Bindings/CIDemo_Bindings_Dev.xml" DestinationFiles="$(BinariesRoot)/Release/Bindings/CIDemo_Bindings_Dev.xml"></Copy>
<Copy SourceFiles="$(SolutionRoot)/Helper/BuildMSI.bat" DestinationFiles="$(BinariesRoot)/BuildMSI.bat"></Copy>
</Target>
<!– This Target runs the build bat file, copied the completed MSI, and deletes the bat file from the file share. –>
<Target Name="AfterEndToEndIteration">
<Exec Command="$(BinariesRoot)/BuildMSI.bat" WorkingDirectory="$(BinariesRoot)" ></Exec>
<Copy SourceFiles="$(BinariesRoot)/CIDemo.msi" DestinationFiles="$(DropLocation)/$(BuildNumber)/CIDemo.msi"></Copy>
<Delete Files="$(DropLocation)/$(BuildNumber)/BuildMSI.bat"></Delete>
</Target>
This code will copy the binding files, the bat file used to build the MSI, and do some clean up. This can be customized as needed and the possibilities are almost endless. Make sure the updated file is checked into TFS.
Step 3: Ensure the user account running the build agent is a member of the BizTalk Admin Group. This use can be found inside TFS by starting a build and viewing the properties as seen below. This account is set up when you install TFS.
Step 4: Watch for output in the folder share when a file is checked in or a build manually started.
This outlines at a high level the process to create automated unit tests, set up continuous integration, and create a BizTalk MSI package. I hope to put this together into a video shortly. Until then, best of luck.