Dotnet

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Dotnet as PDF for free.

More details

  • Words: 13,881
  • Pages: 35
Microsoft .NET .NET Framework: .NET framework is an environment that facilitates Object Oriented Programming Model for multiple languages. It wraps Operating System and insulates Software Development from many Operating System specific tasks such as file handling, memory allocation & management. It has two main components CLR (Common Language Runtime) and .Net BCL (Base Class Libraries).

As you can see in Figure, the .NET Framework sits on top of the operating system, which can be a few different flavors of Windows and consists of a number of components. .NET is essentially a system application that runs on Windows. The most important component of the Framework is something called the CLR. If you are a Java programmer, think of the CLR as the .NET equivalent of the Java Virtual Machine (JVM). If you don't know Java, think of the CLR as the heart and soul of the .NET architecture. At a high level, the CLR activates objects, performs security checks on them, lays them out in memory, executes them, and garbage-collects them. Conceptually, the CLR and the JVM are similar in that they are both runtime infrastructures that abstract the underlying platform differences. However, while the JVM currently supports just the Java language, the CLR supports all languages that can be represented in the Common Intermediate Language (CIL). The JVM executes bytecode, so it could technically support many different languages, too. Unlike Java's bytecode, though, IL is never interpreted. Another conceptual difference between the two infrastructures is that Java code runs on multiple platforms with a JVM, whereas .NET code runs only on the Windows platforms with the CLR (at the time of this writing). Microsoft has submitted the Common Language Infrastructure (CLI), which is functional a subset of the CLR, to ECMA, so a third-party vendor could theoretically implement a CLR for a platform other than Windows. An assembly is the basic unit of deployment and versioning, consisting of a manifest, a set of one or more modules, and an optional set of resources. .NET Portable Executable File: A Windows executable, EXE or DLL, must conform to a file format called the PE file format, which is a derivative of the Microsoft Common Object File Format (COFF). Both of these formats are fully specified and publicly available. The Windows OS knows how to load and execute DLLs and EXEs because it understands the format of a PE file. Given this, any compiler that wants to generate Windows executables must obey the PE/COFF specification. Standard Windows PE files are divided into two major sections. The first section includes the PE/COFF headers that reference the contents within the PE file. In addition to the header section, the PE file holds a number of native image sections, including the .data, .rdata, .rsrc , and .text sections. These are the standard sections of a typical Windows executable, but Microsoft's C/C++ compiler allows you to

add your own custom sections into the PE file using a compiler pragma statement. For example, you can create your own data section to hold encrypted data that only you can read. Taking advantage of this ability, Microsoft has added a few new sections to the normal PE file specifically to support the CLR's functionality. The CLR understands and manages the new sections. For example, the CLR will read these sections and determine how to load classes and execute your code at runtime. The sections that Microsoft has added to the normal PE format are the CLR header and the CLR data sections. While the CLR header stores information to indicate that the PE file is a .NET executable, the CLR data section contains metadata and IL code, both of which determine how the program will be executed. Metadata Metadata is machine -readable information about a resource, or "data about data." Such information might include details on content, format, size, or other characteristics of a data source. In .NET, metadata includes type definitions, version information, external assembly references, and other standardized information. In order for two components, systems, or objects to interoperate with one another, at least one must know something about the other. In COM, this "something" is an interface specification, which is implemented by a component provider and used by its consumers. In .NET, metadata is a common mechanism or dialect that the .NET runtime, compilers, and tools can all use. Microsoft .NET uses metadata to describe all types that are used and exposed by a particular .NET assembly. Metadata includes descriptions of an assembly and modules, classes, interfaces, methods, properties, fields, events, global methods, and so forth. .NET assemblies are deployable units and manifests are the metadata that describes the assemblies. IL Code: An assembly contains the IL code that the CLR executes at runtime. The IL code typically uses types defined within the same assembly, but it also may use or refer to types in other assemblies. There is one caveat: each assembly can have at most one entry point, such as DllMain( ), WinMain( ), or Main( ). You must follow this rule because when the CLR loads an assembly, it searches for one of these entry points to start assembly execution. There are four types of assemblies in .NET: Static assemblies: These are the .NET PE files that you create at compile time. You can create static assemblies using your favorite compiler: csc, cl, or vbc. Dynamic assemblies: These are PE-formatted, in-memory assemblies that you dynamically create at runtime using the classes in the System.Reflection.Emit namespace. Private assemblies: These are static assemblies used by a specific application. Public or shared assemblies: These are static assemblies that must have a unique shared name and can be used by any application. Side-by-Side Execution: The CLR allows any versions of the same-shared DLL (shared assembly) to execute at the same time, on the same system, and even in the same process. This concept is known as side-by-side execution. Manifests: Assembly Metadata An assembly manifest is metadata that describes everything about the assembly, including its identity, a list of files belonging to the assembly, references to external assemblies, exported types, exported resources, and permission requests. In short, it describes all the details that are required for component

plug-and-play. Since an assembly contains all these details, there's no need for storing this type of information in the registry, as in the COM world. An assembly can be a single-module assembly or a multi-module assembly. In a single-module assembly, everything in a build is clumped into one EXE or DLL, an example of which is the hello.exe application that we developed earlier. This is easy to create because a compiler takes care of creating the single -module assembly for you. A multi-module assembly is one that contains many modules and resource files. To create it you have to use the Assembly Linker (al.exe) that is provided by the .NET SDK. This tool takes one or more IL or resource files and spits out a file with an assembly manifest. Any .NET language may be converted into IL, so .NET supports multiple languages and perhaps multiple platforms in the future (as long as the target platforms have a CLR). The Common Type System (CTS): Because .NET treats all languages as equal, a class written in C# should be equivalent to a class written in VB.NET, and an interface defined in Managed C++ should be exactly the same as one that is specified in managed COBOL. Languages must agree on the meanings of these concepts before they can integrate with one another. In order to make language integration a reality, Microsoft has specified a common type system to which every .NET language must abide. Interfaces: Interfaces support exactly the same concept as a C++ abstract base class (ABC) with only pure virtual functions. An ABC is a class that declares one or more pure virtual functions and thus cannot be instantiated. If you know COM or Java, interfaces in .NET are conceptually equivalent to a COM or Java interface. You specify them, but you don't implement them. A class that derives from your interface must implement your interface. An interface may contain methods, properties, indexers, and events. In .NET, a class can derive from multiple interfaces. The Common Language Specification (CLS): Microsoft has published the Common Language Specification (CLS). The CLS specifies a series of basic rules that are required for language integration. Since Microsoft provides the CLS that spells out the minimum requirements for being a .NET language, compiler vendors can build their compilers to the specification and provide languages that target .NET. Besides compiler writers, application developers should read the CLS and use its rules to guarantee language interoperation. CLR Execution: .Net PE Files(Metadata And IL) >> Class Loader >> Verifier >> JIT >> Managed Native Code Once the class loader has found and loaded the target class, it caches the type information for the class so that it doesn't have to load the class again for the duration of this process. The verifier is responsible for verifying that: 1. The metadata is well formed, meaning the metadata must be valid. 2. The IL code is type safe, meaning type signatures are used correctly. The JIT compilers convert IL to native code so that it can execute on the target operating system. For optimization reasons, JIT compilation occurs only the first time a method is invoked. Recall that the class loader adds a stub to each method during class loading. At the first method invocation, the VEE reads the information in this stub, which tells it that the code for the method has not been JIT compiled. At this indication, the JIT compiler compiles the method and injects the address of the managed native method into this stub. During subsequent invocations to the same method, no JIT compilation is needed because each time the VEE goes to read information in the stub, it sees the address of the native method. Because the JIT compiler only performs its magic the first time a method is invoked, the methods you don't need at runtime will never be JIT compiled. The compiled, native code lies in

memory until the process shuts down and until the garbage collector clears off all references and memory associated with the process. This means that the next time you execute the process or component, the JIT compiler will again perform its magic. If you want to avoid the cost of JIT compilation at runtime, you can use a special tool called ngen, which compiles your IL during installation and setup time. Using ngen, you can JIT-compile the code once and cache it on the machine so that you can avoid JIT compilation at runtime (this process is referred to as Pre-JITting). In the event that the PE file has been updated, you must PreJIT the PE file again. Otherwise, the CLR can detect the update and dynamically command the appropriate JIT compiler to compile the assembly. All .NET assemblies are essentially binary components. You can treat each .NET assembly as a component that you can plug into another component or application, without the need for source code, since all the metadata for the component is stored inside the .NET assembly. While you have to perform a ton of plumbing to build a component in COM, you need to perform zero extra work to get a component in .NET, as all .NET assemblies are components by nature. Remember, we're using the term "component" as a binary, deployable unit, not as a COM class. Shared Components: Unlike application-private assemblies, shared assemblies - ones that can be used by any client application - must be published or registered in the system Global Assembly Cache (GAC). When you register your assemblies against the GAC, they act as system components, such as a system DLL that every process in the system can use. A prerequisite for GAC registration is that the component must possess originator and version information. In addition to other metadata, these two items allow multiple versions of the same component to be registered and executed on the same machine. Again, unlike COM, we don't have to store any information in the system registry for clients to use these shared assemblies. Object Pooling: A pool is technical term that refers to a group of resources, such as connections, threads, and objects. Putting a few objects into a pool allows hundreds of clients to share these few objects (you can make the same assertion for threads, connections, and other objects). Pooling is therefore a technique that minimizes the use of system resources, improves performance, and helps system scalability. ADO.NET Architecture: Microsoft ADO.NET's object model encompasses two distinct groups of classes: content components and managed-provider components. The content components include the DataSet class and other supporting classes such as DataTable, DataRow, DataColumn, and DataRelation. These classes contain the actual content of a data exchange. The managed-provider components assist in data retrievals and updates. Microsoft provides two managed providers in its current release of ADO.NET: OLE DB and SQL. The OLE DB managed provider comes with OleDbConnection, OleDbCommand, OleDbParameter, and OleDbDataReader. The SQL Server managed provider comes with a similar set of objects, whose names start with SqlClient instead of OleDb. Developers can use the connection, command, and data reader objects to directly manipulate data. We might think that setting up and tearing down connections is not a good idea since the cost of establishing a connection is usually high. This is a concern only in the absence of connection pooling. ADO.NET automatically keeps connections to a data source in a pool, so when an application thinks it is tearing down a connection, it's actually returning it to the resource pool. This allows connections to be reused, avoiding the cost of reconstructing new connections from scratch. Because ADO.NET framework classes are managed code, developers can inherit and extend these classes to their custom needs. A data reader is a new object providing fast, forward-only, and read-only access to data. This is similar to an ADO Recordset with server-side, forward - only, and read-only cursor types. Since this is a server

–side cursor, the connection to the server is open throughout the reading of data. Even though each DataAdapter maps only one DataTable in the DataSet, you can have multiple adapters to fill the DataSet object with multiple DataTables. Managed Code: The .Net framework provides several core run-time services to the programs that run within it. For example exception handling and security. For these services to work the code must provide a minimum level of information to runtime. Such code is called Managed Code. Managed Data: This is data for which memory management is done by .Net runtime’s garbage collector this includes tasks for allocation de-allocation. We can call garbage collector to collect un-referenced data by executing System.GC.Collect(). What is an Assembly? Assemblies are fundamental building blocks of .Net Framework. They contain the type and resources that are useful to make an application. Assemblies enables code reuse, version control, security and deployment. An assembly consist of: Manifest , Type Metadata, MSIL and resource file. Assemblies are Private and Shared. Private are used for a single application and installed in application’s install directory or its sub-directory. Shared assembly is one that can be referenced by multiple application and resides in GAC(local cache for assemblies managed by .Net Framework). gacutil /i myDll.dll can see and %windir%\assembly Metadata and Manifest: Manifest describes the assembly itself. Assembly name, version, culture, strong name, list of files, type reference and reference assembly. While Metadata describes contents within the assembly like classes, namespaces, interfaces, scope, properties, methods and their parameters etc. Application Domain: It is a virtual process that serves to isolate an application. All object created within the same application scope are created within same application domain. Garbage Collection: It is Automatic Memory Manager for .Net Framework. It manages the memory allocated to .Net Framework. When a variable is defined it gets a space in memory (stack) and when an object is created memory for the object is allocated in heap. When an object is assigned to a variable it increments the reference counts for the object and when program control comes out of the function the scope of variable gets ended Or NULL is assigned to variable it decrements the reference count of object by 1. When reference count of one object becomes zero GC acts call destructor of object and then releases the memory acquired by the object. Can .Net Components can be used from a COM? Yes, can be used. But There are few restrictions such as COM needs an object to be created. So static methods, parameterized constructor can not be used from COM. These are used by COM using a COM Callable Wrapper (CCW). TlbImp.exe and TlbExp.exe How does .NET Remoting work? It involves sending messages along channels. Two of the standard channels are HTTP and TCP. TCP is for LANs only and HTTP can be used on LANs or WANs (internet). TCP uses binary serialization and HTTP uses SOAP (.Net Runtime Serialization SOAP Formatter). There are 3 styles of remote access: SingleCall: Each incoming request is handled by new instance. Singleton: All requests are served by single server object. Client-Activated Object: This is old state-full DCOM model. Where client receives reference to the remote object and keep until it finished with it.

DLL-HELL: Situations where we have to put same name Dlls in single directory where are Dlls are of different versions. Versioning: MajorVersion.MinorVersion.BuildNumber.Revision Boxing and Un-Boxing: Implicit(automatic) conversion of value type to reference type is known as Boxing And Explicit (manual) conversion of Reference type to value type is said to be Un-boxing. (conversion of Integer variable to object type) .Net Object Oriented Programming Concepts Class: Class is concrete representation of an entity. It represents a group of objects, which posses similar attributes and behavior. Provides Abstraction and Encapsulations. A category name that can be given to group of objects of similar kind. Object: Object represents/resembles a Physical/real entity. An object is simply something you can give a name. Object Oriented Programming: It is a Style of programming that represents a program as a system of objects and enables code-reuse. Encapsulation: Binding of attributes and behaviors. Hiding the implementation and exposing the functionality. Abstraction: Hiding the complexity. Defining communication interface for the functionality and hiding rest of the things. In .Net destructor can not be abstract. Can define Either Finalize / Destructor. For Destructor access specifiers can not be assigned. It is Private. Overloading: Adding a new method with the same name in same/derived class but with different number/types of parameters. Implements Polymorphism. Overriding: When we need to provide different implementation than the provide by base class, We define the same method with same signatures in the derived class. Method must be Protected/Protected-Friend/Public for this purpose. (Base class routine can be called by Mybase.Method, base.Method). Shadowing: When the method is defined as Final/sealed in base class and not overridable and we need to provide different implementation for the same. We define method with Shadows/new. Inheritance: Gives you ability to provide is-a relationship. Acquires attributes and behaviors from another. When a class acquires attributes and behaviors from another class. (must not be Final or sealed class in .Net) Abstract Class: Instance can not be created. Optionally can have one or more abstract methods but not necessary. Can provide body to Classes.

Interface: What a Class must do, But not how-to. Bridge for the communication when the caller does not know to whom he is calling. Describes externally visible behavior of element. Only Public members which defines the means of the communication with the outer world. Can-beUsed-As Relationship. Can not contain data but can declare property. There can be no implementation. Interface can be derived from another interface. Polymorphism: Mean by more than one form. Ability to provide different implementation based on different no./type of parameters. A method behaves differently based on the different input parameters. Does not depend on the Return-Type. Pure-Polymorphism: Make an method abstract/virtual in base class. Override it in Derived Class. Declare a variable of type base class and assign an object of derived class to it. Now call the virtual/abstract method. The actual method to be called is decided at runtime. Early-Binding: Calling an non-virtual method decides the method to call at compile time is known as Early-Binding. Late-Binding: Same as pure-polymorphism. Identifiers/Access Specifies and scope: VB.NET: Private, Protected, Friend, Protected Friend, Public. C#: private, protected, internal, protected internal, public. What is a Delegate? A strongly typed function pointer. A delegate object encapsulates a reference to a method. When actual function needs to be called will be decided at run-time. Static Variable and Its Life-Time: VB.NET: Public Shared VAR As Type. C#: public static Type VAR; Life time is till the class is in memory. Constructor: Special Method Always called whenever an instance of the class is created. Destructor/Finalize: Called by GC just before object is being reclaimed by GC. ASP.Net Different Types of Caching? Output Caching: stores the responses from an asp.net page. Fragment Caching: Only caches/stores the portion of page (User Control) Data Caching: is Programmatic way to Cache objects for performance. Authentication and Authorization: Authentication is identifying/validating the user against the credentials (username and password) and Authorization performs after authentication. Authorization allowing access of specific resource to user. Different Types of Directives:

Page, Register, Control, OutputCache, Import, Implements, Assembly, Reference Difference between Server-Side and Client-Side: Server-Side code is executed on web-server and does not transmitted to client, while client-side code executed on client(browser) and is rendered to client along with the content. Difference Server.Transfer and Response.Redirect: Both ends the processing for the current request immediately. Server.Transfer start executing the another resource specified as parameter without acknowledgement to client(browser) while Response.Redirect intimate client that your requested resource is available at this location and then client request for that resource. Different Types of Validators and Validation Controls: RequiredFieldValidator, RangeValidator, RegularExpressionValidator, CompareValidator, CustomValidator, ValidationSummary How to Manage State in ASP.Net? Client based: ViewState, QueryString and Cookies Server based: Session, Application. Difference between User Control and Custom Control: CUSTOM Controls are compiled code (Dlls), easier to use, difficult to create, and can be placed in toolbox. Drag and Drop controls. Attributes can be set visually at design time. Can be used by Multiple Applications (If Shared Dlls), Even if Private can copy to bin directory of webApp add reference and use. Normally designed to provide common functionality independent of consuming Application. 3 Types of Session State Modes? InProc(cookieless, timeout), StateServer (Server, Port stateConnectionString="tcpip=server:port"), SQLServer (sqlconnectionstring) and Off. What is ViewState and How it is managed, Its Advantages/Benefits? ViewState is a special object that ASP.NET uses to maintain the state of page and all webcontrols/ServerControls within it. It is in this object preserves the states of various FORM elements during post-backs. It is rendered to client(browser) as a Hidden variable __VIEWSTATE under
tag. We can also add custom values to it. What is web.config and machine.config: machine.config is default configuration for all applications running under this version, located in %WinDir%\Microsfot.Net\Framework\Version. Settings can be overridden by Web.Config for an specific application Web.Config resides in application’s root/virtual root and exists in sub-sequent folders. Role of Global.asax: Optional file contains the code to handle Application level events raised by ASP.Net or By HttpModule. This file resides in application root directory. Application_Start, _End, _AuthenticateRequest, _Error, Session_Start, _End, BeginRequest, EndRequest. This file is parsed and compiled into dynamically generated class derived from HttpApplication. Page Life Cycle: Init, LoadViewState, LoadPostBackData, Load, RaisePostBackDataChangedEvent, RaisePostBackEvents, Pre-Render, SaveViewState, Render, Unload, (IpostBackDataChangedEventHandler and IpostBackEventHandler) Error, CommitTransaction, AbortTransaction, Abort inetinfo.exe, aspnet_isapi.dll aspnet_wp.exe, HttpModules (OutputCache, Session, Authentication, Authorization, Custom Modules Specified) and Then HttpHandlers PageHandlerFactory for *.aspx Can the action attribute of a server-side tag be set to a value and if not how can you possibly pass data from a form to a subsequent Page?

No assigning value will not work because will be overwritten at the time of rendering. We can assign value to it by register a startup script which will set the action value of form on client-side. Rest are Server.Transfer and Response.Redirect. ASP.Net List Controls and differentiate between them? RadioButtonList, CheckBoxList, DropDownList, Repeater, DataGrid, DataList Type Of Code in Code-Behind class: Server-Side Code. What might be best suited to place in the Application_Start Application level variables and settings initialization in App_Start User specific variables and settings in Session_Start

and

Session_Start:

Difference between inline and code-behind. Which is best? Inline is mixed with html and code-behind is separated. Use code-behind, Because Inline pages are loaded, parsed, compiled and processed at each first request to page and remains in compiled code remains in cache until it expires, If expires it again load, parse and compile While code-behind allows to be pre-compiled and provide better performance. Which Template must provide to display data in Repeater? ItemTemplate. How to Provide Alternating Color Scheme in Repeater? AlternatingItemTemplate What base class all Web Forms inherit from? System.Web.UI.Page What method do you use to explicitly kill a user’s Session? HttpContext.Current.Session.Abandon() How do you turn off cookies in one page of your asp.net application? We will not use it. But can not turn off cookies from server. To allow or not is a client side functionality. Which two properties are on every validation control? ControlToValidate and Text, ErrorMessage How do you create a permanent cookie? Set expires property to Date.MaxValue (HttpCookie.Expires = Date.MaxValue) What is the standard you use to wrap up a call to a Web Service? SOAP Which method do you use to redirect to user to another page without performing a round trip to Client? Server.Transfer(“AnotherPage.aspx”) What is transport protocol you use to call a Web-Service SOAP? HTTP-POST A Web Service can only be written in .NET? FALSE Where on internet would you look for Web services?

www.uddi.org How many classes can a single .NET DLL contain? Unlimited How many namespaces are in .NET version 1.1? 124 What is a bubbled event? When you have a complex control like DataGrid. Writing an event processing routine for each object (cell, button, row etc.). DataGrid handles the events of its constituents and will raise its own defined custom events. Difference between ASP Session State and ASP.Net Session State? ASP: relies on cookies, Serialize all requests from a client, Does not survive process shutdown, Can not maintained across machines in a Web farm/garden. Layouts of ASP.NET Pages: GridLayout and FlowLayout Web User Control: Combines existing Server and HTML controls by using VS.Net. to create functional units that encapsulate some aspects of UI. Resides in Content Files, which must be included in project in which the controls are used. Composite Custom Control: combination of existing HTML and Server Controls. Rendered custom control: create entirely new control by rendering HTML directly rather than using composition. Where do you store the information about user’s Locale? Page.Culture Should Validation occur on Client/Server Side for Date Input? Both. Client-side reduces extra round-trip. Server-Side ensures prevention against hacking and failure against automated requests. HTTP GET and HTTP POST: As their names imply, both HTTP GET and HTTP POST use HTTP as their underlying protocol. Both of these methods encode request parameters as name/value pairs in the HTTP request. The GET method creates a query string and appends it to the script's URL on the server that handles the request. For the POST method, the name/value pairs are passed in the body of the HTTP request message. Web Services Discovery: Even though advertising of a web service is important, it is optional. Web services can be private as well as public. Depending on the business model, some business-to -business (B2B) services would not normally be advertised publicly. Instead, the web service owners would provide specific instructions on accessing and using their service only to the business partner. To advertise web services publicly, authors post discovery files on the Internet. Potential web services clients can browse to these files for information about how to use the web services—the WSDL (Web Service Description Language). Think of it as the yellow pages for the web service. All it does is point you to where the actual web services reside and to the description of those web services. The process of looking up a service and checking out the service description is called Web Service discovery. There are two ways of advertising the service: static and dynamic. In both of these, XML onveys the locations of web services.

Static discovery is easier to understand because it is explicit in nature. If you want to advertise your web service, you must explicitly create the .disco discovery file and point it to the WSDL. As opposed to explicitly specifying the URL for all web services your site supports, you can enable dynamic discovery, which enables all web services underneath a specific URL on your web site to be listed automatically. For your web site, you might want to group related web services under many different directories and then provide a single dynamic discovery file in each of the directory. Web Services and Security: We incorporate security into web service in two ways: system security and application security. System -level security allows for restricting access to the web services from unauthorized clients. It is done in a declarative fashion, whereas application - level security is more flexible. With system-level security, you will most likely have the list of authorized clients' IP addresses that you will let access your web service through the use of some configuration - management tools. With application-level security, you will incorporate the authentication into your web service, thus providing a more flexible configuration. In system – level security client send a user name and password to web server. This pair can be in plain text format or in some encrypted format. Once server authenticates the user it can access the services available to server. In application – level security mode your web services involves taking security into your own hands. You can program your web services so that all of their methods require an access token, which can be obtained from the web service after sending in the client's username and password. The client credentials can be sent to the server through SSL (Secure Sockets Layer), which eliminates the risk of sending clear-text passwords across the wire. Through this SSL channel, the server returns an access token to the caller, who can use it to invoke all other web service methods. Web Form Events The first event that happens in the life of a Web Form is the Init event. This is raised so that we can have initialization code for the page. The controls on the page are not yet created at this point. This event is raised once for each user of the page. The Load event follows the Init event. Subsequently, it is raised each time the page is requested. When this event is raised, all child controls of the Web Form are loaded and accessible. You should be able to retrieve data and populate the controls so that they can render themselves on the page when sent back to the client. The PreRender event happens just before the page is rendered and sent back to the client. We don't often handle this event; however, it depends on the situation. The last event in the life of a Web Form is the Unload event. This happens when the page is unloaded from memory. Final cleanup should be done here. Lifecycle Of A Web Form: In ASP .NET, the web page starts its life when a client requests a particular page. IIS parses and runs the scripts on the ASP page to render HTML content. As soon as the page rendering is complete, the page's life ceases; only the view states of the page persist between requests to the page. These view states allow the controls on the server to appear as if they are still present to handle server events. Using Web Services: In Visual Studio.NET IDE, you can choose Project >> Add Web Reference and then type in the URL where the web service resides. For example, we'll point to the web service we created on local server, than is PubsWS (suppose). The URL to this web service on our server is http://localhost/PubsWS/PubsWS.asmx. After adding the web reference, you can access the proxy object to the web service you are calling via the type servername.proxyObjectName. For your case, it is localhost.PubsWS.

The following code excerpt demonstrates how to use the web service through the proxy. We create an instance of the proxy object and then ask it to relay the message to the real web service to get the list of authors. The result will be streamed back in XML format, which is reconstructed into a DataSet object. [C#] localhost.PubsWS

ws

=

new

localhost.PubsWS(

);

DataSet

ds

=

ws.GetAuthors(

);

ASP.NET Session-State Management: ASP.NET improves upon ASP session-state management by moving to an out-of-process model. By having all web servers in the farm pointing to a common server that hosts the out-of-process state manager, the web client can be redirected around the farm without losing the session states. By using an out-of-process model, we no longer have the problem of losing session states when the IIS process is cycled. This means that if the web server application crashed for whatever reason and restarted within the session time-out duration, the web clients could still have all their session states intact. Of course, if the out-of-process state manager crashed, that is a whole different issue. This leads to the next improvement of ASP.NET—the ability to persist session state to a database. There are two levels of configuration: machine and application. Machine-level configuration associates with the machine.config file stored in WinNT\Microsoft.NET\ Framework\\CONFIG\machine.config, while the application-level configuration uses the web.config file in the application root directory. The application-level configuration overrides the machine -level configuration. Acronyms

CCW

COM Callable Wrapper

CLI

Common Language Infrastructure. This is a subset of the CLR and base class libraries that Microsoft has submitted to ECMA so that a third-party vendor can build a .NET runtime on another platform.

CLR

Common Language Runtime

CLS

Common Language Specification

COFF

Common Object File Format

COM

Component Object Model

CTS

Common Type System

DISCO

Discovery of Web Services. A Web Service has one or more. DISCO files that contain information on how to access its WSDL.

DNA

Distributed interNet Applications Architecture.

DOM

Document Object Model

GDI

Graphical Device Interface

GAC

Global Assembly Cache

GUID

Globally Unique Identifier

HTTP

Hyper Text Transfer Protocol

IDL

Interface Definition Language

IL

Intermediate Language

MSIL

Microsoft Intermediate Language

MSDTC

Microsoft Distributed Transaction Coordinator

N-Tier

Multi-Tier

OLTP

Online Transaction Processing

OLAP

Online Analytical Processing

PE

Portable Executable

RAD

Rapid Application Development

RCW

Runtime Callable Wrapper

SMTP

Simple Mail Transfer Protocol

SOAP

Simple Object Access Protocol

TCP

Transport Control Protocol

TLB

Type Library

UDF

Uniform Data Format

UI

User Interface

URL

Uniform Resource Locator

UDDI

Universal Description, Discovery and Integration

WAP

Wireless Access Protocol

WSDL Web Services Definition Language WML

Wireless Markup Language

XML

Extensible Markup Language

SQL Server

What is normalization? Explain different levels of normalization? Check out the article Q100139 from Microsoft knowledge base and of course, there's much more information available in the net. It'll be a good idea to get a hold of any RDBMS fundamentals text book, especially the one by C. J. Date. Most of the times, it will be okay if you can explain till third normal form. What is denormalization and when would you go for it? As the name indicates, denormalization is the normalization. It's the controlled introduction of the database design. It helps improve the query number of joins could be reduced. How do you implement one-to-one, relationships while designing tables?

one-to-many

reverse process redundancy in performance as and

One-to-One relationship can be implemented as a single rarely as two tables with primary and foreign key One-to-Many relationships are implemented by splitting the two tables with primary key and foreign key Many-to-Many relationships are implemented using a junction

of to the

many-to-many table and relationships. data into relationships. table with

the keys from junction table.

both

the

It will be text book.

good

idea

a

tables to

forming read

up

the a

composite database

primary designing

key

of

the

fundamentals

What's the difference between a primary key and a unique key? Both primary key and unique enforce uniqueness of the column on which they are defined. But by default primary key creates a clustered index on the column, where are unique creates a nonclustered index by default. Another major difference is that, primary key doesn't allow NULLs, but unique key allows one NULL only. What are user defined datatypes and when you should go for them? User defined datatypes let you extend the base SQL Server datatypes by providing a descriptive name, and format to the database. Take for example, in your database, there is a column called Flight_Num which appears in many tables. In all these tables it should be varchar(8). In this case you could create a user defined datatype called Flight_num_type of varchar(8) and use it across all your tables. See sp_addtype, sp_droptype in books online. What is bit datatype inside a bit column?

and

what's

the

information

that

can

be

stored

Bit datatype is used to store boolean information like 1 or 0 (true or false). Untill SQL Server 6.5 bit datatype could hold either a 1 or 0 and there was no support for NULL. But from SQL Server 7.0 onwards, bit datatype can represent a third state, which is NULL. Define candidate key, alternate key, composite key. A candidate key is one that can identify each row of a table uniquely. Generally a candidate key becomes the primary key of the table. If the table has more than one candidate key, one of them will become the primary key, and the rest are called alternate keys. A key formed composite key.

by

combining

at

least

two

or

more

columns

is

called

What are defaults? Is there a column to which a default can't be bound? A default is a value that will be used by a column, if no value is supplied to that column while inserting data. IDENTITY columns and timestamp columns can't have defaults bound to them. See CREATE DEFUALT in books online.

SQL Server architecture

(top)

What is a transaction and what are ACID properties? A transaction is a logical unit of work in which, all the be performed or none. ACID stands for Atomicity, Isolation, Durability. These are the properties of a transaction.

steps must Consistency,

Explain different isolation levels An isolation level determines the degree of isolation of data between concurrent transactions. The default SQL Server isolation level is Read Committed. Here are the other isolation levels (in the ascending order of isolation): Read Uncommitted, Read Committed, Repeatable Read, Serializable. CREATE INDEX myIndex ON myTable(myColumn) What type of Index will get created after executing the above statement? Non-clustered index. Important thing to note: By index gets created on the primary key, unless specified otherwise.

default

a

clustered

What's the maximum size of a row? 8060 bytes. Don't be surprised with questions like 'what is the maximum number of columns per table'. Check out SQL Server books online for the page titled: "Maximum Capacity Specifications". Explain Active/Active and Active/Passive cluster configurations Hopefully you have experience setting up cluster servers. But if you don't, at least be familiar with the way clustering works and the two clusterning configurations Active/Active and Active/Passive. SQL Server books online has enough information on this topic and there is a good white paper available on Microsoft site. Explain the architecture of SQL Server This is a very important question and you better be able to answer it if consider yourself a DBA. SQL Server books online is the best place to read about SQL Server architecture. Read up the chapter dedicated to SQL Server Architecture. What is lock escalation? Lock escalation is (like row locks, locks). Every lock

the process of converting a lot of low level locks page locks) into higher level locks (like table is a memory structure too many locks would mean,

more memory being occupied by locks. To prevent this from happening, SQL Server escalates the many fine-grain locks to fewer coarse-grain locks. Lock escalation threshold was definable in SQL Server 6.5, but from SQL Server 7.0 onwards it's dynamically managed by SQL Server. What's the difference between DELETE TABLE and TRUNCATE TABLE commands? DELETE TABLE is a logged operation, so the deletion of each row gets logged in the transaction log, which makes it slow. TRUNCATE TABLE also deletes all the rows in a table, but it won't log the deletion of each row, instead it logs the deallocation of the data pages of the table, which makes it faster. Of course, TRUNCATE TABLE can be rolled back. Explain the storage models of OLAP Check out MOLAP, ROLAP and HOLAP in SQL Server books online for more infomation. What are the new features introduced in SQL Server 2000 (or the latest release of SQL Server at the time of your interview)? What changed between the previous version of SQL Server and the current version? This question is generally asked to see how current is your knowledge. Generally there is a section in the beginning of the books online titled "What's New", which has all such information. Of course, reading just that is not enough, you should have tried those things to better answer the questions. Also check out the section titled "Backward Compatibility" in books online which talks about the changes that have taken place in the new version. What are constraints? Explain different types of constraints. Constraints enable the RDBMS enforce the integrity automatically, without needing you to create triggers, rule or defaults.

of

the

database

Types of constraints: NOT NULL, CHECK, UNIQUE, PRIMARY KEY, FOREIGN KEY For an explanation of these constraints see books titled: "Constraints" and "CREATE TABLE", "ALTER TABLE"

online

for

the

pages

Whar is an index? What are the types of indexes? How many clustered indexes can be created on a table? I create a separate index on each column of a table. what are the advantages and disadvantages of this approach? Indexes in SQL Server are similar SQL Server retrieve the data quicker.

to

the

indexes

in

books.

They

help

Indexes are of two types. Clustered indexes and non-clustered indexes. When you create a clustered index on a table, all the rows in the table are stored in the order of the clustered index key. So, there can be only one clustered index per table. Non-clustered indexes have their own storage separate from the table data storage. Non-clustered indexes are stored as B-tree structures (so do clustered indexes), with the leaf level nodes having the index key and it's row locater. The row located could be the RID or the Clustered index key, depending up on the absence or presence of clustered index on the table. If you create an index on each column of a table, it improves the query performance, as the query optimizer can choose from all the existing indexes to come up with an efficient execution plan. At the same time, data modification operations (such as INSERT, UPDATE, DELETE) will become slow, as every time data changes in the table, all the indexes need to be updated. Another disadvantage is that, indexes need disk space, the more indexes you have, more disk space is used. Database administration

(top)

What is RAID and what are different types of RAID configurations? RAID stands for Redundant Array of Inexpensive Disks, used to provide fault tolerance to database servers. There are six RAID levels 0 through 5 offering different levels of performance, fault tolerance. MSDN has some information about RAID levels and for detailed information, check out the RAID advisory board's homepage What are the performing query?

steps

you

will

take

to

improve

performance

of

a

poor

This is a very open ended question and there could be a lot of reasons behind the poor performance of a query. But some general issues that you could talk about would be: No indexes, table scans, missing or out of date statistics, blocking, excess recompilations of stored procedures, procedures and triggers without SET NOCOUNT ON, poorly written query with unnecessarily complicated joins, too much normalization, excess usage of cursors and temporary tables. Some of the tools/ways that help you troubleshooting performance problems are: SET SHOWPLAN_ALL ON, SET SHOWPLAN_TEXT ON, SET STATISTICS IO ON, SQL Server Profiler, Windows NT /2000 Performance monitor, Graphical execution plan in Query Analyzer. Download the white paper on performance tuning SQL Microsoft web site. Don't forget to check out sql-server-performance.com What are the SQL Server?

steps

you

will

take,

if

you

are

tasked

with

Server securing

from an

Again this is another open ended question. Here are some things you could talk about: Preferring NT authentication, using server, database and application roles to control access to the data, securing the physical database files using NTFS permissions, using an unguessable SA password, restricting physical access to the SQL Server, renaming the Administrator account on the SQL Server computer, disabling the Guest account, enabling auditing, using multiprotocol encryption, setting up SSL, setting up firewalls, isolating SQL Server from the web server etc. Read the white paper on SQL Server security Also check out My SQL Server security best practices What is a deadlock resolving deadlocks?

and

what

is

a

live

lock?

from How

Microsoft will

you

website. go

about

Deadlock is a situation when two processes, each having a lock on one piece of data, attempt to acquire a lock on the other's piece. Each process would wait indefinitely for the other to release the lock, unless one of the user processes is terminated. SQL Server detects deadlocks and terminates one user's process. A livelock is one, where a request for an exclusive lock is repeatedly denied because a series of overlapping shared locks keeps interfering. SQL Server detects the situation after four denials and refuses further shared locks. A livelock also occurs when read transactions monopolize a table or page, forcing a write transaction to wait indefinitely. Check out SET DEADLOCK_PRIORITY and Server books online. Also check out the knowledge base.

"Minimizing Deadlocks" article Q169960 from

in SQL Microsoft

What is blocking and how would you troubleshoot it? Blocking happens when one connection from an application holds a lock and a second connection requires a conflicting lock type. This forces the second connection to wait, blocked on the first. Read up the following topics in SQL Server and avoiding blocking, Coding efficient transactions.

books

online:

Understanding

Explain CREATE DATABASE syntax Many of us are or by just issuing have to create a other on drive D and with a growth

used to creating databases from the Enterprise Manager the command: CREATE DATABAE MyDB. But what if you database with two filegroups, one on drive C and the with log on drive E with an initial size of 600 MB factor of 15%? That's why being a DBA you should be

familiar with the CREATE online for more information. How to restart SQL Server in minimal configuration mode?

DATABASE in

syntax.

single

user

Check

mode?

out

SQL

How to

Server

start

books

SQL Server

SQL Server can be started from command line, using the SQLSERVR.EXE. This EXE has some very important parameters with which a DBA should be familiar with. -m is used for starting SQL Server in single user mode and -f is used to start the SQL Server in minimal confuguration mode. Check out SQL Server books online for more parameters and their explanations. As a part of your job, what use for database maintenance?

are

the

DBCC

commands

that

you

commonly

DBCC CHECKDB, DBCC CHECKTABLE, DBCC CHECKCATALOG, DBCC CHECKALLOC, DBCC SHOWCONTIG, DBCC SHRINKDATABASE, DBCC SHRINKFILE etc. But there are a whole load of DBCC commands which are very useful for DBAs. Check out SQL Server books online for more information. What are statistics, do you update them?

under

what

circumstances

they

go

out

of

date,

how

Statistics determine the selectivity of the indexes. If an indexed column has unique values then the selectivity of that index is more, as opposed to an index with non-unique values. Query optimizer uses these indexes in determining whether to choose an index or not while executing a query. Some situations under which you should update statistics: 1) If there is significant change in the key values in the index 2) If a large amount of data in an indexed column has been added, changed, or removed (that is, if the distribution of key values has changed), or the table has been truncated using the TRUNCATE TABLE statement and then repopulated 3) Database is upgraded from a previous version Look up SQL Server books online for the following commands: UPDATE STATISTICS, STATS_DATE, DBCC SHOW_STATISTICS, CREATE STATISTICS, DROP STATISTICS, sp_autostats, sp_createstats, sp_updatestats What are the different ways and databases in SQL Server?

of

moving

data/databases

between

servers

There are lots of options available, you have to choose your option depending upon your requirements. Some of the options you have are: BACKUP/RESTORE, detaching and attaching databases, replication, DTS, BCP, logshipping, INSERT...SELECT, SELECT...INTO, creating INSERT scripts to generate data.

Explian different types of BACKUPs avaialabe in SQL particular scenario, how would you go about choosing a backup plan?

Server?

Given

a

Types of backups you can create in SQL Sever 7.0+ are Full database backup, differential database backup, transaction log backup, filegroup backup. Check out the BACKUP and RESTORE commands in SQL Server books online. Be prepared to write the commands in your interview. Books online also has information on detailed backup/restore architecture and when one should go for a particular kind of backup. What is database replicaion? replication you can set up in SQL Server?

What

are

Replication is the process of copying/moving the same or different servers. SQL Server of replication scenarios: • • •

Snapshot replication Transactional replication (with with queued updating subscribers) Merge replication

the

different

types

of

data between databases on supports the following types

immediate

updating

See SQL Server books online for indepth coverage on prepared to explain how different replication agents are the main system tables used in replication etc.

subscribers,

replication. Be function, what

How to determine the service pack currently installed on SQL Server? The global variable sqlservr.exe, which is To know more about versions. Database programming

@@Version stores the build number of the used to determine the service pack installed. this process visit SQL Server service packs and (top)

What are cursors? Explain different types disadvantages of cursors? How can you avoid cursors?

of

cursors.

What

are

the

Cursors allow row-by-row prcessing of the resultsets. Types of cursors: Static, Dynamic, Forward-only, Keyset-driven. Disadvantages of cursors: Each time you fetch a row from the cursor, it results in a network roundtrip, where as a normal SELECT query makes only one roundtrip, however large the resultset is. Cursors are also costly because they require more resources and temporary storage (results in more IO operations). Further, there are restrictions on the SELECT statements that can be used with some types of cursors.

Most of the times, set cursors. Here is an example: If you criteria:

have

to

give

a

based flat

operations

hike

to

your

Salary between 30000 and Salary between 40000 and Salary between 55000 and 65000 -- 9000 hike

can

be

employees

40000 55000

used using

---

instead

of

the

following

5000 7000

hike hike

In this situation many developers tend to use a cursor, determine each employee's salary and update his salary according to the above formula. But the same can be achieved by multiple update statements or can be combined in a single UPDATE statement as shown below: UPDATE tbl_emp SET salary = CASE WHEN salary BETWEEN 30000 AND 40000 THEN salary + 5000 WHEN salary BETWEEN 40000 AND 55000 THEN salary + 7000 WHEN salary BETWEEN 55000 AND 65000 THEN salary + 10000 END Another situation in which developers tend to use cursors: You need to call a stored procedure when a column in a particular row meets certain condition. You don't have to use cursors for this. This can be achieved using WHILE loop, as long as there is a unique key to identify each row. For examples of using WHILE loop for row by row processing, check out the 'My code library' section of my site or search for WHILE. Write down options.

the

Here's the basic advanced syntax).

general

syntax

syntax:

(Also

for

a

SELECT

checkout

SELECT [INTO FROM [WHERE [GROUP BY [HAVING [ORDER BY order__expression [ASC | DESC] ]

statements

SELECT

in

covering books

all

the

online

for

select_list new_table_] table_source search_condition] group_by__expression] search_condition]

What is a join and explain different types of joins. Joins are used in queries to Joins also let you select data another table.

explain how different tables are related. from a table depending upon data from

Types of joins: INNER JOINs, OUTER JOINs, CROSS JOINs. OUTER JOINs are further classified as LEFT OUTER JOINS, RIGHT OUTER JOINS and FULL OUTER JOINS. Can you have a nested transaction? Yes, very much. Check out BEGIN TRAN, COMMIT, ROLLBACK, SAVE TRAN and @@TRANCOUNT What is an extended by using T-SQL?

stored

procedure?

Can

you

instantiate

a

COM

object

An extended stored procedure is a function within a DLL (written in a programming language like C, C++ using Open Data Services (ODS) API) that can be called from T-SQL, just the way we call normal stored procedures using the EXEC statement. See books online to learn how to create extended stored procedures and how to add them to SQL Server. Yes, you can instantiate a COM (written in languages like VB, VC++) object from T-SQL by using sp_OACreate stored procedure. Also see books online for sp_OAMethod, sp_OAGetProperty, sp_OASetProperty, sp_OADestroy. For an example of creating a COM object in VB and calling it from T-SQL, see 'My code library' section of this site. What is the system function to get the current user's user id? USER_ID(). Also check out other system functions like SYSTEM_USER, SESSION_USER, CURRENT_USER, USER, HOST_NAME(). What are triggers? How invoke a trigger on demand? Triggers are special automatically when an on a table.

many

triggers

you

can

have

kind of stored procedures INSERT, UPDATE or DELETE

on

a

USER_NAME(), SUSER_SID(), table?

How

to

that get executed operation takes place

In SQL Server 6.5 you could define only 3 triggers per table, one for INSERT, one for UPDATE and one for DELETE. From SQL Server 7.0 onwards, this restriction is gone, and you could create multiple triggers per each action. But in 7.0 there's no way to control the order in which the triggers fire. In SQL Server 2000 you could specify which trigger fires first or fires last using sp_settriggerorder Triggers can't be invoked on demand. They get triggered only associated action (INSERT, UPDATE, DELETE) happens on the which they are defined.

when table

an on

Triggers are generally used to implement Triggers can also be used to extend the but wherever possible, use constraints for triggers, as constraints are much faster.

business rules, auditing. referential integrity checks, this purpose, instead of

Till SQL Server 7.0, triggers fire only after the data modification operation happens. So in a way, they are called post triggers. But in SQL Server 2000 you could create pre triggers also. Search SQL Server 2000 books online for INSTEAD OF triggers. Also check out books COLUMNS_UPDATED()

online

for

'inserted

table',

'deleted

table'

and

There is a trigger defined for INSERT operations on a table, in an OLTP system. The trigger is written to instantiate a COM object and pass the newly insterted rows to it for some custom processing. What do you think of this implementation? Can this be implemented better? Instantiating COM objects is a time consuming process and since you are doing it from within a trigger, it slows down the data insertion process. Same is the case with sending emails from triggers. This scenario can be better implemented by logging all the necessary data into a separate table, and have a job which periodically checks this table and does the needful. What is a self join? Explain it with an example. Self join is just like any other join, except that two instances of the same table will be joined in the query. Here is an example: Employees table which contains rows for normal employees as well as managers. So, to find out the managers of all the employees, you need a self join. CREATE ( empid mgrid empname ) INSERT emp INSERT emp INSERT emp INSERT emp INSERT emp SELECT 5,2,'Sourabh' SELECT t1.empname FROM emp WHERE t1.mgrid = t2.empid

TABLE

emp int, int, char(10)

SELECT SELECT SELECT SELECT [Employee], t1,

t2.empname emp

1,2,'Vyas' 2,3,'Mohan' 3,NULL,'Shobha' 4,2,'Shridhar' [Manager] t2

Here's an advanced query using a LEFT OUTER JOIN that even returns the employees without managers (super bosses) SELECT t1.empname [Employee], COALESCE(t2.empname, 'No manager') [Manager] FROM emp t1 LEFT OUTER JOIN emp t2 ON t1.mgrid = t2.empid - How do you manage session in ASP and ASP.NET - How do you handle session management in ASP.NET and how do you implement them. How do you handle in case of SQLServer mode. - What are different authentication types. How do you retreive user id in case of windows authentication - For a server control, you need to have same properties like color maxlength, size, and allowed character throughout the application. How do you handle this. - What is custom control. What is the difference between custom control and user control - What is the syntax for datagrid and specifying columns - How do you add a javascript function for a link button in a datagrid. - Does C# supports multi-dimensional arrays - How to transpose rows into columns and columns into rows in a multi-dimensional array What are object oriented concepts - How do you create multiple inheritance in C# - ADO and ADO.NET differences - Features and disadvantages of dataset - What is the difference between and ActiveX dll and control - How do you perform validations - What is reflection and disadvantages of reflection - What is boxing and how it is done internally - Types of authentications in IIS - What are the security issues if we send a query from the application - Difference between ByVal and ByRef - Disadvantages of COM components -

How do we invoke queries from the application What is the provider and namespaces being used to access oracle database How do you load XML document and perform validation of the document How do you access elements in XML document What is ODP.NET Types of session management in ASP.NET Difference between datareader and dataset What are the steps in connecting to database How do you register a .NET assembly Usage of web.config About remoting and web services. Difference between them Caching techniques in .NET About CLS and CTS Is overloading possible in web services

-

Difference between .NET and previous version Types of chaching. How to implement caching Features in ASP.NET How do you do validations. Whether client-side or server-side validations are better How do you implement multiple inheritance in .NET Difference between multi-level and multiple inheritance Difference between dataset and datareader What are runtime hosts What is an application domain What is viewstate About CLR, reflection and assemblies Difference between .NET components and COM components What does assemblyinfo.cs consists Types of objects in ASP

#61607; -

Database

What are the blocks in stored procedure How do you handle exceptions. Give the syntax for it What is normalization and types of normalization When would you denormalize Difference between a query and strored procedure What is clustered and non-clustered indexes Types of joins How do you get all records from 2 tables. Which join do you use Types of optimization Difference between inline query and stored procedure

Difference between VB dll and assemblies in .NET - What is machine.config and web.config - Tell about WSDL - About web methods and its various attributes - What is manifest - Types of caching - What does connection string consists of - Where do you store connection string - What is the difference between session state and session variables - How do you pass session values from one page to another - What are WSDL ports - What is dataset and tell about its features. What are equivalent methods of previous, next etc. Of ADO in ADO.NET - What is abstract class - What is difference between interface inheritance and class inheritance - What are the collection classes - Which namespace is used for encryption - What are the various authentication mechanisms in ASP.NET - What is the difference between authentication and autherization - What are the types of threading models - How do you send an XML document from client to server - How do you create dlls in .NET - What is inetermediate language in .NET - What is CLR and how it generates native code - Can we store PROGID informatoin in database and dynamically load the component

- Is VB.NET object oriented? What are the inheritances does VB.NET support. - What is strong name and what is the need of it - Any disadvantages in Dataset and in reflection - Advantage of vb.net over vb - What is runtime host - How to send a DataReader as a parameter to a remote client - How do you consume a webservice - What happens when a reference to webservice is added - How do you reference to a private & shared assembly - What is the purpose of System.EnterpriseServices namespace - About .Net remoting - Difference between remoting and webservice - Types of statemanagement techniques - How to register a shared assembly - About stateless and statefull webservice - How to invoke .net components from com components,give the sequence - How to check null values in dataset - About how soap messages are sent and received in webservice - Error handling and how this is done - Features in .net framework 1.1 - Any problem found in vs.et - Optimization technique description - About disco and uddi - What providers does ado.net uses internally - Oops concepts - Disadvantages of vb - XML serialization - What providers do you use to connect to oracle database? - About .NET Framework - About Assembly in .NET, types of assemblies, their difference, How to register into GAC. How to generate the strong names & its use. - What is side by side Execution? - What is serialization? - Life cycle of ASP.NET page when a request is made. - If there is submit button in a from tell us the sequence what happens if submit is clicked and in form action is specified as some other page. - About a class access specifiers and method access specifiers. - What is overloading and how can this be done. - How to you declare connection strings and how to you make use of web.config. - How many web.copnfig can exists in a web application & which will be used. - About .NET Remoting and types of remoting - About Virtual functions and their use. - How do you implement Inheritance in dot net - About ado.net components/objects. Usage of data adapters and tell the steps to retrieve data. - What does CLR do as soon as an assembly is created - How do you retrieve information from web.config. - How do you declare delegates and are delegates and events one and the same and explain how do you declare delegates and invoke them. - If I want to override a method 1 of class A and in class b then how do you declare? - What does CLR do after the IL is generated and machine language is generated .Will it look for main method - About friend and Protected friend

- About multi level and multiple inheritance how to achieve in .net - Sequence to connect and retrieve data from database useig dataset - About sn.exe - What was the problem in traditional component why side by side execution is supported in .net - How .net assemblies are registred as private and shared assembly - All kind of access specifiers for a class and for methods - On ODP.net - Types of assemblies that can be created in dotnet - About namespaces - OOPs concept - More on CLR

Impersonation is the process of assigning a user account to an unknown user Windows integrated authentication. Identifies and authorizes users based on the server' s users list. Access to resources on the server is then granted or denied based on the user account' s privileges. This works the same way as regular Windows network security. Forms authentication. Directs users to a logon Web form that collects user name and password information, and then authenticates the user against a user list or database that the application maintains. Passport authentication. Directs new users to a site hosted by Microsoft so that they can register a single user name and password that will authorize their access to multiple Web sites. Existing users are prompted for their Passport user name and password, which the application then authenticates from the Microsoft Passport user list.

Use this type of Description authentication This is the common access method for most Web sites. No Public Internet Anonymous logon is required and you secure restricted resources using Web application NTFS file permissions. Windows authentication authenticates network users Intranet WebWindows through the domain controller. Network users have access to application integrated Web application resources as determined by their user privileges on the server. Corporate users can access the Web application using their Private corporateWindows corporate network user names and passwords. User Web application integrated accounts are administered using the Windows network security tools. Applications that need to collect shipping and billing Commercial Web Forms information should implement Forms authentication to application gather and store customer information. Passport authentication allows users to sign in once through Multiple a central authority. The user' s identity is then available to commercial WebPassport any application using the Passport SDK. Customer applications information is maintained in a Passport Profile, rather than in a local database. Application type

Storing Session State InProc To store session state in the ASP.NET worker process, select InProc from the session state mode control. Your application will retrieve and store session information very quickly, but it will be available only to your application (and not on a Web form). Storing Session State in a State Server To have ASP.NET store session state on another server on your network, select StateServer from the SessionState mode control. When you select this item, the dialog box will enable the Connection String text box and the network timeout text box. Insert the protocol, IP address, and port for the state server in the Connection String text box. For example, the string: tcpip=127.0.0.1:42424

will store the session state on the local machine over port 42424. If you want to store the session state on a machine other than your local server, change the IP address. Before session state is stored on a machine, you need to make sure the ASP.NET state server is running on that machine. You may get to it via the Services panel under the control panel. Storing Session State in a Database The final option for storing session state is to use a SQL Server database. Select SQLServer from the ASP.NET session state mode combo box. You'll be asked to enter the connection string to the SQL Server state database. Here's the string they provide by default: data source=127.0.0.1;Integrated Security=SSPI

You may point ASP.NET so it references a database on another machine. Of course, you need to have SQL Server installed on the target machine to make this work. In addition, you'll find some SQL scripts to create the state databases in your .NET system directory (C:\WINDOWS\[[]]Microsoft.NET\Framework\v2.0.50215 on this machine at the time of this writing). The Aspnet_regsql.exe tool will set up the databases for you. Caching At the outset, turning on output caching is easy. To set up caching, place the OutputCache directive on the page. It's a separate directive, like the Page directive. The OutputCache directive enables caching and provides certain control over its behavior. The following exercise introduces caching output.For pages that are expensive to generate and that don't change very often, caching the content represents an enormous performance boost for your Web site— especially as the number of clients increases. Serialization is a process of taking an object and converting into a form so that it can be transported across the network or can be persisted in the storage location. This storage location can be physical file, database or ASP.NET Cache. The form contains the state of

the object so that by this format, we can construct the same object a later point in time, which is called Deserialization. There are three formats of serialization Binary Serialization : Light andcompact used in Remoting SOAP Serialization :interoperableuse SOAP and used in web Services XML Serialization :Custom Serialization

Introduction Serialization in .NET allows the programmer to take an instance of an object and convert it into a format that is easily transmittable over the network, or even stored in a database or file system. This object will actually be an instance of a custom type, including any properties or fields you may have set. A few examples I can think of include the ability to send an instance of your object to another portion of a local or remote application, such as over a Web service. Another example of when to choose to serialize objects is for data within objects that would normally be stored in a database, but these pieces of data do not need to be stored individually (their own fields in your tables). Streamline the database design by only holding those pieces of data for each record you need to query on, and the rest of the pieces can simply be serialized within a custom type and stored as a complete object within the database. Let's take a scheduling object as an example. The scheduling object, enables an application to trigger events based on a very specific schedule. There could be numerous settings involved when building this, such as intervals, date and time restrictions, etc. Normally each piece of data would require the creation of a separate field in your table, when really the only important piece of information is the exact date/time when the next event should be triggered. Instead, serialize this entire scheduling object, and save that into the database, along with the one piece of information that is needed, the next event date/time. This cuts down the entire database schema to about three fields, not to mention the time saved from writing complex Save and Load methods. This article covers the two formats in which you can serialize objects to --: XML or binary -- and the many advantages/disadvantages of each. It also covers the two ways that one can serialize, Basic and Custom. And, finally, the article will end with a sample project demonstrating how to send a custom object over the wire with Web Services. This piece focuses on the .NET Framework's System.Runtime.Serialization namespace (see http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemRuntimeSerialization.asp). The first step in any serialization process is to take the instance of the object and convert it to a memory stream. From there we have the ability to perform any number of operations with (file IO, database IO, etc.). Examine Figure 1.1 (below) which demonstrates four methods for performing serialization, including serializing and de-serializing in binary format, and the same in XML format. The next section will cover the differences between binary and XML serialization. Figure 1.1 Core Serialization Methods

#region Binary Serializers public static System.IO.MemoryStream SerializeBinary(object request) { System.Runtime.Serialization.Formatters.Binary.BinaryFormatter serializer =

new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); System.IO.MemoryStream memStream = new System.IO.MemoryStream(); serializer.Serialize(memStream, request); return memStream; } public static object DeSerializeBinary(System.IO.MemoryStream memStream) { memStream.Position=0; System.Runtime.Serialization.Formatters.Binary.BinaryFormatter deserializer = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); object newobj = deserializer.Deserialize(memStream); memStream.Close(); return newobj; } #endregion #region XML Serializers public static System.IO.MemoryStream SerializeSOAP(object request) { System.Runtime.Serialization.Formatters.Soap.SoapFormatter serializer = new System.Runtime.Serialization.Formatters.Soap.SoapFormatter(); System.IO.MemoryStream memStream = new System.IO.MemoryStream(); serializer.Serialize(memStream, request); return memStream; } public static object DeSerializeSOAP(System.IO.MemoryStream memStream) { object sr; System.Runtime.Serialization.Formatters.Soap.SoapFormatter deserializer = new System.Runtime.Serialization.Formatters.Soap.SoapFormatter(); memStream.Position=0; sr = deserializer.Deserialize(memStream); memStream.Close(); return sr; } #endregion Whenever you want an object to be able to be serialized, mark it as [Serializable()], with a custom attribute on the class (http://msdn.microsoft.com/library/enus/cpref/html/frlrfsystemserializableattributeclasstopic.asp). In the same solution provided here, the "Schedule" class in the "Serialization" project, you will see this attribute in use. Also consider the field attribute named "[NonSerialized()]" (see http://msdn.microsoft.com/library/enus/cpref/html/frlrfsystemnonserializedattributeclasstopic.asp). It can be applied to any field from within your class to prevent it from being serialized. This would be useful if you had a variable within the class that was not needed or you did not want to have serialized into the final product. Simply add the NonSerialized() attribute to that variable because the system will not automatically serialize it for you. Keep in mind that the [Serializable()] attribute applies to the class entirely. So if you want the entire class to be able to support serialization, you must add that attribute, where the [NonSerialized()] attribute applies to the fields within a class that is marked as [Serializable()]. Note that using the [NonSerialized()] is sometimes called "Selective Serialization." Lastly, note that in order to use the System.Runtime.Serialization.Formatters.Soap.SoapFormatter, you must add a reference to the System.Runtime.Serialization.Formatters.Soap.dll.

Before proceeding, take time to look over our Schedule class listed in Figure 1.2 (below). Figure 1.2 Schedule Class

using System; namespace FifteenSeconds { /// <summary> /// Allow us to represent a schedule /// [Serializable()] public class Schedule { protected System.DateTime start; protected System.DateTime end; //number of milliseconds to increment @ each interval protected long interval; public System.DateTime Start {get{return start;}set{start=value;}} public System.DateTime End {get{return end;}set{end=value;}} public long Interval {get{return interval;}set{interval=value;}} public Schedule(System.DateTime Start, System.DateTime End, long Interval) { start=Start; end=End; interval=Interval; } //return the next runtime, and if the schedule has ended, return the end time public System.DateTime NextRunTime { get { System.TimeSpan ts = new System.TimeSpan(end.Ticks-System.DateTime.Now.Ticks); if(ts.Milliseconds>0) { //our end time is in the future still return System.DateTime.Now.AddMilliseconds(interval); } else { return end; } } } } } This is the class referred to in the remainder of this article. Download code for this article

Binary vs. XML Serialization As demonstrated above, the choice between XML and Binary serialization is not dependent on the actual implementation of the code. Both methods are very easy to implement. Consider the advantages offered by both. Advantages of Binary Serialization

1. All members, no matter if they are read-only will be serialized. 2. Greater performance* Advantages of XML Serialization 1. Greater flexibility of object sharing and usage (interoperability) 2. No strict binary dependence 3. Human readable After reviewing the code in Figure 1.1, notice that serialization in either binary or XML simply depends only on choosing your Formatter. Also notice that the difference between serialization and deserialization is the difference between calling the Serialize() method or the Deserialize() method with the appropriate parameters. The above code can easily be copied into any of your applications as is; it will be the core of most of your serialization needs. Consider taking a look at the attached ZIP file for this article. I have included those methods listed above, along with a few other methods. *I have included a spreadsheet that shows my test results for groups of iterations of Basic Serialization. Also take a look at the "SpeedTests" project in the solution, which you can use to run your own tests. For one simple iteration to serialize it was more than 1,000 percent faster to use binary serialization over XML, and for deserialization it was only 380 percent faster.

Basic Serialization vs. Custom The .NET Framework provided the ability to perform serialization in two ways. Keep in mind that "performing" serialization is not the same as the "format" in which we serialize. Performing serialization refers to the actual way in which to instruct Framework to take our object and pack it into the final result of the serialization, regardless of the format (see section on Binary vs. XML Serialization, above). The easiest way is to allow Framework to automatically serialize the object on its own; this is typically called "Basic Serialization." Basic Serialization only requires that your object has the [Serializable()] class attribute. Framework will take your class and convert it to the given formatter used. The only control you have over this process is by using the [NonSerialized()] field attributes to stop any field from being serialized. You do not have any control over exactly how each item in your class is serialized. If you desire greater control, then move into the world of "Custom Serialization." This is where you can specify exactly which items will be serialized, and exactly how it will be done. In the sample solution provided, I have created a class named "ScheduleCustom" to demonstrate exactly how this is done. When using Basic Serialization, versioning your objects plays a major role. To serialize our schedule object to disk, and then change that object (for example, by adding an additional field), will lead to problems with deserialization. The error will be similar to: "Wrong number of Members. Object FifteenSeconds.Schedule has 4 members, number of members deserialized is 3." If you do run into this issue, consider changing to Custom Serialization. Since you are exactly specifying how to handle all members of your class during the serialization process, you can avoid these versioning problems.

Custom Serialization The first thing we must do is obviously mark our class as [Serializable()]. Next, our class must implement the System.Runtime.Serialization.ISerializable interface (http://msdn.microsoft.com/library/en-

us/cpref/html/frlrfSystemRuntimeSerializationISerializableClassTopic.asp). So our class definition looks like:

[Serializable()] public class ScheduleCustom : System.Runtime.Serialization.ISerializable { Within this interface we see the following single method: void GetObjectData(SerializationInfo info, StreamingContext context); In order for our class to satisfy supporting the interface, we must also implement this GetObjectData() method: public void GetObjectData(SerializationInfo info,StreamingContext context) { //use the info object to add the items you want serialized info.AddValue("start", start); info.AddValue("end", end); info.AddValue("interval", interval); } Given this extremely simple demonstration you may not be able to see the actual power of using Custom Serialization, so I will add to the class to demonstrate the flexibility it adds to your serialization needs. If we were to examine the output of the "start" DateTime value during the serialization process, we would see it default to the Framework DateTime format: 2002-08-19T14:09:13.3457440-07:00 If you plan on sharing this object with others who are not using the .NET Framework and are internationally distributed, it may be wise to represent the DateTime value in Greenwich Mean Time (GMT). Let's modify the GetObjectData() method to convert "start" and "end" times into GMT. public void GetObjectData(SerializationInfo info,StreamingContext context) { //use the info object to add the items you want serialized //in order for better partnering we will convert our times to GMT times //"Universal Time" AKA "Coordinated Universal Time" AKA GMT info.AddValue("start", System.TimeZone.CurrentTimeZone.ToUniversalTime(start)); info.AddValue("end", System.TimeZone.CurrentTimeZone.ToUniversalTime(end)); info.AddValue("interval", interval); info.AddValue("timeformat", "utc"); } Now the "start" time, when serialized, will be in the GMT format of: 8/19/2002 9:09:13 PM Also notice the additional property I added named "timeformat". This item will be used later for us to determine which type of DateTime formats were used for the serialization process. Also consider other formats for outputting the dates. Consider what the System.Globalization.DateTimeFormatInfo could offer, or even converting the DateTime to time since Unix epoch (January 1, 1970, see http://www.wikipedia.com/wiki/Unix_epoch) for easier integration with

non-Microsoft platforms. You could add an optional property to our class to indicate which type of format the DateTime will be in once it has been serialized, of course indicate this by using the "timeformat" value we added to the items being serialized.

Custom Deserialization If you want to allow your object to be deserialized in a custom manner, use a custom constructor. The definition of this constructor looks similar to: public ScheduleCustom (SerializationInfo info,StreamingContext context) {} As usual, you must implement this method. For our schedule class, our implementation will convert the UTC time back into a local DateTime format. public ScheduleCustom (SerializationInfo info,StreamingContext context) { //let's bring back our date/times into local times this.start = info.GetDateTime("start").ToLocalTime(); this.end = info.GetDateTime("end").ToLocalTime(); this.interval = info.GetInt32("interval"); } As I indicated in the Custom Serialization process previously, the additional item "timeformat" could be used to specify exactly how you would convert the serialized time into the DateTime needed for the local object. But since this example simply covers the conversion to and from UTC, our task is very easy.

Serialization with Web Services When learning a new aspect of technology, it's useful to see that technology in use. In this section we will create one Web Service with two methods. The first method will enable Framework to return our custom serialized schedule object in binary format. The second method will return the same object in XML format. This example will be a quick one because we will build on top of the foundation we already built. In my solution, I have simply added a new C# Web Service project, with a reference to our "serialization" project. We will next add the two methods as described above. FifteenSeconds.ScheduleCustom customSchedule = new FifteenSeconds.ScheduleCustom(System.DateTime.Now, 10000);

System.DateTime.Now.AddHours(5),

[WebMethod] public byte[] Get_Binary_Schedule() { return FifteenSeconds.Serializer.Serialize( customSchedule, FifteenSeconds.Serializer.SerializationFormat.Binary).ToArray(); } [WebMethod] public string Get_XML_Schedule() { return FifteenSeconds.Serializer.ConvertStreamToString (FifteenSeconds.Serializer.Serialize( customSchedule, FifteenSeconds.Serializer.SerializationFormat.Xml)); } Notice both methods are using the same instance of the FifteenSeconds.ScheduleCustom object and simply return back either the byte[], in the case of the binary transfer, or the string, in the case of the XML. Don't forget Framework will automatically serialize your objects for you, simply by having the

return type on your method your custom type. But what happens if you need to send a collection of somewhat unrelated objects over the wire? It really depends on your needs and your imagination. Take time now to review the project named "Serialization" in the solution. It also has a few methods that you may find useful if you ever need to serialize these objects to a file on your disk. Assembly : An assembly is the smallest unit that you use to define the version of an application. The version of an assembly determines the version of the types and the other resources that it contains. The .NET Framework allows the execution of multiple versions of the same assembly on the same machine. The side-by-side execution of assemblies overcomes the problem known as "DLL hell," which is one of the major problems associated with COM applications. DLL: A Dynamic Link Library (DLL) is a file that is loaded at runtime, and its functions linked dynamically at that time. This allows for multiple applications that use the same library functions to all share one DLL, and if the code in the DLL needs to be fixed, the DLL can be replaced, and all applications that use it will get the benefit of the update. Static libraries are different from DLLs in that each application gets its own copy of the functions, and they are embedded into the Exe at compile/link time. If the library functions need to be fixed, every application that uses them must be recompiled to get the fixes.

Related Documents

Dotnet
November 2019 30
Dotnet
November 2019 23
Dotnet
November 2019 31
Dotnet
October 2019 29
Dotnet
November 2019 35
Dotnet Qa
November 2019 25