What’s Windows Azure? (Part I)

Well we will talk today about one of the Windows Azure Platform Component that called Windows Azure, But many will ask what’s the difference isn’t Windows Azure the platform that Microsoft offers as a cloud solution? … The answer is definitely no, The term Windows Azure is one of the Windows Azure Platform components not all of it, When we talk about Windows Azure Platform we should take into considerations Windows Azure & SQL Azure & AppFabric, In this post i’ll be focusing the lights on Windows Azure

Here comes another question that anybody may ask Is Windows Azure an Operating System?, Well the answer is Yes, Windows Azure is the core operating system for the cloud which provides the ability to run applications in a highly scalable manner in Microsoft Datacenters in manageable way, You can host a web application (i.e., Website that sells cell phones), or a back-end processing service (i.e., Picture to Text converter), If you need more computing power to run your application you can allocate it so you can handle more traffic or process more data

Another question will come into your mind How exactly is that an operating system?
Well to answer this question we need first to define What’s operating system?, When the term operating system is here sure we think about (Windows 8, Windows 7, Windows Vista, …etc.) these are the traditional operating systems we all know about but What’s exactly these operating systems do?

  • Host and run applications.
  • Remove the complexities of hardware from applications.
  • Provide interface between users and applications.
  • Provide mechanism that manages what’s running where and enforce permissions in the system.

After having a look to the attached picture, Have you noticed that the applications don’t have direct access to the hardware?, All the interactions must go through the Kernel (The low-level operating system component that performs tasks like processing, memory management, and device management), Hosting and running applications is the most important task of the operating system (Imagine an operating system without applications and you will know what i mean), Ok talking about applications what kind of applications i’m running on my PC which has a traditional operating system installed on it (i.e., Windows 8)?, For instance i’ve Microsoft Office, IE, Mozilla Firefox, RealPlayer, Game called Assassin’s Creed … All of these considered as application whatever it’s game or browser or media player it still an application, But!!! Do you think i’ll host and run these kind of applications in Windows Azure?
Of course no these are an end-user applications, But the type of applications we host in Windows Azure are server applications such as web applications (i.e., Facebook) i know it’s a big example πŸ™‚ But it still a web application, So let’s go back to the applications i pointed for up the post (The website that sells cell phones & Photo to Text converter), Can these applications run in a traditional operating system?, Yes it can there is no real difference between Microsoft Excel and Photo to Text Converter, They all considered as applications to the operating system.

The traditional operating system is responsible for allocating CPU time, Memory space that allows your application to run, Not only this the operating system is responsible too for manage these resources (i.e., When application crashes then the operating system should release the resources that the application acquired and restart the application if necessary) and this level of abstraction is perfect for an operating system that manage a single server, But!!! it’s different when it comes to the cloud operating system it wont be scalable, In Windows Azure your application may not be running on a single-server but parallel on thousands of physically separated servers, A cloud operating system can’t be responsible for allocation CPU time and Memory usage on thousands of physically separated servers this should be abstracted away from the operating system.
Here comes another question So what’s responsible for doing this?, This responsibility is given to Virtual Machines (VMs), Windows Azure use VMs to achieve separation of services across physical servers, Each physical server is divided into multiple VMs, So let’s have a slight look to the VM.

AzureVMsmall The physical server is divided into multiple VMs, Every instance of your service (Web or Worker role) is installed on it’s own VM, Which is based on Windows Server 2012, The VM hosts the web application within (IIS).

So your application run on VM, But the VM is abstracted away from you and you have a view only of the role instance not of the VM, A single instance of your web application is assigned to a single VM which no other application can share it with, So the application is isolated from other applications running on the same physical server, The VM also runs an agent process (I’ll explain it later)

NOTE: Web Role is a VM that hosts your application within IIS, Worker Role is the same as Web Role but without IIS (it’s used for back-end processing stuff).

By the end of the post hope that you liked it πŸ™‚ this post is continuous i’ll soon post the next part πŸ™‚ Thanks a lot.


Windows 8 Editions And Difference Between Them

Lot of people keep asking of what edition of Windows 8 is the best? Or which one should i install on my computer? . . . Well actually there is no edition can be described with the word (The Best) as the best for me maybe not the best for me . . . (It depends on your usage and the features you need) Let’s take a look first to the Windows 8 editions then i’ll explain the difference between them so you can have a fair judgement of which edition you shall use . . .

Going back in time to Windows 7 there was (Starter, Home Basic, Home Premium, Professional, Ultimate and Enterprise Edition), Now Microsoft wanted to make it easier for the user to choice by making it simpler so if we had a look on Windows 8 Editions we will find (Windows 8, Windows 8 Professional, Windows 8 Enterprise, Windows 8 RT) great we have heard before about all these terms, But what’s Windows 8 RT (New Term)

  • Windows 8 RT – is built for ARM-Based devices like tablets, True it doesn’t have all the features in Windows 8, Windows 8 Professional, Windows 8 Enterprise, But it’s because the ARM processors aren’t strong like the processors we have in our PCs or Laptops while it have another benefits like power saving, power efficiency (ARM processor-based device may last longer than an x86 processor-based laptop), Another thing about Windows 8 RT that YOU CANNOT INSTALL IT (It Came Pre-Installed On The Device) . . . Now let’s take a look on the different editions comparison chart
  • Note: Some of the Windows 8 Editions copies followed with the “N” character like Windows 8 N, Windows 8 Professional N they are the same just like the copies not followed with “N” character but with only one difference (They Doesn’t Include Windows Media Player)

“Please Click on The Picture To Watch It Perfectly”
Windows 8

Now after knowing what’s each edition’s features you can judge What’s the best edition of Windows 8 for you ^^
I’ll Explain Each Feature In Another Post πŸ™‚ Hope That You Liked It

Boxing & Unboxing

Simple types and other structs inherits from ValueType class from System namespace, And as Object class is the base class of all classes also ValueType class inherits from it, if we stop to thinking a little bit that means any simple-type value can be assigned to an Object variable, and that operation called Boxing Conversion, In Boxing Conversion the simple-type value copied into an object so the simple-type value can be manipulated as an object ( Boxing Conversion can be performed either explicitly or implicitly).

int x = 5; //create an int value
object o1 = (int) x; //explicitly box the int value
object o2 = x; //implicitly box the int value

After executing this code both o1 & o2 will refer to two different objects that contain a copy of the integer value, let’s check what happening in the memory.

Now and after we have discussed the Boxing Conversion we can easily explain the Unboxing Conversion as the vice-verse operation of Boxing Conversion which is the explicit conversion of an object reference to a simple-type.

int y = (int) o1;

NOTE: Explicitly attempting to unbox an object reference that does not refer to the correct simple value type causes an InvalidCastException.

Well let’s talk a little bit about the performance, Boxing and Unboxing are computationally expensive processes, When a value type is boxed an entirely new object must be created this can take up to 20 times longer than a simple reference assignment, And when unboxing the casting process can take four times as long as an assignment.
it’s better to avoid using value types if they will be boxed many times,You can avoid boxing performance problems by using generic collections classes such as List.

What’s New in .NET Framework 4.5 ?

Through this post i’ll declare a summary of the important features and improvements in the .NET Framework 4.5.

  • Windows Store apps
  • Windows Store apps are the Windows 8 apps ( Known as metro-style apps ), Windows Store apps are designed for specific form factors and leverage the power of the Windows operating system. A subset of the .NET Framework 4.5 is available for building Windows Store apps for Windows by using C# or Visual Basic.


  • Portable Class Libraries
  • The Portable Class Library project in Visual Studio 2012 enables you to write and build managed assemblies that work on multiple .NET Framework platforms. Using a Portable Class Library project, you choose the platforms (i.e, Windows Phone and .NET for Windows Store apps) to target. The available types and members in your project are automatically restricted to the common types and members across these platforms.


  • New Features and Improvements
    • Ability to reduce system restarts by detecting and closing .NET Framework 4 applications during deployment.
    • Support for arrays that are larger than 2 gigabytes on 64-bit platforms (NOTE: This feature can be enabled in the application configuration file).
    • Better performance through background garbage collection for servers (NOTE: background garbage collection is automatically enabled when you are using server garbage collection in the .NET Framework 4.5)
    • Background just-in-time (JIT) compilation, Optionally available on multi-core processors to improve application performance.
    • Ability to limit how long the regular expression engine will attempt to resolve a regular expression before it times out (Check Regex.MatchTimeout property).
    • Ability to define the default culture for an application domain (Check CultureInfo class
    • Console support for Unicode (UTF-16) encoding (Check Console class).
    • Support for versioning of cultural string ordering and comparison data (Check SortVersion class).
    • Better performance when retrieving resources.
    • Zip compression improvements to reduce the size of a compressed file (Check System.IO.Compression namespace).
    • Ability to customize a reflection context to override default reflection behavior through the CustomReflectionContext class.
    • Support for the 2008 version of the Internationalized Domain Names in Applications (IDNA) standard when the System.Globalization.IdnMapping class is used on Windows 8.
    • Delegation of string comparison to the operating system, which implements Unicode 6.0, when the .NET Framework is used on Windows 8.
    • Ability to compute the hash codes for strings on a per application domain basis.
    • Type reflection support split between Type and TypeInfo classes.

  • Managed Extensibility Framework (MEF)
    MEF provides the following new features:

    • Support for generic types.
    • Convention-based programming model that enables you to create parts based on naming conventions rather than attributes.
    • Multiple scopes.
    • A subset of MEF that you can use when you create Windows Store apps. This subset is available as a downloadable package from the NuGet Gallery Click here to get it.

  • Asynchronous File Operations
  • In the .NET Framework 4.5, new asynchronous features were added to the C# and Visual Basic languages. These features add a task-based model for performing asynchronous operations. To use this new model, use the asynchronous methods in the I/O classes.


  • Tools
    • Resource File Generator enables you to create a .resw file for use in Windows Store apps from a .resources file embedded in a .NET Framework assembly.
    • Managed Profile Guided Optimization enables you to improve application startup time, memory utilization, and throughput by optimizing native image assemblies. The command-line tool generates profile data for native image application assemblies.

  • Parallel Computing
  • The .NET Framework 4.5 provides several new features and improvements for parallel computing. These include improved performance, increased control, improved support for asynchronous programming, a new dataflow library, and improved support for parallel debugging and performance analysis.


  • Web (Asp.NET 4.5)
    • Support for new HTML5 form types.
    • Support for model binders in Web Forms. These let you bind data controls directly to data-access methods, and automatically convert user input to and from .NET Framework data types.
    • Support for unobtrusive JavaScript in client-side validation scripts.
    • Improved handling of client script through bundling and minification for improved page performance.
    • Integrated encoding routines from the AntiXSS library to protect from cross-site scripting attacks.
    • Support for WebSockets protocol.
    • Support for reading and writing HTTP requests and responses asynchronously.
    • Support for asynchronous modules and handlers.
    • Support for content distribution network (CDN) fallback in the ScriptManager control.

  • Networking
    • new programming interface for HTTP applications (Check System.Net.Http and System.Net.Http.Headers namespaces).
    • new programming interface for accepting and interacting with a WebSocket connection by using the existing HttpListener and related classes (Check System.Net.WebSockets namespace and the HttpListener class).
    • RFC-compliant URI support (Check Uri and related classes)
    • Support for Internationalized Domain Name (IDN) parsing (Check Uri and related classes ).
    • Support for Email Address Internationalization (EAI) (Check System.Net.Mail namespace).
    • Improved IPv6 support (Check System.Net.NetworkInformation namespace).
    • Dual-mode socket support (Check Socket and TcpListener classes).

  • Windows Presentation Foundation (WPF)
    • The new Ribbon control, which enables you to implement a ribbon user interface that hosts a Quick Access Toolbar, Application Menu, and tabs.
    • The new INotifyDataErrorInfo interface, which supports synchronous and asynchronous data validation.
    • New features for the VirtualizingPanel and Dispatcher classes.
    • Improved performance when displaying large sets of grouped data, and by accessing collections on non-UI threads.
    • Data binding to static properties, data binding to custom types that implement the ICustomTypeProvider interface, and retrieval of data binding information from a binding expression.
    • Repositioning of data as the values change (live shaping).
    • Ability to check whether the data context for an item container is disconnected.
    • Ability to set the amount of time that should elapse between property changes and data source updates.
    • Improved support for implementing weak event patterns. Also, events can now accept markup extensions.

  • Windows Communication Foundation (WCF)
    • Simplification of generated configuration files.
    • Support for contract-first development.
    • Ability to configure ASP.NET compatibility mode more easily.
    • Changes in default transport property values to reduce the likelihood that you will have to set them.
    • Updates to the XmlDictionaryReaderQuotas class to reduce the likelihood that you will have to manually configure quotas for XML dictionary readers.
    • Validation of WCF configuration files by Visual Studio as part of the build process, so you can detect configuration errors before you run your application.
    • New asynchronous streaming support.
    • New HTTPS protocol mapping to make it easier to expose an endpoint over HTTPS with Internet Information Services (IIS).
    • Ability to generate metadata in a single WSDL document by appending ?singleWSDL to the service URL.
    • Websockets support to enable true bidirectional communication over ports 80 and 443 with performance characteristics similar to the TCP transport.
    • Support for configuring services in code.
    • XML Editor tooltips.
    • ChannelFactory caching support.
    • Binary encoder compression support.
    • Support for a UDP transport that enables developers to write services that use “fire and forget” messaging (A client sends a message to a service and expects no response from the service).
    • Ability to support multiple authentication modes on a single WCF endpoint when using the HTTP transport and transport security.
    • Support for WCF services that use internationalized domain names (IDNs).
  • Hope That You Liked The Post πŸ™‚

Overview of ALM

Application life cycle management ( ALM ) is the complete life cycle for an application starting from creating idea and ends by the application expiration.

Three Aspects Of ALM
-ALM can be divided into three distinct areas ( governance, development, operations )

1 – Governance
Continues the whole life cycle and contain different activities such as developing business cases, project portfolio management.

before we start working on a project we need to know if we will get benefited from it ( Financial or non-financial benefits ), once the business case is approved we need to create project team to work on it.

2 – Development
started after the approval of business case, started by developing the first version of the project, after building and delivering the first version we can market and attract new users to our application

3 – Operations
Responsible for patching and updating the project after the deployment, as we want the project to be high performing and strong system

ALM Tooling
ALM is all about collaboration and working in a team environment, not about tools but mind-set.
Microsoft Visual Studio Team Foundation Server (TFS) is the collaboration platform at the core of Microsoft ALM Solution, TFS automates the software delivery process and provide tools for managing the software development progress, enables everyone in the team to work together more effectively, more agile, and deliver better quality software.
By using the suite of tools in Visual Studio Ultimate in combination with Visual Studio Team Foundation Server we can better understand customer needs and more effectively design, implement and deploy our code

Planning & Tracing
Using Visual Studio ALM Management we can manage customer needs more effectively, create high-level plans that breaks our project down into potentially shippable increments, create detailed plans to execute shorter iterations in which we develop those increments.
When we finish each iteration we can refine the high-level plan according to what we have learned during the iteration, also we can complete any undone work.

Overview of cloud computing

What’s the Cloud?
– An approach to computing that’s about internet scale and connecting to a variety of devices and end-points.
– Simple Definition : Cloud computing is about delivering IT resources as a utility services.

Cloud Services Category
Infrastructure As A Service ( IaaS )
-The IaaS service category provides you with the Infrastructure you need to deploy your applications and manage your lifecycle of not only your applications but also the underlying operating system, as in IaaS you rent the infrastructure which the service provider will manage and maintain but you still in the hook for managing, patching and maintain the underlying operating system and your applications, Targeted audience for IaaS are system administrators & Operations Engineers.

Platform As A Service ( PaaS )
– The PaaS service category provides you with the Infrastructure, Operating System and runtime environment as in this service category you only responsible for delivering and developing your applications as the service provider abstracts the infrastructure and the operating system from you, Targeted audience for PaaS are developers.
– Windows Azure is the PaaS that Microsoft provides, and Windows Azure is simply a development platform that support all programming languages.

Software As A Service ( SaaS )
-The SaaS service category provides you with an end-to-end software you only have to use the software and manage your business data that flows into and from the software, Regardless of where this software running, on which infrastructure or operating system, You don’t have to annoy yourself with such a details as the service provider manage all this for you, Targeted audience for SaaS are end-users, Example of SaaS ( Office 365 )

– Note : SaaS is built on PaaS, and PaaS is build on IaaS.

Public Vs Private Cloud
Public Cloud
– Represents the core cloud attributes of self-service, shared, scalable/elastic, and usage-based on SHARED RESOURCES
Private Cloud
– Represents the core cloud attributes of self-service, shared, scalable/elastic and usage-based on DEDICATED RESOURCES

Note : Share & Dedicated resources means the location which the cloud is exist, if i’ve a cloud within my enterprise and i own the datacenter so it’s a private cloud, If i rent whether IaaS, PaaS or SaaS model from a service provider like ( Microsoft ) then i’m using a public cloud ( Public doesn’t mean that my data is shared to everyone )

Note : If any of these services (self-service, shared, scalable/elastic and usage-based) are not offered by a private cloud, then it’s merely an optimized datacenter not a cloud, and it’s not always a bad choice, An optimized datacenter maybe better than a cloud in some scenarios

Advantages Of Cloud Computing
– Pay only for what you use.
– Lower and predictable costs.
– shift from capex to opex.
– No patching and maintenance.
– Faster deployment.
– Robust multi-layered security.
– Reliability and fault tolerance.
– Software and Platform automatically upgraded to the newest version.
– Instant self-provisioning