Monday, March 08, 2010

Understanding Windows Server AppFabric - 5 Important Questions ...Answered

I am super excited about the public beta 2 release of Windows Server AppFabric. I am also hoping that you are also (if not more, than almost as) excited about this extremely useful and game changing offering from Microsoft.

However if you are one of those people who are still wondering what's this 'Windows Server AppFabric' and why is it important for you then you have come to the right place. In the last few weeks I have been asked few recurring questions on Windows AppFabric Fabric and it made a perfect sense for me to write a blog post (or perhaps a couple of them) on this topic.

At the moment I am thinking about making this a 3 part series which we will cover following areas:-

1- Try to answer some of the common questions around Windows Server AppFabric

2- Discuss business use cases that require use of Windows Server AppFabric

3- Discuss Windows Server AppFabric Architecture and its extensibility points


In this first post I will solely try to outline the technology side of the story and try to answer following common set of questions:-

Q: What is Windows Server AppFabric:

Let’s see what MSDN has to say:

Windows Server AppFabric is a set of integrated technologies that make it easier to build, scale and manage Web and composite applications that run on IIS.

In a nut shell, AppFabric

- is an ApplicationServer that allows you to build composite (WCF and WF) services that can horizontally scale out.
- offers enterprise scale distributed in-memory caching (that can, again, scale out horizontally)
- makes managing and monitoring services extremely easy through streamlined dashboards (via IIS) and Windows Power Shell Cmdlets

So, the key words are Services, Composite, Scalability, Distributed, In-Memory Caching, and ease of Management.

Q: Why/When should I use AppFabric?

We are not going to talk about business use-case in this post but surely we can discuss AppFabric's technical features that are extremely useful for developing composite service oriented applications.

You should definitely consider using AppFabric, when among other things, you... :-

- need your services to be scalable i.e the ability to expand from one node to hundreds and thousands nodes

- want to use application level in-memory caching that is highly available, performant and distributed across number of nodes


- want to be able to monitor your hosted services


- want the ability to manage your services using IIS as well as
Windows Power Shell Cmdlets

Q: But... hold on...what happened with
Oslo, Dublin and Velocity?

As a matter of fact, simply put mathematically, Windows Server AppFabric = Dublin + Velocity.
These days Oslo is more focused on data modelling and you find more details on Oslo here

Q: What are the key features of AppFabric:

Some key features of AppFabric include:-

- Hosting with message based activation i.e. Auto-magic lifecycle management based on incoming messages (more on
hosting here)

- Streamlined configuration and monitoring via a centralized IIS Management console and Windows Power Shell Cmdlets (more on
management tools here)

- Distributed, high performing, highly available, in-memory application caching (more on
caching here)

- Seamless integration with IIS, WCF and WF (more on development here)



Q: How can I develop applications that can leverage AppFabric functionality?

Very simple! Fortunately, one of the good things about AppFabric is that any WCF/WF application/service built using following Visual Studio template leverage AppFabric feature-set.

- WCF Service Application

- WCF Workflow Service Application

- WCF Service

In fact, AppFabric (goes an extra mile and) looks for services created using these templates and applies default configurations for persistence and monitoring.

I believe that's it for now and in the next post, we will try to cover common use cases where we can run our services on AppFabric add utilize its feature-set to build scalable, composite and robust services and platforms.

Sunday, February 28, 2010

3 Important Questions on Software Complexity

3 Questions that I am going to cover tomorrow in my talk:

- Why is software complex?
- What is bad design?
- How to fix it?

See you tomorrow at TechEd

Tuesday, February 23, 2010

Why is it important to attend my 'Combating Software Entropy Session' at Tech-Ed Middle East 2010


I just quickly wanted to write down a brief introduction to my 'Combating Software Entropy' at Tech-Ed Middle East 2010

Session Outline:

In this session we are going to talk about

- How to tackle inherently complex nature of a software
- Gaining an insight in to the heart of the software design
- Heuristics associated with the software design and architecural patterns and practices
- What is bad design and how to fix it?

Audience:

Intended audience of this session in-general includes all the stake holders in software development process i.e. from Developer to Architect to Project and Program Manager and even CTOs and CIOs. However I have focused specially on targeting Software and Solutions Architects, i.e. individuals or teams responsible for the overall design and architecture of the solution. So, if you consider yourself as a stake holder in Software development process then you should be attending this session.

Thursday, February 18, 2010

DotNetME Podcasts are live!

I am pleased to announce that DotNetME Podcasts are live now !!!
To start with we have published our first episode that talks about SOLID principles. In this episode my good friend Ron is asking me about the desing principles around

- OCP : Open Close Principle
- SRP: Single Responsiblity Principle
- DI: Dependency Inversion
- LSP: Liskov Substitution Principle

The show was recorded way back in October 2009. Its a bit late but I'd say its all worth it. So download it, listen to it and let us know yor feedback.

Attending MVP Summit 2010

A quick update, I am in Seattle, attending MVP Summit 2010 these days.

Its a wonderful experience to sit with all the CSD folks here at Microsoft Campus. A lot of discussion has been around with the v next of the platform, which is absolutely exciting.

I will definitely try and build some content around some key technologies that we are discussing here (obviously only covering the public information). So stay tuned for bunch of posts around Windows Server AppFabric, Microsoft Dublin , Microsoft Velocity, WCF4 and Windows Azure

Friday, February 12, 2010

My Top 11 Programming Books

Following is my top 11 programming books (in no particular order):-

1 - Code Complete 2

2 - CLR via C# 3rd Edition

3 - Agile Software Development, Principles, Patterns, and Practices

4 - The Pragmatic Programmer

5 - Rapid Development

6- Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition

7-Thinking in C++

8- SOA Design Patterns

9- Becoming a Technical Leader

11- Enterprise Integration Patterns

Take a look at Jeff Atwood's list here.

Also, worth looking at is the list by Joel (of 'Joel on Software' fame) here.

I will share the complete list of books that i own some other day :)

Let me know which ones do you like and which ones you dont...

Thursday, February 11, 2010

Agile Best Practices : Refactoring

Yesterday, 10th Feb 2010, i was invited to speak at a Techies UG event, here in Dubai, UAE.

I started off the discussion with defining the practice of refactoring and i quoted Martin Fowler's blog as following


•Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior.

•Its heart is a series of small behavior preserving transformations.

•Each transformation (called a 'refactoring') does little, but a sequence of transformations can produce a significant restructuring.



After this we moved on to the best practices for refactoring classes. Following is a list that we discussed:-

  • Comments
  • Long Method
  • Long Parameter List
  • Duplicate Code
  • Large Class
  • Type Embedded In Name
  • Un Communicative Names
  • Inconsistent Names
  • Speculative Generality

The session was very intense with everyone chipping in with their comments and i thoroughly enjoyed hosting it. Towards the end Anton and I wrote couple of code snippets to check the Andrew idea of using Interfaces (more on it later on). Rolf also chipped in with his comments and critiques. Notable absentees were Ron and Zubair and it would have been much more fun had they attended the event.



ps: watch out this post for snaps from the event.

Edit#1: Rolf's blog post on the event is live http://techiesleaders.spaces.live.com/Blog/cns!50531D3D6442376A!214.entry