Programming WCF services

The last few days i’ve been reading the book “Programming WCF Services” by Juval Lowy. I was looking for a book which isn’t a representation of msdn, like training kits. Just a book which describes how to write good quality WCF services. I think that Juval Lowy did a great job with his book. He is sharing his knowledge and experiences through out the whole book. Even though i think this book isn’t for starters of WCF. Juval starts with an introduction about the framework and tells more about the basics like Datacontracts, Messagecontracts, Faults and Operations. Chapters I really liked were Instance management, Transactions and Concurrency Management. These three chapters have a lot do with each other. When you already have experience with WCF and you want to read a book which still can learn you more about programming WCF services, this book is highly recommended.

Regards,

Dennis

SOA Principles of Service Design

by Thomas Erl 

The last few weeks when i had some time i was reading the book SOA Principles of Service Design by Thomas Erl. I really enjoyed reading his book. I wanted to know more about SOA because on my last project we touched some of the issues you could ran into when working with multiple products which must communicate with each other through webservices. SOA is a word which is used very often but i couldn´t see what it´s all about. The Book of Thomas is a very nice book to read when you want to learn more about SOA. I read some comments about the books and these were made by Senior architects and developers with a lot of experience and they all were very entousiastic about the book, so i decided that this was the book who will lead me into the worl of SOA.

The book is devided into 4 parts:

  • Part I Fundamentals
  • Part II Design principles
  • Part III Supplemental
  • Part IV Appendices

Before he starts with the fundamentals part he gives you a case study. This case study will be used to describe how a company implemented each Design principle and what kind of choices they made. I think this case study is very helpful to complete each chapter. In the Appendices you will see the final solution of the case study. After the case study Thomas starts very basic where he is explaining how the book is organized what kind of symbols he is using and what they mean. He describes what kind of Design fundamentals you got and how there are related to each other. The Fundamentals he is talking about are:

  • Design Characteristic
  • Design Principle
  • Design Paradigm
  • Design Pattern
  • Design Pattern Language
  • Design Standard
  • Best Practice

He describes three kinds of service models which he sometimes will refer to when he is describing the design principles. The three service models that are classified are:

  • Task services
  • Entity Services
  • Utility services

These three service models exist in there own logical service abstraction layers. Because these service models have there own responsibility when you compose services to support one kind of task, you can understand that all the design principles have different effect on these models. When there is a difference between these models in combination with the design principles Thomas is explaining how the principle will have effect on them. 

At the end of the fundamentals part he introduces the principles he will explain step by step in the second part of the book. The Design principles he describes are:

  • Standarized Service Contract
  • Service Loose Coupling
  • Service Abstraction
  • Service Reuseability
  • Service Autonomy
  • Service Statelessness
  • Service Discoverability
  • Service Composability

When i saw these principles for the first time i thought why is Service reuseability and Service Composability divided in 2 principles? When you use a service in multiple compositions you are reusing them right? Well you have to read until chapter 13 where Thomas answers that question because they can live without each other :).

All these design principles have sometimes strong and sometimes weak relations with each other. There are a lot of things you will have to ask yourself if you want to implement a good service inventory which will give you a huge benefit along the way. Thomas makes this very clear to the reader. He describes the benefits and the risks you are taking when implementing one of the design principles.

In the third part of the book he is comparing Object-Orientation with Service-orientation. He compares the principles of object orientation with the principles of service orientation. Here you will see that a few of the principles of object orientation will also be used in service orientation. Another chapter in the third part of the book will give some pratices about how to use Service profiles vocabularies and roles within a SOA project.

I definitely recommand this book to every developer who is willing to learn more about SOA. Even if you are new in the SOA-World. It was pretty easy to read and gives you a clear understanding of SOA. Because i liked this book so much i also ordered “Web Service Contract Design for SOA” (also written by Thomas Erl). In this book he will give the technical details.

Regards,

Dennis

Naming convention

I see ( in code) and hear many times developers discussing naming convention. Should this paramater start with a capital character of not? In other words when should i use PascalCasing and when camelCasing? Well it could be confusing when you are talking to different developers with different ideas. Who is saying the right thing? (The discussion when is something right is not part of this post 🙂 ). I am reading a book Framework design guidelines by Krzysztof Cwalina and Brad Abrams and they discuss this issue. I want to show you a table from this book which is very clear which naming convention you can use in which situation:

Identifier Casing Example
Namespace Pascal System.Security
Type Pascal StreamReader
Interface Pascal IEnumerable
Method Pascal public virtual string ToString();
Property Pascal public int Length { get; }
Event Pascal public event EventHandler Exited;
Fields Pascal public static readonly TimeSpan InfiniteTimeout;
Enum value Pascal FileMode{

Append,

}

Parameter Camel public static int ToInt32(string value);

This could be a good start when every developer is using the same naming convention. This will make it easier to read code from another developer, but this is just one piece there is more! This subject is just a paragraph in the book. If you want to know more about naming conventions and programming guidelines you should check the book. It is written very clear and easy to read.

Ajax for Web Application Developers

    Hi,Like i already told i’am very interested in the MS Ajax technology. I also knew that this technology wasn’t a new one. So i decided the read a book about Ajax. The book that i found at the local bookstore was: “Ajax for Web Application Developers, Kris Hadlock”.I think that this book gives you a good impression about the Ajax technology and what comes around when you want to use it. When you read this book you also get a little idea what Microsoft already has done for us developers with releasing MS Ajax. I think that this book is very welcome for developers who are starting to work with the Ajax technology. Enjoy it!
    Ajax for Web Application Developers