Getting ready for 70-300

I've passed the BizTalk exam 70-235, and at last I'm working. My next goal in my certification plan is to pass 70-300 Analyzing Requirements and Defining Microsoft .NET Solution Architectures.

I've had a hate and love history with this exam... I failed it twice, with a 690 score (as you probably know, you pass it with a 700). So it's the time to get it, I'll work it hard... I've scheduled it in September 30th. Now I'm searching materials to study it.

With this exam I will get the MCSD certification (it's too old, but it's the last exam to get it). And with two more exams, I will get the Visual Studio 2005 MCPD.

70-235 passed!

At last, I've been submitted to BizTalk exam 70-235.

I've scored 920 over 1000!!!! Passed! I am Technical Specialist in BizTalk 2006! I'm very happy, because the last BizTalk certification I had was for BizTalk 2000... LOL

The questions were like this (hope this doesn't break the NDA agreement because I don´t provide any specifics from the exam)

  • 7 or 8 questions about BAM. About deployments and Tracking Profile.
  • 10 questions about Business Rules.
  • 5 questions about deployments.
  • 5 or 6 questions about orchestrations.
  • And the rest about BizTalk  messaging.

It was not very hard, but you will need a lot of expertise and experience with BizTalk with some questions (BAM questions were the most difficult ones).

Getting ready for 70-235 exam

Hi again!

As you can see, I've not gone... I'm with some health issues since May (I have two slipped disks), but I'm better now, so I'm studying to be Technology Specialist for BizTalk 2006. If everything is ok and my back does not hurt me more, I plan to take my exam on friday morning.

As I've seen, it's very important to be very accurate in Bussiness Rules and BAM... I'm doing my best efforts on it now!

This is the materials I'm using right now:

  • Pro Biztalk 2006, from Apress:

ProBiztalk2006

  • Professional BizTalk 2006, from Wrox:

ProfessionaBizTalk

  • Dome TestKing
  • Visual CertExam Manager: This is a software (like Transcender) to simulate an exam from Microsoft. The main differnece from Transcender is that you can load any exam you cand find in the Internet with a .VCE extension.

That's all for now... I hope to be luck on this friday!

Virtual PC and NAT

In the bank we are beginning to develop. The support department has provided us a virtual machine with all the software preinstalled and configured (BizTalk, SQL Server, Visual Studio and so on). We have copied it to our local machine and we will use it to work on.

But we have found a problem in this scenario: When we start more than a virtual machine, it fails us giving duplicate network name errors, and we find network problems when we try to access anywhere. But we have two possible solutions.

  • Sysprep'ing the virtual machine, but it will be troublesome, because we will need to change the SQL instance name, reconfigure BizTalk Server... So we will try to avoid it.
  • Configure Virtual PC network as Shared Networking (NAT). With this option, the host machine acts as a proxy for the virtual machine, so the vm is hidden to the network.

After trying the second option, I can see that the NAT is not working. Damn it! After a bit of google research, I found this article: http://blogs.msdn.com/virtual_pc_guy/archive/2007/04/26/virtual-pc-shared-networking-and-the-problems-with-ping.aspx

I configure Virtual PC to run as an administrator, as my host machine runs Vista. And then the NAT works OK for me!

You have to consider that, in this setup, you can no access to the guest machine from the rest of the network (sure! we wanted this setup!).

Back to business

It's a long time since my last post, I'm so sorry, so I'm going to try to write some new articles in this blog.

What happened in my work since my last post?

  • I finished my ASP.NET + AJAX project in the newspaper (thanks to my bosses, for all their effort trying to pick me from this client, I was very stressed there)
  • I was in ilitia's office for a month, recalling all my BizTalk knowledge, playing with BizTalk HL7 accelerator, and developing some proof of concept projects for a ilitia's potential client.
  • And now I'm starting to work on a bank's office, working again with BizTalk 2006 (at last!). I'm working again with the things I like most.

So expect some articles with my new discoveries and tricks with BizTalk!

WTF? My SQL is dying!

In our application, we have a serious problem in SQL Server. The CPU of this server is overloaded and we need to address what causes this overload.

And I've found an interesting article I need to remember:

SQL Server Performance

In the next article we will see how we can improve the performance of the server, but I don't know what recommendations in this article we are going to apply, because the SQL database is tightly attached to CRM and maybe changing it's indexes is not supported.

ViewState: Changing where it is stored

As you probably know, the ViewState is stored in our pages, in a hidden field. In this case, the view state is sent and received by the client browser, persisting the state of the page between postbacks.

This is the most acceptable scenario, but what happens if we have bandwith troubles? The performance of the application will suffer, because all the ViewState data is sent / received by the browser in all the psotbacks. But we can change this behavior, and save the view state in our Session object. To achieve this, we only need to override this method in our Page code-behind:

   1: protected override PageStatePersister PageStatePersister
   2: {
   3:     get 
   4:     {
   5:          return new SessionPageStatePersister(this);
   6:     }
   7: }

 

By the way, you need to take care and see how much users will use your application and how much data do you store... If we have a lot of concurrent users or we store a lot of data in ViewState, it is possible to overload the web server or the session state server.

Web testing a Cookieless application

I'm working in an cookieless application. A cookieless application cannot store the SessionID in a cookie, and it is stored in the Url, so when a user request the first page in the application, the server redirects the user to a url with this SessionID in it.

When we capture a session to do a web test (see previous post here), we capture also the SessionID, and this ID will be in hardcode in all requests. So we need to take the new SessionID in the first request and replace it in all pending requests.

To achieve this, we need to create a CustomExtractionRule, creating a new class inheriting ExtractionRule:

   1: using System;
   2: using System.Collections.Generic;
   3: using System.Text;
   4: using Microsoft.VisualStudio.TestTools.WebTesting;
   5:  
   6: namespace WebTest.Funcional
   7: {
   8:     public class ExtractCookielessSessionId : ExtractionRule
   9:     {
  10:         public override void Extract(object sender, ExtractionEventArgs e)
  11:         {
  12:             if (!e.Response.IsHtml)
  13:             {
  14:                 e.Success = false;
  15:                 e.Message = "The response did not contain HTML";
  16:             }
  17:  
  18:             //Get the cookieless SessionID 
  19:             string beginSessionId = "(S(";
  20:             string endSessionId = "))";
  21:             string url = e.Response.ResponseUri.AbsoluteUri;
  22:             int inicioSID = url.IndexOf(beginSessionId);
  23:             int finSID = url.IndexOf(endSessionId);
  24:  
  25:             if (inicioSID >= 0 && finSID > inicioSID)
  26:             {
  27:                 string sessionId = url.Substring(inicioSID, finSID - inicioSID + endSessionId.Length);
  28:                 e.WebTest.Context.Add(this.ContextParameterName, sessionId);
  29:             }
  30:             
  31:         }
  32:  
  33:         public override string RuleName
  34:         {
  35:             get { return "ExtractCookielessSessionId"; }
  36:         }
  37:  
  38:         public override string RuleDescription
  39:         {
  40:             get { return "Extracts Cookieless Session Id"; }
  41:         }
  42:     }
  43: }

 

When we have this class, we have to compile our test project. Then we add a new extraction rule to our first request, giving a value SESSION to it's Context Parameter Name (Extracting to SEESION context parameter the SessionID of the request).

addextractionrule

Then, we just need to replace the SessionID with the value {{SESSION}} in the requests:

steps

Now, when we run the web test, we can see a new SessionID for each test instead of reusing the captured SessionID.

Technorati Tags: ,,

Welcome!

Hi!

This is my new English blog... I will try to translate all my tech and geek posts from my Spanish blog here at zorrynet.com...

I am a .Net developer, I am working with BizTalk 200x, ASP.Net and Ajax... Expect some new info about all troubles found in my projects...

And please, excuse my English, I'm Spanish and my English is almost gone...

See you soon!

Performing load testing in Ajax application

In the project I'm currently working, we need to perform our web application under stress conditions. To create and run our tests, we use Visual Studio 2005 Team Suite.

In my first approach, I did a web capture with the native tool in Visual Studio. It did not the work properly, because our application is Ajax enabled, and this tool did nos capture all the Javascript asynchronous requests to the web application... So the tests are not complete and we need another approach to create the tests.

The best solution I found was using Fiddler to do the capture. I launch the tool, then I start a browser, and then I do the navigation test. Fiddler saves all the requests from the browser to the application, including all Ajax requests. Then I can save those requests as a Web Test for Visual Studio.

And now, I can use this webtest file inside my test project in Visual Studio 2005, and I can do the stress test properly! :-)