ASP.NET 2.0

What are the new Data Controls in Asp.net 2.0?

Data access in ASP.NET 2.0 can be accomplished completely declaratively (no code) using the new data-bound and data source controls. There are new data source controls to represent different data backends such as SQL database, business objects, and XML, and there are new data-bound controls for rendering common UI for data, such as gridview, detailsview, and formview.

What are the new Navigation Controls in Asp.net 2.0?

The navigation controls provide common UI for navigating between pages in your site, such as treeview, menu, and sitemappath. These controls use the site navigation service in ASP.NET 2.0 to retrieve the custom structure you have defined for your site.

What are the new Login Controlsin Asp.net 2.0?

The new login controls provide the building blocks to add authentication and authorization-based UI to your site, such as login forms, create user forms, password retrieval, and custom UI for logged in users or roles. These controls use the built-in membership and role services in ASP.NET 2.0 to interact with the user and role information defined for your site.

What are the new Web Part Controls in Asp.net 2.0 ?

Web parts are an exciting new family of controls that enable you to add rich, personalized content and layout to your site, as well as the ability to edit that content and layout directly from your application pages. These controls rely on the personalization services in ASP.NET 2.0 to provide a unique experience for each user in your application.

What are Master Pages?

This feature provides the ability to define common structure and interface elements for your site, such as a page header, footer, or navigation bar, in a common location called a "master page", to be shared by many pages in your site. In one simple place you can control the look, feel, and much of functionality for an entire Web site. This improves the maintainability of your site and avoids unnecessary duplication of code for shared site structure or behavior.

What are Themes and Skins in 2.0, explain usgae scenario?

The themes and skins features in ASP.NET 2.0 allow for easy customization of your site's look-and-feel. You can define style information in a common location called a "theme", and apply that style information globally to pages or controls in your site. Like Master Pages, this improves the maintainability of your site and avoid unnecessary duplication of code for shared styles.

What is a profile object, why is it used?

Using the new personalization services in ASP.NET 2.0 you can easily create customized experiences within Web applications. The Profile object enables developers to easily build strongly-typed, sticky data stores for user accounts and build highly customized, relationship based experiences. At the same time, a developer can leverage Web Parts and the personalization service to enable Web site visitors to completely control the layout and behavior of the site, with the knowledge that the site is completely customized for them. Personalizaton scenarios are now easier to build than ever before and require significantly less code and effort to implement.

What is Configuration API?

ASP.NET 2.0 contains new configuration management APIs, enabling users to programmatically build programs or scripts that create, read, and update Web.config and machine.config configuration files.

What is MMC Admin Tool?

ASP.NET 2.0 provides a new comprehensive admin tool that plugs into the existing IIS Administration MMC, enabling an administrator to graphically read or change common settings within our XML configuration files.

Explain the use of Pre-compilation Tool?

ASP.NET 2.0 delivers a new application deployment utility that enables both developers and administrators to precompile a dynamic ASP.NET application prior to deployment. This precompilation automatically identifies any compilation issues anywhere within the site, as well as enables ASP.NET applications to be deployed without any source being stored on the server (one can optionally remove the content of .aspx files as part of the compile phase), further protecting your intellectual property.

How is application management and maintenance improved in Asp.net 2.0?

ASP.NET 2.0 also provides new health-monitoring support to enable administrators to be automatically notified when an application on a server starts to experience problems. New tracing features will enable administrators to capture run-time and request data from a production server to better diagnose issues. ASP.NET 2.0 is delivering features that will enable developers and administrators to simplify the day-to-day management and maintenance of their Web applications.

What are Provider-driven Application Services? explain in detail?
ASP.NET 2.0 now includes built-in support for membership (user name/password credential storage) and role management services out of the box. The new personalization service enables quick storage/retrieval of user settings and preferences, facilitating rich customization with minimal code. The new site navigation system enables developers to quickly build link structures consistently across a site. As all of these services are provider-driven, they can be easily swapped out and replaced with your own custom implementation. With this extensibility option, you have complete control over the data store and schema that drives these rich application services.

Explain Server Control Extensibility with reference to Asp.net 2.0 ?
ASP.NET 2.0 includes improved support for control extensibility, such as more base classes that encapsulate common behaviors, improved designer support, more APIs for interacting with client-side script, metadata-driven support for new features like themes and accessibility verification, better state management, and more.

What are the Data Source Controls?
Data access in ASP.NET 2.0 is now performed declaratively using data source controls on a page. In this model, support for new data backend storage providers can be easily added by implementing custom data source controls. Additionally, the SqlDataSource control that ships in the box has built-in support for any ADO.NET managed provider that implements the new provider factory model in ADO.NET.

What are Compilation Build Providers?
Dynamic compilation in ASP.NET 2.0 is now handled by extensible compilation build providers, which associate a particular file extension with a handler that knows how to compile that extension dynamically at runtime. For example, .resx files can be dynamically compiled to resources, .wsdl files to web service proxies, and .xsd files to typed DataSet objects. In addition to the built-in support, it is easy to add support for additional extensions by implementing a custom build provider and registering it in Web.config.

What is Expression Builders, why would you use it?
ASP.NET 2.0 introduces a declarative new syntax for referencing code to substitute values into the page, called Expression Builders. ASP.NET 2.0 includes expression builders for referencing string resources for localization, connection strings, application settings, and profile values. You can also write your own expression builders to create your own custom syntax to substitute values in a page rendering.

Is ASP.NET 64-Bit enabled? how?
ASP.NET 2.0 is now 64-bit enabled, meaning it can take advantage of the full memory address space of new 64-bit processors and servers. Developers can simply copy existing 32-bit ASP.NET applications onto a 64-bit ASP.NET 2.0 server and have them automatically be JIT compiled and executed as native 64-bit applications (no source code changes or manual re-compile are required).

Explain how Caching in Asp.net 2.0 is different from Caching in Asp.net 1.1?
ASP.NET 2.0 also now includes automatic database server cache invalidation. This powerful and easy-to-use feature allows developers to aggressively output cache database-driven page and partial page content within a site and have ASP.NET automatically invalidate these cache entries and refresh the content whenever the back-end database changes. Developers can now safely cache time-critical content for long periods without worrying about serving visitors stale data.

Garbage collection

Please explain how the garbage collector works in managed code.

The garbage collector checks to see if there are any objects in the heap that are no longer being used by the application. If such objects exist, then the memory used by these objects is reclaimed. When the garbage collector starts running, it makes the assumption that all objects in the heap are garbage. It assumes that none of the application's roots refer to any objects in the heap. The garbage collector starts walking the roots and building a graph of all objects reachable from the roots. Once all the roots have been checked, the garbage collector's graph contains the set of all objects that are somehow reachable from the application's roots, any objects that are not in the graph are not accessible by the application, and are therefore considered garbage. The garbage collector now walks through the heap linearly, looking for contiguous blocks of garbage objects. The garbage collector then shifts the non garbage objects down in memory (using the standard memory function), removing all of the gaps in the heap. Of course, moving the objects in memory invalidates all pointers to the objects. So the garbage collector must modify the application's roots so that the pointers point to the objects new locations. After all the garbage has been identified, all the non-garbage has been compacted, and all the non-garbage pointers have been fixed-up, the NextObjPtr is positioned just after the last non-garbage object.

What is reflection? Give an example of when you would want to use it.

Reflection in .NET makes it possible to explore the CLR type system programmatically. Reflection allows you to find what types are in an assembly, the methods of a type, how many arguments a method has, and so on.

In situations where we don't have access to a Dll until runtime or have no interface contract with any assembly etc., we can programmatically look up the supported properties and methods inside the assembly & then invoke any method at runtime.

Another example would be where I can write a small Test application that tests a Dll. I can use reflection apis to display a list of supported classes, properties and methods and my Test application can invoke each of this method programmatically.

What is a delegate?

A delegate in C# is similar to a function pointer in C or C++. Using a delegate allows the programmer to encapsulate a reference to a method inside a delegate object. The delegate object can then be passed to code which can call the referenced method, without having to know at compile time which method will be invoked.

ASP.NET Interview Materials

Describe the role of inetinfo.exe, aspnet_isapi.dll andaspnet_wp.exe in the page loading process.
Inetinfo.exe is the Microsoft IIS server running, handling ASP.NET requests among other things. When an ASP.NET request is received (usually a file with .aspx extension), the ISAPI filter aspnet_isapi.dll takes care of it by passing the request to the actual worker process aspnet_wp.exe.
ASP.NET 2.0 is the umbrella term for the combination of two web development technologies: web sites and web services. VS2005 allows you to apply Rapid Application Development (RAD)
techniques to building web applications: Drag and drop controls onto your form, double-click on a control, and write the code to respond to the associated event.
A typical .NET web application consists of many items: content files (such as .aspx files), source files (such as .cs files), assemblies (such as .exe and .dll files) and assembly information files, data sources (such as .mdb files), references, and icons, as well as miscellaneous other files and folders.

NET Framework 2.0
The .NET Framework sits on top of the operating system, which can be any recently released version of Windows, including Windows 2000, Windows XP, or Windows Server 2003. Currently, the .NET Framework consists of:
· Compilers for five official languages (C#, Visual Basic, Managed C++, J#, and the Jscript scripting language).
· A number of related class libraries, collectively known as the Framework Class Library (FCL)
, that include support for Windows and web applications, data access, web services, and more.
· The Common Language Runtime (CLR), the object-oriented engine at the heart of the Framework that translates the intermediate code generated by the language compilers into the native code required to execute the application.
In ASP.NET applications, an event is typically raised on the client (such as by the user clicking a button displayed in the browser) but handled on the server.
An event message is transmitted to the server via an HTTP POST. ASP.NET automagically (that's a technical term) handles all the mechanics of capturing the event, transmitting it to the server, and processing the event. As the programmer, all you have to do is create your event handlers.

Event Arguments
Events are implemented with delegates. A delegate is an object that encapsulates the description of a method to which you may assign responsibility for handling the event.
All ASP.NET event handlers take two parameters
and return void. The first parameter represents the object raising the event. By convention, it is called sender, though that is not a requirement.

The second parameter, called the event argument, contains information specific to the event if there is any. For most events, the event argument is of type EventArgs, which does not expose any properties. So, the general prototype for an event is the following: Private void EventName (object sender, EventArgs e)
For some controls, the event argument may be of a type derived from EventArgs and may expose properties specific to that event type. For example, the AdRotator control's AdCreated event handler receives an argument of type AdCreatedEventArgs, which has the properties AdProperties, AlternateText, ImageUrl, and NavigateUrl.

Application and Session Events:

An Application_Start event is raised when the application starts. This is a good time to initialize resources that will be used throughout the application, such as database connection strings (but not the database connection itself). An Application_End event is raised when the application ends. This is the time to close resources and do any other housekeeping that may be necessary. Garbage collection will automatically take care of freeing up memory, but if you allocated unmanaged resources, such as components created with languages that are noncompliant with the .NET Framework, you must clean them up yourself.

A session starts when a user first requests a page from your application and ends when the application closes the session or the session times out. A Session_Start event is raised when the session starts, at which time you can initialize resources that will be session-specific, such as opening a database connection, though it is probably better to open a database connection when it is needed and close it immediately when finished with it. When the session ends, there will be a Session_End event.

Page and Control Events
The page and controls all have events that are inherited from the Control class. All of these events pass an event argument of type EventArgs that exposes no properties.

Postback Versus Non-Postback Events:
Postback events cause the form to be posted back to the server immediately. These include click-type events, such as Button.Click. In contrast, many events (typically change events such as TextBox.TextChanged, or selection events, such as CheckBox.CheckedChanged) are considered non-postback because the event is not posted back to the server immediately. Instead, these events are cached by the control until the next time a post occurs. Controls with non-postback events can be forced to behave in a postback manner by setting their AutoPostBack property to true.

IsPostBack:
The Page object exposes the IsPostBack property. This is a read-only Boolean property that indicates if the page is being loaded for the first time or if it is being loaded in response to a client postback. There are many expensive operations (such as getting data from a database or populating ListItems) you will want to perform only the first time the page is loaded. If the page is posted to the server and then reloaded, there will be no need to repeat the operation, since any data entered or populated is retained (using view state) on subsequent posts.

ASP.NET and Browsers
Let's say it just one more time: The browser never sees the ASP.NET server control. The server processes the ASP.NET server control and sends standard HTML to the browser.
ASP.NET considers browsers to be either uplevel or downlevel. Uplevel browsers support script Versions 1.2 (ECMA Script, JavaScript, JScript), Cascading Style Sheets (CSS) and HTML 4.0; typical uplevel browsers would include Internet Explorer 4.0 and later releases. Downlevel browsers, on the other hand, support only HTML 3.2.
ASP.NET can tell you which browser is being used to display the page. This information is made available via the HttpRequest.Browser property. HttpRequest.Browser returns a HttpBrowserCapabilities object whose many properties include a number of Booleans, such as whether the browser supports cookies, frames, and so forth.

ASP.NET Server Control Class Hierarchy
All the ASP.NET server controls that have a visual aspect when rendered to the browser are derived from the WebControl class. This class provides the properties, methods, and events common to all these controls. Among these are common properties, such as BorderColor, BorderStyle, and BorderWidth, and the RenderBeginTag and RenderEndTag methods.
The WebControl class and several other ASP.NET server controls (e.g., Literal, PlaceHolder, Repeater, and XML) derive from System.Web.UI.Control, which derives from System.Object. The Control class provides base properties such as ID, EnableViewState, Parent, and Visible; base methods such as Dispose, Focus, and RenderControl; and life cycle events such as Init, Load, PreRender, and Unload. The WebControl class and the controls derived from Control are in the System.Web.UI.WebControls namespace. All of the properties, events, and methods of WebControl and System.Web.UI.Control are inherited by the ASP.NET server controls.