Blog on various technology, we experienced ... The problems, The ideas, The Reviews, The Solution
Wednesday, December 17, 2008
Developing Integration solution using BizTalk server 2006 and Team Foundation server(TFS)
Wednesday, December 10, 2008
BizTalk 2009 Beta Now Available
Microsoft has released the Beta version of BizTalk 2009 for public . You can get from https://connect.microsoft.com/site/sitehome.aspx?SiteID=218
BizTalk 2009 supports
Windows 2008,
Visual Studios 2008 SP1, .
Net 3.5 SP1,
SQL 2008, and
TFS
RFID Mobile
New LOB Adapters
First findings HAT is gone in 2009. There are now new querying options and access to the orchestration debugger via the admin mmc.
Wednesday, September 10, 2008
Peformance Testing with BizUnit and Load Gen
I was creating Automated performance testing to implement for my client, with tools like loadgen and BizUnit.
Tools used for Testing
BizUnit - To automate the test.
Nunit - Framework to run the test that created in BizUnit.
Performance Monitor (perfmon) - to analyse the log created in the testing.
LoadGen is a load generating tool. which can used for test the performance of integration Application
There were three components in loadgen
Load generators are responsible for transmitting messages via a particular transportCurrently it supports the following transport (In-Box)
File,HTTP,MQSeries
MSMQLarge,MSMQ,SOAP,
Web Services Enhancements (WSE),
Windows SharePoint Services (WSS),
Windows Communication Foundation (WCF) (LoadGen 2007 Version has)
Message creators are an optional component that can be used when you need to
generate messages that contain unique data.
Throttle controllers ensure that messages are transmitted at a steady rate by
governing the load generators
you can find more details here
Performance Monitor(PerfMon) will be used as an anlysis tool . which can read the performance log file and give us a nice view on performance.
BizUnit is an framework to automate the test used to automate the test.
- Initialise the test like restarting the service, clearing the
message box in BizTalk.
- call the loadgen to create the load for the system.
- Invoke the performance monitor and log the details.
- Wait for all the message got processed and stop the test.
- Cleanup the system like stoping the monitor, remove any messages from the transport etc.
for more details on BizUnit check out in http://www.codeplex.com/bizunit
NUnit is a tool to invoke the BizUnit tests.
For more on NUnit http://www.nunit.org/index.php
I hope I have given a berief introduction, Let try out small scenario
Its a Simple File To File Scenario, where BizTalk receive file from a File location and Send it to another File location
Size of the file is 10 KB
Number of Message to send is 1000. I dont have any expected performance, Just want to know how my bizTalk Server Perform
Step 1 Construction of LoadGen Config File
We need to define
LoadGenerator - Here it is File transport, need to tell what is the lot size and total message
Message Creator - I dont need to invoke the component,as I am gonna replicate the same message
Throttle controller - I have used file monitor such that the thresholdrange is 40-50 Files.
Sample Configuration
My BizTalk Server performance on this scenario
In an average it receive 4.993 Message/Sec and Send 4.993 Message/Sec
You have lot of other counters are there for you to select and analyse... for more on this toplic click here
Monday, September 08, 2008
BizTalk Server 2009 - The Future release
Please find the RoadMap
http://www.microsoft.com/biztalk/en/us/roadmap.aspx
Friday, August 08, 2008
Exploring Activity Relationship in BizTalk BAM
First question in my mind can we tackle the whole scenario as a single activity like PO Process or a muliple activity. But I have the following constraint
- l There is no pattern in receiving the message from supplier
- l BizTalk is not handling the business process and it is used only for integration
- l Orchestrating in a single activity , will consume lot of resource
I need to keep the Orchestration instance live till the whole business process is over, It will directly impact my Disaster Recovery(DR) story
I Should re-think about my capacity management to handle .
So I decided to handle the situation as multiple activity and by tracking the sending and receiving message on each activity (Not handling the business process)
I have created a messaging solution for sending and receiving the PO and Other documents. And track the each message. (The Integration Architecture is more of messaging solution)
Step 1
For tracking the PO and other activity using BAM, I have created the 3 Activity as given below
in the Excel
Activity Name Fields
POACTIVITY ------------------------- POID, PODATE...
INVOICEACTIVITY ------------------------ INVOICEID, POID, INVDATE...
PROGRESSACTIVITY ------------------------ PROGRESSID, POID, PROGRESSDATE...
The POID represent the Purchase Order ID, Which will uniquely represent the purchase Order
Step 2
Create a View will all the three activity (say InvoicePOView) using the excel and deploy to the BizTalk
Note: Activity Relationship can be done only within the same view.
Step 3 Tracking Profile – Implementing the Relation ship
For each activity Message Payload has been used for tracking
· POID has been used as the unique key to create Activity relation PO, PO Progress and Invoice
POActivity Tracking
Invoice Activity Tracking
Progress Activity Tracking
Deploy the TPE in BizTalk and test the tracking you can view the result as given below
Views and Results
The Activity Status Page for PO Activity Show as above
The PO (POID: 1000001 have 3 Invoice activities and 2 Progress Activity which are related the PO Activity)
On click on one of the InvoiceActivity we can find the details of the invoice
I have limited to show the capability of creating relationship using TPE Tool. You can also create relationship using custom code using addrelatedactivty method (refer http://msdn.microsoft.com/en-us/library/microsoft....)
Wednesday, April 23, 2008
Microsoft virtual techdays
- Windows 2008
- SQL Server 2008
- .Net 3.5 Visual Studio 2008
I have attended all the session in Visual Studio 2008. I have got overview and whats new about the product. But Only worry is the Visual Studio 2008 cannot be used for BizTalk Application development, Still microsoft has not supplied with a plugin for the same :(. Expecting for the release ...
The Most glamorous part of the event is Mandra Bedi Hosted the whole event. She is awesome and made the event too hot :)
Other than the above products there were discussion about Silver Light, Moon Light and Mashup
I know about Silver light before even attending the session. I like to share about Silver Light, Moon Light and Mashup ...Ofcourse about Visual studio 2008
Microsoft SilverLight
Microsoft SilverLight is a Technology which will provide very rich UI for your website. It is a Plugin for the browser.
We can say it is competing product to Adobe Flash, Adobe Shock wave Etc ... The good thing is the plugin is compatible to all the Web browser running in windows Mac OS X
You can read more on the below link
http://en.wikipedia.org/wiki/Microsoft_Silverlight
http://www.microsoft.com/silverlight/
Moonlight
A Project from Microsoft to make the silver light to be compatible with linux platform
Read more
http://www.mono-project.com/Moonlight
Mashup
Mashup is a web application, which mix information/data from various source and provide you a integrated view or a function.
You can read more on Mashup
http://en.wikipedia.org/wiki/Mashup_(web_application_hybrid)
There were three types of Mashup
Business
Data
Consumer
Like to experience a consumer mashup login to
www.popfly.com and play with it
Some feature about Visual Studio 2008.(listed only few)
- Can run VS 2005 side by side
- Multi Targeting on VS 2008
Can choose different .Net Frameworks like 2.0, 3.0, 3.5 for the development
- Introduced Javascript intellisense & Debugging
- The Major one is LINQ (Language Integrated Query) which has 100% Backward compatibility.
- Lot of improvements in the view like split view for web application.
- Now Ajax extension comes in the Tool box of VS 2008
Improvements in C#
- Object initialiser
- Collection Initialiser
- Anonyimous Type
- Extension Method
- Lamdas
- Query Expression
There were lot of improvements in the Team Foundation Server. Like improved in the Automatic Build, Integration with share point.
The complete list of feature
http://blogs.msdn.com/bharry/archive/2007/08/08/final-tfs-2008-feature-list.aspx
virtual techdays Link
Www.virtualtechdays.com
Friday, March 28, 2008
Issue in Enlisting Send port in BizTalk 2006
As part of the build I exported the port binding(xml file) through BizTalk Administration Console.
For Deployment we are using Nant deployment Framework
I need editing the port binding file. Since I have to put specify information based on the environment (Dev, Test, Stage and production) .
I normally edit the port binding file in notepad. Since my port binding file was too big. I edited the file in VS 2005
After Creating my Kit, I tried to deploy in Dev Server. My deployment failed and was giving following error:"Could not enlist send port '[Send Port Name]' Exception from HRESULT: 0xC00CE557(Microsoft.BizTalk.ExplorerOM) "
01. my binding file successfully imported, 02. when it tries to enlist the port it started throughing error
I tried directly in the Administration console manually. I got the Same error.
Since Portbinding file impoted successfully, assumed that there was issue in the port configuration When I checked the filter page of the port settings there was no filter listed yet there is a filter defined in the bindings file.
I have checked the environmental setting files and portbinding files everything seems ok. Then I realise when i tried to edit VS has poped a message as given below
I have clicked yes
VS tried to make the file looks good. By introducing (CR LF) where ever required. But it has affected the file when it was saved
When I exported the binding file it looks like this
In VS it looks Like below
Can you find any difference. The diffence (CR LF) near
BizTalk BAM - Data Insertion Mechanism
Service Involved
BTSNTSVC.EXE
BizTalk Server Engine
BAM Event Bus Service
Database Involved
BizTalk Management
BizTalk Message Box
BAM Primary import
Storing Data through BizTalk
Role of BizTalk engine
The interceptors get invoked by the BizTalk engine, during execution of Orchestrations or messaging solution
Based on the Tracking profile the interceptor will determine what data to be captured.
At every persistence point the interceptor also send the data to the BizTalk Message box in a binary form, which will be stored in tracking table.
Role of Event Bus Service
The data is retrieved from the Tracking data table (BizTalk message box)
The binary form (which is a serialized .Net Objects), which are rehydrated to objects, Inturn it is converted to sql statements and store the data in the respective activity table in the BAM Primary Import database
Custom Data Insertion
The custom application must use Microsoft.BizTalk.BAM.EventObservation assembly to access BAM Methods of inserting data into a BAM Activity
There are two primary class for inserting data
- DirectEventStream
- BufferedEventStream
DirectEventStream
The data will be directly written to the BAM Activity Table in the BAM Primary Import database.
BufferedEventStream
This class work same as same as BizTalk. The class writes the binary blobs into an indirect database (BizTalk Messagebox). Then BAM Event bus will take care of writing the data to the activity table in BAM Primary Import database.
What Happen when BAM Primary Import database Goes Offline
I have conducted a simple test on BAM to know what happens
I have created a simple BAM implementation on the sample BizTalk solution where it tracks the messageid and process date.
BAM Definition and Tracking profile has been deployed in the respective database using BM.Exe and bttdeploy.exe tools
Expected Result
Number of message should be same as the number of record in the BAM Activity Table.
I brought down the BAM Primary Import database to offline.
Start the BizTalk services and sent 5 message through the BizTalk
Once the BizTalk process is completed. I made the BAM database online
I am not able find the data of the last 5 message for the first few min.
After few min amazingly I am able to view all the 5 message data in the activity table
Findings
01. When BAM Primary Import database is offline the BAM Event Bus Service throws error as
Event Type: Error
Event Source: BAM EventBus Service
Event Category: None
Event ID: 25
Date: 26/03/2008
Time: 12:47:18
User: N/A
Computer: VLONP034T
Description:
Either another TDDS is processing the same data or there is an orphaned session in SQL server holding TDDS lock.A connection was successfully established with the server, but then an error occurred during the login process. (provider: Shared Memory Provider, error: 0 - No process is on the other end of the pipe.) SQLServer: VLONP034T, Database: BAMPrimaryImport.
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
02. The BAM Event Bus waits for the BAM Primary Import database to be online to insert the data.
Based on the above test and Understanding I tried to answer some question
What is the story with writing information/events to BAM when the BAM database is not available (offline, not visible, SQL upgrades etc)?
The BAM Event Bus service will wait for the BAM Database to come online. Then it will send the data from messagebox to the respective activity table
Especially with event streams other than the orchestration one, does the write simply
fail?
Its basically based on what class we use to send the data to BAM
DirectEventStream – if we try to insert the data using the class the. Insertion will simply fail incase of non availability
BufferedEventStream – This class has the ability to write only to the intermediate database. Inserting the data to the BAM database is the job of BAM Event Bus.
Even a buffered stream needs to be flushed at some point. Is this true for BAM use both within and without BizTalk?
If we use BAM using BizTalk message box as the intermediate storage, then BAM Event Bus service will take care of the situation.
If we used direct event stream the insertion will fail simply.