Friday, November 23, 2012

Introduction To C-Sharp (C#)


Introduction To C-Sharp (C#)

         
The C# language is disarmingly simple, with only about 80 keyword and a dozen built-in datatypes, but C# is highly expressive, when it comes to implementing modern programming concepts. C# includes all the support for structured, component-based, object-oriented programming that one expects of modern language built on the shoulders of C++ and Java.

The C# language was developed by a small team led by two distinguished Microsoft engineers, Anders Hejisberg and Scott Wiltamuth. Hejisberg is also known for creating Turbo Pascal, a popular language for PC programming, and for leading the team that designed Borland Delphi, one of the first successful integrated development environment for client/server programming.

All the heart of any object-oriented language is its support for defining and working with classes. Classes define new types, allowing you to extend the language to better model the problem you are trying to solve. C# contains keywords for declaring new classes and their methods and properties, and for implementing encapsulation, inheritance and polymorphism the three pillars of object-oriented programming.

In C# everything pertaining to a class declaring is found in the declaration itself. C# class definitions do not require separate header files or Interface Definition Language(IDL) files. Moreover, C# supports a new XML style of inline documentation that greatly simplifies the creation of online and print reference documentation for an application.

C# also supports interfaces, a means of making a contract with a class for services that the interface stipulates. In C#, a class can inherit from only a single parent, but a class can implement multiple interfaces. When it implements an interfaces, a C# class in effect promises to provide the functionality the interface specifies.

C# also provides support for structs, a concept whose meaning has changed significantly from  C++. In C#, a struct is restricted, lightweight type that, when instantiated , makes fewer demand on the operating system and on memory than a conventional class does. A struct can’t inherit from a class or be  inherited from, but a struct can implement an interfcace.

C# provides component-oriented features, such as a properties, events and declarative constructs. Component-oriented programming is supported by the CLR’s support for storing metadata with the code for the class. The metadata describes the class, including its methods and properties, as well as its security needs to carry out its functions. A  compiled class is thus a self-contained unit, therefore, a hosting environment that known how to read a class ‘metadata’ and code needs no other information to make use of it. Using C# and the CLR, it is possible to add custom metadata to a class by creating custom attributes.

Likewise, it is possible to read class metadata using CLR types that support reflection. An assembly is a collection of files hat appear to the programmer to be single dynamic link library or executable. In .NET, an assembly is the basic unit reuse, visioning, security and deployment. The CLR provides a  number of classes for manipulating assemblies.

 A final note about C# is that it also provides support for directly accessing memory using C++ style and keywords for bracketing such operations as unsafe and for warning the CLR garbage collector not to collect objects referenced by pointers until they are released.


ASP.NET PAGE LIFE CYCLE


ASP.NET Page Life Cycle

        

A Page in an ASP.NET application consists of server controls. There  are the fundamentals building blocks of an ASP.NET application. The life cycle of an ASP.NET page, depends on whether the page is requested for the first time or it is postback. Postback is a process by which a page can request for itself.

When The Page Is Requested For The First Time 

The life cycle of a page when requested for the first time:
  • Initializing : 
                                   During this phase, the server creates an instance of the server control.
  • Loading : 
             During this phase, the instance of the control is loaded onto the page object in which it is   defined.

  • PreRendering : 
                           During this phase, the control is loaded with the changes made to it. This prepares the controls for rendering.

  • Saving : 

                          During this phase, the  state information of the control is saved. For example, if a value is set for the control during  the Load event, it is embedded in the HTML tag that will be returned to the browser.

  • Rendering : 

                           During this phase, the server creates the corresponding HTML tag for the control.

  • Disposing :

                           During this phase, all cleanup tasks, such as closing files and database connections opened by the control are performed.

  • Unloading : 

                              During this phase, all cleanup tasks, such as destroying the instances of server control are performed. This is final event in the life cycle of server controls.

Life Cycle When The Page Processed During A Postback Event

The processing sequence in which a page is processed during a postback event is:

  • Initializing : 

                                   During this phase, the server creates an instance of the server control.

    • Loading View State: 

                                     During this phase, the view state of the control posted by the client is reloaded into the new instance of the control.

    • Loading : 

                             During this phase, the instance of the control is loaded onto the page object in which it is defined.

    • Loading The Postback Data: 

                                                        During this phase, the server searches any data corresponding to the control that is loaded in the posted by the client.

    • PreRendering: 

                                           During this phase, the control is updated with the changes made to it. This prepares the controls for rendring.
    •  Saving State :
                                        During this phase, the change in the state of control between the current request and the previous request of the page is saved. For each change, the corresponding event is raised. For example, if the text of a texbox is changed, the new text is saved and a text_change event is raised.
    • Rendering : 
                               During this phase, the server creates the corresponding HTML tag for the control.
    • Disposing :
                               During this phase, all cleanup tasks, such as closing files and database connections opened by the control are performed.
    • Unloading : 
                                During this phase, all cleanup tasks, such as destroying the instances of server control are performed. This is final event in the life cycle of server controls.

    The Events Associated With The Relevant Page Cycle Phases Are :

                           Page Initialization  :  Page_Init
                           View State Loading  :  LoadViewState.
                           Postback data processing  :  LoadPostData
                           Page Loading  :  Page_Load
                           PostBack Change Notification  :  Raise PostDataChangedEvent
                           PostBack Event Handing  :  RaisePostBackEvent
                           Page Pre Rendring Phase  :  Page_PreRender
                           View State Saving  :  SaveViewState
                           Page Rendring :  Page_Render
                                  Page Unloading  :  Page_UnLoad