Wednesday, October 22, 2008

Book Review: Microsoft.Net Framework 3.5 Windows Communication Foundation Self Paced Training Kit

I have recently read the Microsoft.Net Framework 3.5 Windows Communication Foundation Self Paced Training Kit book and figured I would post a review of it for anyone debating purchasing this book.



Everyone has opinions about books and definitely technical books. I am going to try to stay away from opinions as much as possible, focus on the features of the book and what you can expect when reading it.

This book has LOTS of content, which isn't always a great thing but when you get a wide variety of content it adds a lot of value. When I say content, I am referring to all of the features that you will find in every chapter in the book. This includes:

  • Real World Sections - Real world scenarios are discussed that are relevant to the chapter that you are currently studying. The author will usually look back upon some of their scenarios and experiences to provide some insight into the topic that is currently being discussed.
  • Chapter Objectives - How this chapter is applicable to the exam.
  • Quick Checks - a mid chapter check-point to empathize a point or to test you on a recently discussed topic.
  • Labs - that include before and after solutions for you to work on. Step by step instructions are included.
  • Exam Tips
  • Lesson Summary - Chapters are broken down into Lessons to break the information into manageable chunks.
  • Lesson Review (Q and A) - At the end of the Lesson you are presented with some relevant questions regarding the section you just read. The answers are provided at the back of the book.
  • Chapter Review - At the end of the chapter, some further practice is recommended to enforce what you previously studied.
  • Chapter Summary
  • Key Terms
  • Case Scenarios - The Authors give you a hypothetical situation that is relevant to the chapter that you just read. You then think about the problem and how you would solve it. They provide you with their answers at the back of the book which allows you to compare your notes to theirs.
  • Suggested Practices - Additional information or resources that are applicable to the chapter just read. These resources include MSDN web casts which may be provided on the CD that comes with the book or a link to an online resource.
  • Practice Tests
  • Sample Code - This book provides sample code in both VB.Net and C# so no matter your (.Net) language of choice you will find suitable examples.

The book is very comprehensive with topics that include:

  • Contracts
  • Exposing Services
  • Deploying Services
  • Consuming Services
  • Configuration
  • Instrumentation
  • Infrastructure Security
  • User-Level Security
  • "When simple isn't sufficient"
  • Sessions and Instancing
  • Transactional Services
  • Concurrency

I really enjoyed the Instrumentation chapter, perhaps because I learned quite a bit from that chapter. It discusses how to trace your WCF services(basic and end to end), Extensibility and Monitoring your WCF services. While the ABC's (Address, Binding, Contracts) of WCF are the most talked about features of WCF, I thought the authors did a a good job of the "Operations" side of WCF.

Who this book is for

In my opinion, I think this book is ideal for someone who has some good experience with WCF that perhaps has not explored all of the features of WCF. This is definitely not the book you start with, but rather a book where you can re-affirm what you do know and get some exposure to what you may have missed or lack in experience.

Do I recommend the book

Yes, if you plan on using it for the purposes I have previously stated. The book is well-written, engaging and interesting. It is definitely not a book that you struggle to get through. As already mentioned there is so much content that whether you are looking for real world scenarios, exam tips, practice questions or labs you are bound to find value in this book.

Additional WCF Resources

Prior to reading this book I enjoyed the Windows Communication Foundation Unleashed book and recommend watching Michele Leroux Bustamante's web-cast series. She also has a book but I haven't read it so can't comment on it.

Tuesday, October 21, 2008

Business Rules Engine (BRE) Customer Survey

Do you use BRE? Do you have any feedback that you think the product team could benefit from?

If you answered yes to either of these questions, I suggest that you fill out the following survey. The results of the survey(collectively) may have an impact on the next version of the Connected Systems - Rules engine.

Thursday, October 16, 2008

PAL is still a good friend of mine

A new colleague of mine was experiencing some issues with performance in our BizTalk test environment. They hadn't heard of PAL before so I gave them a quick walk through. When I launched the PAL site I noticed that Clint Huffman had recently updated his tool.

The current version of PAL is 1.3.4.1, when I initially blogged about PAL the version that I was running was 1.1.8.

The tool's purpose has remained unchanged. PAL continues to provide empirical data based upon defined Performance Counters that are related to your Product(s). Green/Yellow/Red indicators are used to tell you when your counters are "Safe/Warning/Critical".

From looking at the GUI and the feature's list, here are some of the changes that stuck out for me. This is a non-exhaustive list(some points copied from official site):
  • The ID Process (PID) for each of the BizTalk 2006 host instances has been added to make it easier to identify them. A side note is that if you want to see the name of the BizTalk host as long as you know the PID you can execute the following from a command prompt: tasklist /svc /fi "imagename eq btsntsvc.exe

  • Some of the analyses in the other Exchange 2007 threshold files did not make it into the single file.

  • The PAL installation wizard now detects if Microsoft Office Web Components 2003 is installed and if Microsoft Log Parser v2.2 is installed. If they are not installed, then the installer points the user to the installation URL for the respective product.

  • A Windows Server 2008 Hyper-V threshold file has been added to PAL. This is a beta release of this threshold file pending review from other subject matter experts.

  • The ability to "queue" multiple vbs instances so they are run as a group instead of you executing individually.

  • The UI now supports time range restrictions - meaning the perfmon log can be restricted to a time range

  • UI is now "wizard based" - what can I say Clint works for Microsoft. :-). It is cool though, it is more intuitive than the previous version.
Below I have included some images that highlight some of these new features.







Saturday, October 11, 2008

Testing Web Services - .Net WebService Studio

I am currently engaged in a project which involves integration with a 3rd party using Web Services. A colleague recommended a tool to me called ".Net WebService Studio" for testing Web Services. He was using this tool on his project and had nothing but good things to say about the tool. The tool itself is available for free on Codeplex by Adnan Masood.

Within my project, I am hosting a Web Service and the 3rd party is hosting several Web Services. So during some of my unit testing and before I exchanged WSDLs with the 3rd party I wanted to be able to submit messages to BizTalk via my Web Service. My BizTalk Web Service was generated by the "Expose Orchestration as Web Service Wizard" and is a traditional two/way, request/response service.

In the past I have built my own 'stubs' that would allow me to send in messages that satisfy my testing scenarios. This resulted in a lot of code that eventually is just thrown away. Using .Net Web Studio allows for a Proxy to be download "on the fly". So you basically point the tool at your Web Services and start submitting messages without writing any code!

The first thing you are going to want to do is launch the application and input your Web Service URL in the WSDL EndPoint dropdown. A list of recently used URLs is kept so you don't have to remember a long list of URLs.




The next thing you are going to want to do is click on the "Get" button. This will generate the Web Service Proxy for you and is required in order for you to invoke the Web Service.

You are now in a position to invoke the Web Service. The application is capable of sending some basic data to the Web Service based upon the expected data types. It works similar to the way the "Generate Instance" works when wanting to generate a sample message from a Schema in BizTalk/Visual Studio . In order to Invoke the Web Service you need to select the Operation(or Web Method) that you want to invoke and click the "Invoke" button. Once you have clicked the button, the Response of the Web Service will be displayed in the "Output" text box in the lower left corner.


From this screen you can also modify the "default" values that Web Service Studio is going to use by clicking on an element and then updating the value in the top right "quadrant".



By clicking on the "Request/Response" button, you are able to see, and modify, the actual SOAP request that is being sent to the Web Service and the SOAP Response that is being returned to your client.



This screen also allows you to tweak your SOAP request in case you have some additional security, content type or Proxy requirements.

Overall I think the tool is great and definitely a worth having in your "toolbox".

Tuesday, October 7, 2008

Canadian Tech Days Update

For those of you that are interested, the Tech Days site has been updated. Do note that the Early Bird prices are in effect until October 15th, 2008.

The sessions, tracks and presenters are also listed on the web site so check it out!

Sunday, October 5, 2008

BizTalk Mapper: Ensuring that Node Exists before calling scripting Functoid

A scenario that I have recently encountered is that I have an optional element coming in that, if present, requires some manipulation before it can be assigned on the outbound message. The problem that I encountered is that an exception is raised when the map is executed and has nothing to pass to the scripting functoid.


Below is an image of my original map. All elements are required except Operation. The Operation element is of type long and a third party system will be sending this so we don't have total control over the data types. The equivalent element on the destination message is VORNR which happens to be part of an SAP IDoc. The element on the IDoc is also optional, but if it is provided, it needs to have padded values to make it a 4 digit string. So if 220 is provided by the source system then 0220 needs to be passed to the IDoc.


Below is an image of a message sent in without the Operation element. The issue is that if the element doesn't exists, then BizTalk will generate the following exception(truncated for readability):
Exception type: OverflowExceptionSource: mscorlibTarget Site: Int64 System.IConvertible.ToInt64(System.IFormatProvider)The following is a stack trace that identifies the location where the exception occurred


So to get around this, I have added some checks in the Map to ensure that the scripting functoid is only called when the Operation element exists.


The checks come in the form of Logical Existence and Value Mapping functoids. The Logical Existence functoid will return "True" or "False" based upon whether or not the element/attribute that you connect it to exists. You then use this output to feed the Value Mapping functoid. The Value Mapping functoid requires two inputs:

  1. An boolean indicator that if True will output the 2nd input
  2. The 2nd input will be passed to the next functoid(or element) should the 1st input be true.
Without the scripting functoid, BizTalk takes care dealing when elements exist and when they do not. The addition of the scripting functoid creates some issues when the Optional element is not provided in the message. But, with a couple standard functoids, a check can be made that only calls the scripting functoid when the element is provided.

Wednesday, October 1, 2008

Microsoft - Dublin

No this isn't an announcement for a new Microsoft office in Ireland, but rather the latest technology announcement coming out of Redmond. Microsoft has publicly released some information regarding .Net 4.0 and the new "Application Server Extensions". This announcement is significant as Dublin will allow for:
  • A standard host for WF/WCF applications
  • Tooling and Managment for the application server
  • Support for scale-out durable messaging
  • Scalable monitoring and diagnostics
  • Message based correlation
  • Long Running applications
  • Management functions via IIS Manager

Much like the BizTalk Server 2009 announcement that occurred a few weeks back, I think Microsoft wants to clear the air and provide a glimpse into what the future holds before developers make their way to PDC in LA later this month.

As much as I am a "BizTalk guy", I am very encouraged with where Microsoft is taking the Connected Systems Division. If nothing else, I feel that the WCF/WF technologies provide options for developers when implementing solutions. Microsoft has already announced their committment to BizTalk, so it is not disappearing any time soon. It should be interesting to see some of the solutions that people come up with using Dublin.

For more information regarding this annoucenemt, please visit Steve Martin's blog.