Wednesday, March 14, 2007

Office 2007 compatibility pack

In case you are still running with Microsoft Office 2003 suit and receive a Office 2007 file, then what are your options? You have two options, either get the Office 2007 or get this compatibility pack:

Microsoft Office Compatibility Pack for Word, Excel, and PowerPoint 2007 File Formats

After installing this compatibility check you would be able to view Office 2007 files using Office 2003.

Tuesday, March 13, 2007

An amazing read on Windows Communication Foundation (WCF)

Windows Communication Foundation (WCF) Unleashed

I found this book as a story book. It gave me many first timers, like "Any class that implements WSDL interface is web service". "How DataContract is different than a normal class marked by [Serializable]?"

Author slowly builds the pace, describing the web applications scenario before WCF and even before Web services. Then it comes to WCF. "Has anyone told you before that Windows Forms designer is a Domain Specific Language (DSL) and .Net framework is the library to implement the details of this DSL?" With these details author gets your impression and respect and then take you to details of WCF exposing you to how build your first service. After giving you quite a good taste of WCF, it then introduces you to Windows Workflow Foundation (WWF). It tries to tell you what WWF is and what it is not. It covers how to expose workflow as a service and how to refer service inside workflow.

This book goes on to cover queuing capabilities, security, session management, exposing COM as WCF services and vice versa. It dedicates one whole section to extend WCF and let you know how to implement Custom Behaviors, Custom Channels(Bindings) and Transports. It dedicates separate chapters to manageability(logging, instrumentation) and versioning(removing an existing contract, changing binding etc).

Through out the book you will find references from other books and research papers. Many a places author has chosen to criticize other people's views that expresses author's subject matter expertise as well as his knowledge about what does it take to build one true extensible application (read services oriented application) and what WCF really is.

If you were ever excited about WCF and wanted to learn it the easy way, here your link to success:

Windows Communication Foundation (WCF) Unleashed

I bet you will cherish each and every line of this book.

Tuesday, February 20, 2007

Essence of Service Oriented Architecture

You have long known that web services can be used to build Service Oriented Architecture, so lets discuss something more about it (Please note again, web services are means to achieve Services Orientation. You don't get a Service Oriented system by just employing them).

There is a web service in Microsoft CRM that provides the method Create() to you. It inserts a record at a time in CRM system. Recently I had to upload the data to one of the tables of MS CRM using this web service. You know it is damn easy to write a web service in .Net world, so I got my collection of data, hooked to this web service and started inserting 41K records into MS CRM system. What do you think how long it would have taken? It took me near about 3 hours to insert 41K records as against my local Dev machine where it took 15 minutes. 15 minutes sound good, right? Right.

Then why did it take so long when I tried the same thing with live machine? I have mentioned the problems in following post:

Motivation behind Service Orientation

foreach(User user in userCollection)
      Process user

Here is the problem. What if the collection you are processing is sitting miles away from you? You get all latency possible under the sun. Though you are using "web services" your system is no more service oriented. The same happened with me. Though I have collection I am processing with me but I don't have service sitting next to me. See the situation. I am going to call this service 41K times. Then this service internally create 41K connection to underlying data source (yeah yeah yeah, SQL server provides connection pooling so it wouldn't cost me that much). But you see I am violating the essence of service orientation, where web services should not be chatty. It should not be "Hi, Hello" type. They should do the real business in each call.

How this could have been Service Oriented? Well I have my collection of data. I supposed there should be a service ready to expect any kind of mass data from me and then process it accordingly. This way I would have saved 41K trips to server. It is not chatty any more now. All latency I would gotten is the time to transfer the payload to server. Then data becomes local and service becomes local. It becomes much more sensible. This is the real business value.

After all Service Orientation is about bringing value to business.

Service Orientation is about bringing value to business