The Need to Focus on Manageability in Enterprise Solutions

Have you ever deployed your application in multi-tier environment by developing and deploying services? Developing service-based and service-oriented applications are common nowadays.These approaches improve the application scalability and make maintenance more easier than the past.So many architects suggest companies to choose 3-tier or 4-tier deployment and sometimes encourage them to move toward Service Oriented Architecture (SOA).They emphasize on some quality attributes and sometimes forget to consider some of the important one : Manageability.

“Manageability defines how easy it is for system administrators to manage the
application” (Microsoft Application Architecture Guide, Second Edition)

 

Considering Manageability in 3-Tier Solutions

Assume that we are developing an application with 3-tier architecture style in hand.It is an enterprise application with a lot of services that are deployed on the application server.What are the main features we need to support manageability aspects of our solution? The following issues are common in this situation:

  • How do we provide robust hosting environment for the application?
  • How many of services are getting activated? What is their status?
  • Are you getting errors?
  • How do we set service settings in a centralized location?

Introduction To AppFabric

Windows Server AppFabric is an infrastructure to extend Windows Server functionality in hosting, management and caching of services and web applications. Before AppFabric you have to develop some infrastructure to manage services by using .Net, Windows Process Activation Services (WAS) and Internet Information Services (IIS). The AppFabric hosting capabilities add more manageability features to mentioned products.

 

AppFabric Features

  • Service Hosting
  • Service Management
  • Service Monitoring
  • Service Configuration Management
  • Distributed Caching
  • Workflow Persistence Management

If you look at these features, you find out that most of them are about management of components.After Biztalk Server ESB guidance, it is second module from Microsoft that helps in providing enterprise solutions in Service Oriented Architecture approach.

 

Installation Requirements

Supported Operating Systems:Windows 7;Windows Server 2008;Windows Server 2008 R2;Windows Vista. Internet Information Services (IIS) 7

Download Location

 

Additional Resources

You can find out some useful information at AppFabric section of MSDN :


Quote of the Day:
None of you really has faith unless he desires for his neighbor what he desires for himself.
--Prophet Muhammad

Tags: , , ,
Comments (3)

 

 

Introduction

In the post “How to Speed up Application Startup Performance -General Guidelines” I described some best practices to improve startup time of an application.One of the best practices that I mentioned in that post is “Avoid unnecessary initialization”.In this post, I’ll explain some guidelines for achieving this goal.First, I’ll list common activities that are done in  the startup of the application.Then I’ll describe techniques that can be used for doing those activities in a manner that have lower negative impact on application performance.

Common Application Initialization Activities

Before using the application by users, we must prepare the proper state for the application.This preparation is about settings, UI components, Component Settings and Caching behavior.The following list includes activities that are common in the application initialization :

  • Load Settings
  • Proactive Loading
  • Check Server Connectivity
  • Load Main Form’s(Page’s) Graphical Items
  • Load Main Form’s(Page’s) Components
  • Check Application’s Health
  • UI Customization
  • Load Plug-ins
  • Load Offline Data

Guidelines

The following are techniques that can be used to shorten startup time by improving the initialization module in the application :

  • Invoke asynchronously
  • Use lazy initialization
  • Do it as a manual action
  • Use lightweight components
  • Use partial initialization
  • Do it when application is idle

Activity/Techniques Matrix

You can employ the above techniques for speed up your application startup time.In the below table, you can find out each activity and proper techniques you can use.

 

Improve application startup 


Quote of the Day:
All my life, I always wanted to be somebody. Now I see that I should have been more specific.
--Jane Wagner

Tags: ,
Comments (1)

 

Application Startup Time is Now Important that the Past

Imagine that  you are running an application and you are waiting for the application to load! How much time can you wait? Application startup time is the first point of interactions between user and application and it affects user’s satisfaction.These days, some companies like Google have chosen application startup time as a core competency of their products.

Browsers Fight as an Example

Browser Speed Tests: The Latest Chrome, Firefox, Opera, and Safari—on a Mac

 

In browsers fight, the startup time of a browser is very important now and this change our users' taste about application startup time and they expect us to improve our application startup time even better that the past!

General Techniques for Improving Application Startup Time

Improving startup time of the application can be done into two categories :

  • Properly using of programming platform
  • Writing better code

Properly Using of Programming Platform

Each programming platform has its own tips and tricks to gain much more performance of it. Generating native image of assemblies in .Net Framework skips Just-In-Time compiling of intermediate code into machine languages and speed up application startup. By using ngen.exe, you can improve performance of managed applications.As an another example in web applications, consider responding to first request to a web application.If it takes a long time to receive response of the ASP.Net web applications at first request, you can use ASP.NET Compilation Tool to precompile the application in place.

 

Writing Better Code

You must take into consideration performance concerns when writing and reviewing application initialization code.Write codes that adhere to the following rules:

  • Load fewer components at startup

One of the major issues about application startup is number of components must be loaded at the first. Decreasing this improve startup of the application.You can use techniques that need fewer component or you can postpone some activities at the start of the application.

  • Avoid proactive loading.

Proactive loading  is some kind of caching contents, states in the application.By using this method, you retrieve some of the required data at the startup and caching them for future usage.Doing this means increasing application startup, so be careful when using proactive loading and try to avoid it, if it is not necessary.

  •  

        Future Post

  • In the next post, I’ll describe some techniques to achieving the above goals.

Other Resources

The following are some useful resources for .Net Developers about application startup performance:



Quote of the Day:
The difference between fiction and reality is that fiction has to make sense.

--Tom Clancy

Tags: ,
Comments (0)

Links

Comming soon...

My Photos

Comming soon ...

About this blog

Blogging some thoughts about technical issues in the following area : Application Architecture, IT Governance, Security, Performance, Patterns and so on.

Archive