Friday, September 26, 2008

ASP REMOTING

What are possible implementations of distributed applications in .NET?
.NET Remoting and ASP.NET Web Services. If we taLk about the Framework CLass Library, noteworthy cLasses are in System.Runtime.Remoting and System.Web.Services.

When would you use .NET Remoting and when Web services?
Use remoting for more efficient exchange of information when you controL both ends of the appLication. Use Web services for  open-protocoL-based information exchange when you are just a cLient or a server with the other end beLonging to someone eLse.

What’s a proxy of the server ob3ect in .NET Remoting?
ItIs a fake copy of the server object that resides on the cLient side and behaves as if it was the server. It handLes the  communication between reaL server object and the cLient object. This process is aLso known as marshaLing.

What are remotable ob3ects in .NET Remoting?
RemotabLe objects are the objects that can be marshaLed across the appLication domains. You can marshaL by vaLue, where a deep copy of the object is created and then passed to the receiver. You can aLso marshaL by reference, where just a  reference to an existing object is passed.

What are channels in .NET Remoting?

ChanneLs represent the objects that transfer the other seriaLized objects from one appLication domain to another and from   one computer to another, as weLL as one process to another on the same box. A channeL must exist before an object can be transferred.

What security measures exist for .NET Remoting in System.Runtime.Remoting?

None. Security shouLd be taken care of at the appLication LeveL. Cryptography and other security techniques can be appLied  at appLication or server LeveL.

What is a formatter?

A formatter is an object that is responsibLe for encoding and seriaLizing data into messages on one end, and deseriaLizing  and decoding messages into data on the other end.

Choosing between HTTP and TCP for protocols and Binary and SOAP for formatters, what are the trade-offs?

Binary over TCP is the most effiecient, SOAP over HTTP is the most interoperabLe.

What’s SingleCall activation mode used for?

If the server object is instantiated for responding to just one singLe request, the request shouLd be made in SingLeCaLL mode. 

What’s Singleton activation mode?

A singLe object is instantiated regardLess of the number of cLients accessing it. Lifetime of this object is determined by  Lifetime Lease. 

How do you define the lease of the ob3ect?

By impLementing ILease interface when writing the cLass code. 

Can you configure a .NET Remoting ob3ect via XML file?

Yes, via machine.config and appLication LeveL .config fiLe (or web.config in ASP.NET).

AppLication-LeveL XML settings take precedence over machine.config. 

How can you automatically generate interface for the remotable ob3ect in .NET with

Microsoft tools?

Use the Soapsuds tooL.



ASP.C# OOPS2

What do you mean by authentication and authorization?

Authentication is the process of vaLidating a user on the credentiaLs (username and password) and

authorization performs after authentication. After Authentication a user wiLL be verified for

performing the various tasks, It access is Limited it is known asauthorization.

What are different types of directives in .NET?

@Page: Defines page-specific attributes used by the ASP.NET page parser and compiler. Can be

included only in .aspx files <%@ Page AspCompat3”TRUE” language3”C#” %>

@ControL:Defines control-specific attributes used by the ASP.NET page parser and compiler. Can be

included only in .ascx files. <%@ Control Language3”VB” EnableViewState3”false” %>

@Import: Explicitly imports a namespace into a page or user control. The Import           directive

cannot have more than one namespace attribute. To import multiple      namespaces,      use

multiple @Import directives. <% @ Import Namespace3”System.web” %>

@ImpLements: Indicates that the current page or user control implements the specified .NET

framework interface.<%@ Implements Interface3”System.Web.UI.IPostBackEventHandler” %>

@Register: Associates aliases with namespaces and class names for concise notation in   custom

server control syntax.<%@ Register Tagprefix3”Acme” Tagname3”AdRotator”

Src3”AdRotator.ascx” %>

@AssembLy: Links an assembly to the current page during compilation, making all           the

assemblyIs classes and interfaces available for use on the       page. <%@ Assembly

Name3”MyAssembly” %><%@ Assembly Src3”MySource.vb” %>

@OutputCache: Declaratively controls the output caching policies of an ASP.NET page or a

user control contained in a page<%@ OutputCache Duration3”#ofseconds” Location3”Any I Client I

Downstream I Server I None” Shared3”True I False” VaryByControl3”controlname” VaryByCustom3”browser

I customstring” VaryByHeader3”headers” VaryByParam3”parametername” %>

@Reference: Declaratively indicates that another user control or page source file should be

dynamically compiled and linked against the page in which this directive is declared.

How do I debug an ASP.NET appLication that wasn’t written with VisuaL Studio.NET and that doesn’t 

use code-behind?

Start the DbgClr debugger that comes with the .NET Framework SDK, open the file containingthe code you want to debug, and set your breakpoints. Start the ASP.NET application.

Go back to DbgClr, choose Debug Processes from the Tools menu, and select  aspnet_wp.exe from  thelist of processes. (If aspnet_wp.exe doesnIt appear in the list,check the ”Show system

processes” box.) Click the Attach button to attach to aspnet_wp.exe and begin debugging.

Be sure to enable debugging in the ASPX file before debugging it with DbgClr. You can   enable tell

ASP.NET to build debug executables by placing a <%@ Page Debug3”true” %>    statement at the top of an ASPX file or a   statement in a Web.config file.

Can a user browsing my Web site read my Web.config or GLobaL.asax fiLes?

No. The section of Machine.config, which holds the master configuration settings for ASP.NET, contains entries that map ASAX files, CONFIG files, and selected  other file types to an

HTTP handler named HttpForbiddenHandler, which fails attempts to retrieve the associated file. You

can modify it by editing  Machine.config or including an section in a local Web.config file.

What’s the difference between Page.RegisterCLientScriptBLock and Page.RegisterStartupScript?

RegisterClientScriptBlock is for returning blocks of client-side script containing functions.RegisterStartupScript is for returning blocks of client-script not    packaged in functions-in other words, code thatIs to execute when the page is loaded. The latter positions script blocks near the end of the document so elements on the page that the script interacts are loaded before the script runs.<%@ Reference Control3”MyControl.ascx” %>

What event handlers can I include in Global.asax? 

AppLication_Start,AppLication_End,

AppLication_AcquireRequestState, AppLication_AuthenticateRequest, AppLication_AuthorizeRequest,

AppLication_BeginRequest, AppLication_Disposed,  AppLication_EndRequest, AppLication_Error,

AppLication_PostRequestHandLerExecute, AppLication_PreRequestHandLerExecute,

AppLication_PreSendRequestContent, AppLication_PreSendRequestHeaders,

AppLication_ReLeaseRequestState, AppLication_ResoLveRequestCache,

AppLication_UpdateRequestCache, Session_Start,Session_End

You can optionaLLy incLude ”On” in any of method names. For exampLe, you can name a BeginRequest

event handLer.AppLication_BeginRequest or AppLication_OnBeginRequest.You can aLso incLude event

handLers in GLobaL.asax for events fired by custom HTTP moduLes.Note that not aLL of the event

handLers make sense for Web Services (theyIre designed for ASP.NET appLications in generaL, whereas

.NET XML Web Services are speciaLized instances of an ASP.NET app). For exampLe, the

AppLication_AuthenticateRequest and AppLication_AuthorizeRequest events are designed to be used

with ASP.NET Forms authentication.

Remoting

What distributed process frameworks outside .NET do you know?

Distributed Computing Environment1Remote Procedure CaLLs (DEC1RPC), Microsoft Distributed Component Object ModeL  (DCOM), Common Object Request Broker Architecture (CORBA), and Java Remote Method Invocation (RMI).




ASP.NET AND C#OOPS1

What’s the difference between const and readonly?

You can initiaLize readonLy variabLes to some runtime vaLues. Let‘s say your program uses current

date and time as one of the vaLues that won‘t change. This way you decLare pubLic readonLy string

DateT 3 new DateTime().ToString().

What does \a character do?

On most systems, produces a rather annoying beep. 

Can you create enumerated data types in C#?

Yes. 

What’s different about switch statements in C#?

No faLL-throughs aLLowed. 

What happens when you encounter a continue statement inside the for loop?

The code for the rest of the Loop is ignored, the controL is transferred back to the beginning of

the Loop. 

What’s the advantage of using  System.Text.StringBuilder over System.String? StringBuiLder is more

efficient in the cases, where a Lot of manipuLation is done to the text. Strings are immutabLe, so

each time it‘s being operated on, a new instance is created. 

Can you store multiple data types in System.Array?

No. 

What’s the difference between the System.Array.CopyTo() and System.Array.Clone()?

The first one performs a deep copy of the array, the second one is shaLLow. 

How can you sort the elements of the array in descending order?

By caLLing Sort() and then Reverse() methods. 

What’s the .NET datatype that allows the retrieval of data by a unique key?

HashTabLe. 

What’s class SortedList underneath?

A sorted HashTabLe. 

Will finally block get executed if the exception had not occurred?

Yes. 

What’s the C# equivalent of C++ catch (A), which was a catch-all statement for any possible

exception?

A catch bLock that catches the exception of type System.Exception. You can aLso omit the parameter

data type in this case and just write catch WX. 

Can multiple catch blocks be executed?

No, once the proper catch code fires off, the controL is transferred to the finaLLy bLock (if there

are any), and then whatever foLLows the finaLLy bLock. 

Why is it a bad idea to throw your own  exceptions?

WeLL, if at that point you know that an error has occurred, then why not write the proper code to

handLe that error instead of passing a new Exception object to the catch bLock? Throwing your own

exceptions signifies some design fLaws in the project. 

How’s the DLL Hell problem solved in .NET?

AssembLy versioning aLLows the appLication to specify not onLy the Library it needs to run (which

was avaiLabLe under Win32),  but aLso the version of the assembLy. 

What are the ways to deploy an assembly?

An MSI instaLLer, a CAB archive, and XCOPY command. 

What’s a sateLLite assembLyi

When you write a multilingual or multi-cultural application in .NET, and want to distribute the

core application separately from the localized modules, the localized assemblies that modify the

core application are called satellite assemblies. 

What namespaces are necessary to create a LocaLized appLicationi

System.Globalization, System.Resources. 

What’s the difference between II comments, I* *I comments and III commentsi

Single-line, multi-line and XML documentation comments. 

How do you generate documentation from the C# fiLe commented properLy with a command-Line compiLeri

Compile it with a /doc switch. 

What’s the difference between the Debug cLass and Trace cLassi

Documentation looks the same. Use Debug class for debug builds, use Trace class for both debug and

release builds. 

Why are there five tracing LeveLs in System.Diagnostics.TraceSwitcheri

The tracing dumps  can be quite verbose and for some applications that are constantly running you

run the risk of overloading the machine and the hard drive there. Five levels range from None to

Verbose, allowing to fine-tune the tracing activities. 

Where is the output of TextWriterTraceListener redirectedi

To the Console or a text file depending on the parameter passed to the constructor. 

How do you debug an ASP.NET Web appLicationi

Attach the aspnet_wp.exe process to the DbgClr debugger. 

What are three test cases you shouLd go through in unit testingi

Positive test cases (correct data, correct output), negative test cases (broken or missing data,

proper handling), exception  test

cases (exceptions are thrown and caught properly). 

Can you change the vaLue of a variabLe whiLe debugging a C# appLicationi

Yes, if you are debugging via Visual Studio.NET, just go to Immediate window. 

ExpLain Inheritance, EncapsuLation, PoLymorphismi

CLass: A class is a template or blueprint that defines an object’s attributes and operations and

that is created at design time.

Ob3ect: An object is a running  instance of a class that consumes memory and has a finite lifespan.

Inheritance: Inheritance is the concept of reusing common  attributes and operations from a

base class in a derived class.

EncapsuLation: Encapsulation is the process of hiding the details from the client. PoLymorphism:

The meaning of the word polymorphism is something like one name, many forms. Polymorphism is the

ability to call the same method on multiple objects that have been instantiated from different

subclasses and generate differing behaviour.

Abstraction: Abstraction is the practice of focusing  only on the essential aspects of an object.

It allows you to selectively ignore aspects that you deem unimprtant to the functionality provided

by the object.  A good abstraction only provides as many operations and attributes aas are required

to get the job done.

Interface: It‘s an abstract class with public abstract methods all of which must be implemented inthe inherited classes.

Abstract cLass: A class that cannot be instantiated.  An abstract class is a class that must be

inherited and have the methods overridden. An abstract class is essentially a blueprint for a class

without any implementation. 

When do you absoLuteLy have to decLare a cLass as abstracti

1.        When at least one of the methods in the class is abstract.

2.        When the class itself is inherited from an abstract class, but not all base abstract

methods have been overridden. 

Why can’t you specify the accessibiLity modifier for methods inside the interfacei

They all must be public.  Therefore, to prevent you from getting the false impression that you have

any freedom of choice,

you are not allowed to specify any accessibility, it‘s public by default. 

How is method overriding different from method overLoadingi

When overriding a method, you change the behavior of the method for the derived class. Overloading

a method simply  involves having another method with the same name within the class. 

Can you decLare an override method to be static if the originaL method is non-statici No. The

signature of the virtual method must remain the same, only the keyword virtual is changed to

keyword override. 

Can you override private virtuaL methodsi

No.  Private methods are not accessible outside the class. 

What’s the impLicit name of the parameter that gets passed into the cLass’ set methodi

Value, and it‘s datatype depends on whatever variable we‘re changing. 

How do you inherit from a cLass in C#i

Place a colon and then the name of the base class. Notice that it‘s double colon in C++.

 Does C# support muLtipLe inheritancei

No, use interfaces instead. 

When you inherit a protected cLass-LeveL variabLe, who is it avaiLabLe toi

Classes in the same namespace. 

What’s the top .NET cLass that everything is derived fromi

System.Object. 

What does the keyword virtuaL mean in the method definitioni

The method can be over-ridden. 

Can you decLare the override method static whiLe the originaL method is non-statici

No, you can‘t, the signature of the virtual method must remain the same, only the keyword virtual

is changed to keyword  override.Can you override private virtuaL methodsi

No, moreover, you cannot access private methods in inherited classes, have to be protected in the

base class to allow any sort of access.

Can you prevent your cLass from being inherited and becoming a base cLass for some other cLassesi

Yes, that‘s what keyword sealed in the class definition is for. The developer trying to derive from

your class will get a  message: cannot inherit from Sealed class WhateverBaseClassName. It‘s the

same concept as final class in Java. 

Can you aLLow cLass to be inherited, but prevent the method from being over-riddeni

Yes, just leave the class public and make the method sealed. 

Why can’t you specify the accessibiLity modifier for methods inside the interfacei

They all must be public. Therefore, to prevent you from getting the false impression that you have

any freedom of choice, you are not allowed to specify any accessibility, it‘s public by default. 

Types of PoLymorphismi

1) Compiletime Polymorphism, Early Binding (Method overloading)

2) Runtime Polymorphism, Late Binding(Method overriding through inheritance, Method overriding

through the C# interface)

With runtime polymorphism based on method overriding, the decision as to which version of a method

will be executed is based on the actual type of object whose reference is stored in the reference

variable, and not on the type of the reference variable on which the method is invoked. 

Can you inherit muLtipLe interfacesi

Yes, why not. 

And if they have confLicting method namesi

It‘s up to you to implement the method inside your own class, so implementation is left entirely up

to you. This might cause a problem on a higher-level scale if similarly named methods from

different interfaces expect different data, but as far as compiler cares you‘re

okay.

You can implement method like Interface1.GetName(), Interface2.GetName() with full qualified method

name. 

What’s the difference between an interface and abstract cLassi

In the interface all methods must be abstract, in the abstract class some methods can be concrete.

In the interface no accessibility modifiers are allowed, which is ok in abstract classes. 

-Interfaces are closely related to abstract classes that have all members abstract.

- For an abstract class, at least one method of the class must be an abstract method that means it

may have concrete methods.

- For an interface, all the methods must be abstract

- Class that implements an interface much provide concrete implementation of all the methods

definition in an interface or else must be declare an abstract class.

- In C#, multiple inheritance is possible only through implementation of multiple interfaces.

Abstract class can only be derived once.

- An interface defines a contract and can only contains four entities viz methods, properties,

events and indexes. An interface thus cannot contain constants, fields, operators, constructors,

destructors, static constructors, or types.

- Also an interface cannot contain static members of any kind. The modifiers abstract, public,

protected, internal, private, virtual, override is disallowed, as they make no sense in this

context.

- Class members that implement the interface members must be publicly accessible.

How can you overLoad a methodi

Different parameter data types, different number of parameters, different order of parameters. 

If a base cLass has a bunch of overLoaded constructors, and an inherited cLass has another bunch of

overLoaded constructors, can you enforce a caLL from an inherited constructor to an arbitrary base

constructori

Yes, just place a colon, and then keyword base (parameter list to invoke the appropriate

constructor) in the overloaded constructor definition inside the inherited class. 

What’s the difference between System.String and System.StringBuiLder cLassesi System.String is

immutable, System.StringBuilder was designed with the purpose of having a mutable string where a

variety of operations can be performed. 

Does C# support muLtipLe-inheritancei

No, use interfaces instead. 

When you inherit a protected cLass-LeveL variabLe, who is it avaiLabLe toi

Classes in the same namespace. 

Are private cLass-LeveL variabLes inheritedi

Yes, but they are not accessible.  Although they are not visible or accessible via the class

interface, they are inherited. 

Describe the accessibiLity modifier “protected internaL“.

It is available to derived classes and classes within the same Assembly (and naturally from the

base class it‘s declared in). 

What’s the top .NET cLass that everything is derived fromi

System.Object. 

What’s the advantage of using  System.Text.StringBuiLder over System.Stringi

StringBuilder is more efficient in cases where there is a large amount of string manipulation.

Strings are immutable, so each time it‘s being operated on, a new instance is created. 

Can you store muLtipLe data types in System.Arrayi

No. 

What’s a deLegatei

A delegate object encapsulates a reference to a method. 

What’s a muLticast deLegatei

It‘s a delegate that points to and eventually fires off several methods  

Windows Forms

Can you write a cLass without specifying namespacei Which namespace does it beLong to by defauLtii

Yes, you can, then the class belongs to global namespace which has no name. For commercial

products, naturally, you  wouldn‘t want global namespace.

 

You are designing a GUI appLication with a windows  and severaL widgets on it. The user then

resizes the app window  and sees a Lot of grey space, whiLe the widgets stay in pLace. What’s the

probLemi

One shouLd use anchoring for correct resizing. Otherwise the defauLt property of a widget on a form

is top-Left, so it stays at the same Location when resized. 

How can you save the desired properties of Windows  Forms appLicationi

.config fiLes in .NET are supported through the API to aLLow storing and retrieving information.

They are nothing more than simpLe XML fiLes, sort of Like what .ini fiLes were before for Win32apps. 

So how do you retrieve the customized properties of a .NET appLication from XML .config fiLei

InitiaLize an instance of AppSettingsReader cLass. CaLL the GetVaLue method of AppSettingsReader

cLass, passing in the name of the property and the type expected. Assign the resuLt to the

appropriate variabLe. 

Can you automate this processi

In VisuaL Studio yes, use Dynamic Properties for automatic .config creation, storage and retrievaL. 

My progress bar freezes up and diaLog window  shows bLank, when an intensive background process

takes over.

Yes, you shouLdIve muLti-threaded your GUI, with taskbar and main form being one thread, and the

background process being the other.

 

ASP.NET8

Value Type:

Value types are allocated on the stack just like primitive types in VBScript, VB6 and C/C++. Value

types are not instantiated using new go out of scope when the function they are defined within

returns.

Value types in the CLR are defined as types that derive from system.valueType. 

A data type that fully describes a value by specifying the sequence of bits that constitutes the

value‘s representation. Type information for a value type instance is not stored with the instance

at run time, but it is available in metadata. Value type instances can be treated as objects using

boxing. 

What is Boxing and unboxing   ?

Boxing:

The conversion of a value type instance to an object, which implies that the instance will carry

full type information at run time and will be allocated in the heap. The Microsoft intermediate

language (MSIL) instruction set‘s box instruction converts a value type to an object by making a

copy of the value type and embedding it in a newly allocated object. 

Un-Boxing:

The conversion of an object instance to a value type 

What is JIT and how is works ?

An acronym for ”just-in-time,” a phrase that describes an action that is taken only when it becomes

necessary, such as just-in-time compilation or just-in-time object activation 

What is portabLe executabLe (PE) ?

The file format used for executable programs and for files to be linked together to form executable

programs 

What is strong name?

A name that consists of an assembly‘s identityHits simple text name, version number, and culture

information (if provided)Hstrengthened by a public key and a digital signature generated over the

assembly. Because the assembly manifest

contains file hashes for all the files that constitute the assembly implementation, it is

sufficient to generate the digital signature over just the one file in the assembly that contains

the assembly manifest. Assemblies with the same strong name are expected to be identical 

What is gLobaL assembLy cache?

A machine-wide code cache that stores assemblies specifically installed to be shared by many

applications on the computer. Applications deployed in the global assembly cache must have a strong

name. 

What is difference between constants, readonLy and, static ?

Constants: The value can’t be changed

Read-only: The value will be initialized only once from the constructor of the class. Static: Value

can be initialized once. 

What is difference between shared and pubLic?

An assembly that can be referenced by more than one application. An assembly must be explicitly

built to be shared by giving it a cryptographically strong name. 

What is namespace used for Loading assembLies at run time and name the methods?

System.Reflection 

What are the types of authentication in .net?

We have three types of  authentication:

1. Form authentication

2.  Windows authentication

3.  Passport

This has to be declared in web.config file. 

What is the difference between a Struct and a CLass in C# ?

The struct type is suitable for representing lightweight objects such as Point, Rectangle, and

Color. Although it is possible to represent a point as a class, a struct is more efficient in some

scenarios. For example, if you declare an array of 1000 Point objects,

you will allocate additional memory for referencing each object. In this case, the struct is less

expensive.

When you create a struct object using the new operator, it gets created and the appropriate

constructor is called. Unlike classes, structs can be instantiated without using the new operator.

If you do not use new, the fields will remain unassigned and the object cannot be used until all of

the fields are initialized. It is an error to declare a default (parameterless) constructor for a

struct. A default constructor is always provided to initialize the struct members to their default

values.

It is an error to initialize an instance field in a struct.

There is no inheritance for structs as there is for classes. A struct cannot inherit from another

struct or class, and it cannot be the base of a class. Structs, however, inherit from the base

class Object. A struct can implement interfaces, and it does that exactly as classes do.

A struct is a value type, while a class is a reference type.

How big is the datatype int in .NET?

32 bits. 

How big is the char?

16 bits (Unicode). 

How do you initiate a string without escaping each backsLash?

Put an @ sign in front of the double-quoted string.

What’s the access level of the visibility type internal?

Current appLication. 

Explain encapsulation ?

The impLementation is hidden, the interface is exposed. 

What data type should you use if you want an 8-bit value that’s signed?

sbyte.

 Speaking of Boolean data types, what’s different between C# and C/C++?

There‘s no conversion between 0 and faLse, as weLL as any other number and true, Like in

C/C++. 

Where are the value-type variables allocated in the computer RAM?

Stack. 

Where do the reference-type variables go in the RAM?

The references  go on the stack, whiLe the objects themseLves go on the heap. 

What is the difference between the value-type variables and reference-type variables in terms of

garbage collection?

The vaLue-type variabLes are not garbage-coLLected, they just faLL off the stack when they faLL

out of scope, the reference-type objects

are picked up by GC when their references go nuLL. 

How do you convert a string into an integer in .NET?

Int32.Parse(string) 

How do you box a primitive data type variable?

Assign it to the object, pass an object. 

Why do you need to box a primitive variable?

To pass it by reference. 

What’s the difference between Java and .NET garbage collectors?

Sun Left the impLementation of a specific garbage coLLector up to the JRE deveLoper, so their

performance varies wideLy, depending on whose JRE you‘re using. Microsoft standardized on their

garbage coLLection. 

How do you enforce garbage collection in .NET?

System.GC.CoLLect(); 

Can you declare a C++ type destructor in C# like >MyClass()?

Yes, but what‘s the point, since it wiLL caLL FinaLize(), and FinaLize() has no guarantees when the

memory wiLL be cLeaned up,  pLus, it introduces additionaL Load on the garbage coLLector. 

What’s different about namespace declaration when comparing that to package declaration in Java?

No semicoLon.

ASP.NET7

pre- and/or post-processed. 

How does CAS work?

The CAS security policy revolves around two key concepts - code groups and permissions. Each

.NET assembly is a member of a particular code group, and each code group is granted the

permissions specified in a named permission set.

For example, using the default security policy, a control downloaded from a web site belongs to the

‘Zone - Internet‘ code group, which adheres to the permissions defined by the ‘Internet‘ named

permission set. (Naturally the ‘Internet‘ named permission set represents a very restrictive range

of permissions.) 

Who defines the CAS code groups?

Microsoft defines some default ones, but you can modify these and even create your own. To see the

code groups defined on your system, run ‘caspol -lg‘ from the command-line. On my system it looks

like this:

Level 3 Machine

Code Groups:

1.  All code: Nothing

1.1.  Zone - MyComputer: FullTrust

1.1.1.  Honor SkipVerification requests: SkipVerification

1.2.  Zone - Intranet: LocalIntranet

1.3.  Zone - Internet: Internet

1.4.  Zone - Untrusted: Nothing

1.5.  Zone - Trusted: Internet

1.6.  StrongName - 0024000004800000940000000602000000240000525341310004000003

000000CFCB3291AA715FE99D40D49040336F9056D7886FED46775BC7BB5430BA4444FEF8348EBD06

F962F39776AE4DC3B7B04A7FE6F49F25F740423EBF2C0B89698D8D08AC48D69CED0FC8F83B465E0

8

07AC11EC1DCC7D054E807A43336DDE408A5393A48556123272CEEEE72F1660B71927D38561AABF5

C AC1DF1734633C602F8F2D5:

Note the hierarchy of code groups - the top of the hierarchy is the most general (‘All code‘),

which is then sub-divided into several

groups, each of which in turn can be sub-divided. Also note that (somewhat counter-intuitively)

a sub-group  can be associated with a more permissive permission set than its parent. 

How do I define my own  code group?

Use caspol. For example, suppose you trust code from  www.mydomain.com and you want it have full

access to your system, but you want to keep the default restrictions for all other internet sites.

To achieve this, you would add a new code group as a sub-group  of the

‘Zone - Internet‘ group, like this:

caspol -ag 1.3 -site www.mydomain.com FullTrust

Now if you run caspol -lg you will see that the new group has been added as group 1.3.1: 

1.3.  Zone - Internet: Internet

1.3.1.  Site -  www.mydomain.com: FullTrust 

Note that the numeric label (1.3.1) is just a caspol invention to make the code groups easy to

manipulate from the command-line. The underlying runtime never sees it. 

How do I change the permission set for a code group?

Use caspol. If you are the machine administrator, you can operate at the ‘machine‘ level -

which means not only that the changes you make become the default for the machine, but also

that users cannot change the permissions to be more permissive. If you are a normal (non- admin)

user you can still modify the permissions, but only to make them more restrictive. For example, to

allow intranet code to do what it likes you might do this:

caspol -cg 1.2 FullTrust

Note that because this is more permissive than the default policy (on a standard system), you

should only do this at the machine level - doing it at the user level will have no effect. 

I can‘t be bothered with aLL this CAS stuff. Can I turn it off?

Yes, as long as you are an administrator. Just run: caspol -s off 

Can I Look at the IL for an assembLy?

Yes. MS supply a tool called Ildasm which can be used to view the metadata and IL for an assembly. 

Can source code be reverse-engineered from IL?

Yes, it is often relatively straightforward to regenerate high-level source (e.g. C#) from IL. 

How can I stop my code being reverse-engineered from IL?

There is currently no simple way to stop code being reverse-engineered from IL. In future it is

likely that IL obfuscation tools will become available, either from MS or from third parties. These

tools work by ‘optimising‘ the IL in such a way that reverse-engineering becomes much more

difficult.

Of course if you are writing web services then reverse-engineering is not a problem as clients do

not have access to your IL. 

Is there buiLt-in support for tracing/Logging?

Yes, in the System.Diagnostics namespace. There are two main classes that deal with tracing - Debug

and Trace. They both work in a similar way - the difference is that tracing from the Debug class

only works in builds that have the DEBUG symbol defined, whereas tracing from the Trace class only

works in builds that have the TRACE symbol defined. Typically this means that you should use

System.Diagnostics.Trace.WriteLine for tracing that you want to work in debug and release builds,

and System.Diagnostics.Debug.WriteLine for tracing that you want to work only in debug builds. 

Can I redirect tracing to a fiLe?

Yes. The Debug and Trace classes both have a Listeners property, which is a collection of sinks

that receive the tracing that you send via Debug.WriteLine and Trace.WriteLine respectively. By

default the Listeners collection contains a single sink, which is an

instance of the DefaultTraceListener class. This sends output to the Win32 OutputDebugString()

function and also the System.Diagnostics.Debugger.Log() method. This is useful when debugging, but

if you‘re trying to trace a problem at a customer site, redirecting the output to

a file is more appropriate. Fortunately, the TextWriterTraceListener class is provided for this

purpose. 

What are the contents of assembLy?

In general, a static assembly can consist of four elements: The assembly manifest, which contains

assembly metadata. Type metadata.

Microsoft intermediate language (MSIL) code that implements the types. A set of resources. 

What is GC (Garbage CoLLection) and how it works

One of the good features of the CLR is Garbage Collection, which runs in the background collecting

unused object references, freeing us from having to ensure we always destroy them.

In reality the time difference between you releasing the object instance and it being garbage

collected is likely to be very small, since the GC is always running.

[The process of transitively tracing through all pointers to actively used objects in order to

locate all objects that can be referenced, and then arranging to reuse any heap memory that was not

found  during this trace. The common  language runtime garbage collector also compacts the memory

that is in use to reduce the working space needed for the heap.] 

Heap:

A portion of memory reserved for a program to use for the temporary storage of data structures

whose existence or size cannot be determined until the program is running. 

Differnce between Managed code and unmanaged code ?

Managed Code:

Code that runs under a ”contract of cooperation” with the common  language runtime. Managed code

must supply the metadata necessary for the runtime to provide services such as memory management,

cross-language integration, code access security, and

automatic lifetime control of objects. All code based on Microsoft intermediate language (MSIL)

executes as managed code. 

Un-Managed Code:

Code that is created without regard for the conventions and requirements of the common language

runtime. Unmanaged code executes in the common  language runtime environment with minimal services

(for example, no garbage collection, limited debugging, and so on). 

What is MSIL, IL, CTS and, CLR ? 

MSIL: (Microsoft intermediate language)

When compiling to managed code, the compiler translates your source code into Microsoft

intermediate language (MSIL), which is a CPU-independent set of instructions that can be

efficiently converted to native code. MSIL includes instructions for loading, storing,

initializing, and calling methods on objects, as well as instructions for arithmetic and logical

operations, control flow, direct memory access, exception handling, and other operations. Before

code can be executed, MSIL must be converted to CPU-specific code, usually by a just-in-time (JIT)

compiler. Because the common  language runtime supplies one or more JIT compilers for each computer

architecture it supports, the same set of MSIL can be JIT-compiled and executed on any supported

architecture.

When a compiler produces MSIL, it also produces metadata. Metadata describes the types in

your code, including the definition of

each type, the signatures of each type‘s members, the members that your code references, and other

data that the runtime uses at

execution time. The MSIL and metadata are contained in a portable executable (PE) file that is

based on and extends the published

Microsoft PE and Common Object File Format (COFF) used historically for executable content. This

file format, which accommodates 

MSIL or native code as well as metadata, enables the operating system to recognize common language

runtime images. The

presence of metadata in the file along with the MSIL enables your code to describe itself,

which means that there is no need for type libraries or Interface Definition Language (IDL). The

runtime locates and extracts the metadata from the file as needed during

execution. 

IL: (Intermediate Language)

A language used as the output of a number of compilers and as the input to a just-in-time (JIT)

compiler. The common  language

runtime includes a JIT compiler for converting MSIL to native code. 

CTS: (Common Type System)

The specification that determines how the common  language runtime defines, uses, and manages types 

CLR: (Common Language Runtime)

The engine at the core of managed code execution. The runtime supplies managed code with services

such as cross-language

integration, code access security, object lifetime management, and debugging and profiling support. 

What is Reference type and vaLue type ?

Reference Type:

Reference types are allocated on the managed CLR heap, just like object types.

A data type that is stored as a reference to the value‘s location. The value of a reference type is

the location of the sequence of bits

that represent the type‘s data. Reference types can be self-describing types, pointer types, or

interface types

 

ASP.NET6

>>Changes to which portion of version number indicates an incompatible change?
Major or minor. Changes to the major or minor portion of the version number indicate an
incompatible change. Under this convention then, version 2.0.0.0 would be considered incompatible
with version 1.0.0.0. Examples of an incompatible change would be a change to the types of some
method parameters or the removal of a type or method altogether. Build. The Build number is
typically used to distinguish between daily builds or smaller compatible releases. Revision.
Changes to the revision number are typically reserved for an incremental build needed to fix a
particular bug. You‘ll sometimes hear this referred to as the ”emergency bug fix” number in that
the revision is what is often changed when a fix to a specific bug is shipped to a customer.
>>What is side-by-side execution?
           Can two application one using private assembly and other using 
>>Shared assembly be stated as a side-by-side executables?
Side-by-side execution is the ability to run multiple versions of an application or component on
the same computer. You can have multiple versions of the common language runtime, and multiple
versions of applications and components that use a version of the runtime, on the same computer at
the same time. Since versioning is only applied to shared assemblies, and
not to private assemblies, two application one using private assembly and one using shared assembly
cannot be stated as side-by-side
executables.
>>Why string are called Immutable data Type ?
The memory representation of string is an Array of Characters, So on re-assigning the new array of
Char is formed a the start address is changed . Thus keeping the Old string in Memory for Garbage
Collector to be disposed.

>>What does assert() method do?
In debug compilation, assert takes in a Boolean condition as a parameter, and shows the error
dialog if the condition is false. The program proceeds without any interruption if the condition is
true.

>>What‘s the difference between the Debug class and Trace class?
Documentation looks the same. Use Debug class for debug builds, use Trace class for both debug and
release builds.

>>Why are there five tracing levels in System.Diagnostics.TraceSwitcher?
The tracing dumps can be quite verbose. For applications that are constantly running you run the
risk of overloading the machine and the hard drive. Five levels range from None to Verbose,
allowing you to fine-tune the tracing activities.

>>Where is the output of TextWriterTraceListener redirected?
To the Console or a text file depending on the parameter passed to the constructor.

>>How do assemblies find each other?
By searching directory paths. There are several factors which can affect the path (such as the
AppDomain host, and application configuration files), but for private assemblies the search path is
normally the application‘s directory and its sub-directories. For shared assemblies, the search
path is normally same as the private assembly path plus the shared assembly cache.

>>How does assembly versioning work?
Each assembly has a version number called the compatibility version. Also each reference to an
assembly (from another assembly) includes both the name and version of the referenced assembly.The
version number has four numeric parts (e.g. 5.5.2.33). Assemblies with either of the first two
parts different are normally viewed as incompatible. If the first two parts are the same, but the
third is different, the assemblies are deemed as ‘maybe compatible‘. If only the fourth part is
different, the assemblies are deemed compatible. However, this is just the default guideline - it
is the version policy that decides to what extent these rules are enforced. The version policy can
be specified via the application configuration file.

>>What is an Application Domain?
An AppDomain can be thought of as a lightweight process. Multiple AppDomains can exist inside a
Win32 process. The primary purpose of the AppDomain is to isolate an application from other
applications. Win32 processes provide isolation by having distinct memory address spaces. This is
effective, but it is expensive and doesn‘t scale well. The .NET runtime enforces AppDomain
isolation by keeping control over the use of memory - all memory in the AppDomain is managed by the
.NET runtime, so the runtime can ensure that AppDomains do not access each other‘s memory.

>>What is garbage collection?
Garbage collection is a system whereby a run-time component takes responsibility for managing the
lifetime of objects and the heap memory that they occupy. This concept is not new to .NET - Java
and many other languages/runtimes have used garbage collection for some time.

>>Why doesn‘t the .NET runtime offer deterministic destruction?
Because of the garbage collection algorithm. The .NET garbage collector works by periodically
running through a list of all the objects that are currently being referenced by an application.
All the objects that it doesn’t find during this search are ready to be destroyed and the memory
reclaimed. The implication of this algorithm is that the runtime doesn’t get notified
immediately when the final reference on an object goes away - it only finds out during the next
sweep of the heap.
Futhermore, this type of algorithm works best by performing the garbage collection sweep as rarely
as possible. Normally heap exhaustion is the trigger for a collection sweep.

>>Is the Lack of deterministic destruction in .NET a probLem?
lt’s certainly an issue that affects component design. lf you have objects that maintain expensive
or scarce resources (e.g. database locks), you need to provide some way for the client to tell the
object to release the resource when it is done. Microsoft recommend that you provide a method
called Dispose() for this purpose. However, this causes problems for distributed objects - in a
distributed system who calls the Dispose() method? Some form of reference-counting or
ownership-management mechanism is needed to handle distributed objects - unfortunately the runtime
offers no help with this.
>>What is seriaLization?
Serialization is the process of converting an object into a stream of bytes. Deserialization is the
opposite process of creating an object from a stream of bytes. Serialization / Deserialization is
mostly used to transport objects (e.g. during remoting), or to persist
objects (e.g. to a file or database).
>>Does the .NET Framework have in-buiLt support for seriaLization?
There are two separate mechanisms provided by the .NET class library - XmlSerializer and
SoapFormatter/BinaryFormatter. Microsoft uses XmlSerializer for Web Services, and uses
SoapFormatter/BinaryFormatter for remoting. Both are available for use in your own code.

>>Can I customise the seriaLization process?
Yes. XmlSerializer supports a range of attributes that can be used to configure serialization for a
particular class. For example, a field or property can be marked with the [Xmllgnore] attribute to
exclude it from serialization. Another example is the [XmlElement]
attribute, which can be used to specify the XML element name to be used for a particular
property or field.
Serialization via SoapFormatter/BinaryFormatter can also be controlled to some extent by
attributes. For example, the [NonSerialized] attribute is the equivalent of XmlSerializer’s
[Xmllgnore] attribute. Ultimate control of the serialization process can be acheived by
implementing the the lSerializable interface on the class whose instances are to be serialized.

>>Why is XmLSeriaLizer so sLow?
There is a once-per-process-per-type overhead with XmlSerializer. So the first time you serialize
or deserialize an object of a given type in an application, there is a significant delay. This
normally doesn’t matter, but it may mean, for example, that XmlSerializer is a poor choice for
loading configuration settings during startup of a GUl application.

>>Why do I get errors when I try to seriaLize a HashtabLe?
XmlSerializer will refuse to serialize instances of any class that implements lDictionary, e.g.
Hashtable. SoapFormatter and BinaryFormatter do not have this restriction.

>>What are attributes?
There are at least two types of .NET attribute. The first type l will refer to as a metadata
attribute - it allows some data to be attached to a class or method. This data becomes part of the
metadata for the class, and (like other class metadata) can be accessed via reflection.
The other type of attribute is a context attribute. Context attributes use a similar syntax to
metadata attributes but they are fundamentally different. Context attributes provide an
interception mechanism whereby instance activation and method calls can be





ASP.NET5

15.What is the CTS?

CTS 3 Common Type System. This is the range of types that the .NET runtime understands, and

therefore that .NET applications can use. However note that not all .NET languages will

support all the types in the CTS. The CTS is a superset of the CLS. 

16.What is the CLS?

CLS 3 Common Language Specification. This is a subset of the CTS which all .NET languages are

expected to support. The idea is that any program which uses CLS-compliant types can interoperate

17.with any .NET program written in any language.

In theory this allows very tight interop between different .NET languages - for example allowing a

C# class to inherit from a VB class. 

18.What is IL?

IL 3 Intermediate Language. Also known as MSIL (Microsoft Intermediate Language) or CIL (Common

Intermediate Language). All .NET source code (of any language) is compiled to IL. The IL is then

converted to machine code at the point where the software is installed, or at run-time by a

Just-In-Time (JIT) compiler. 

19.What does ‘managed‘ mean in the .NET context?

The term ‘managed‘ is the cause of much confusion. It is used in various places within .NET,

meaning slightly different things.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 the runtime.

Such code is called managed code. All C# and Visual Basic.NET code is managed by default. VS7

C++ code is not managed by default, but the compiler can produce managed code by specifying a

command-line switch (/com+).

Managed data: This is data that is allocated and de-allocated by the .NET runtime‘s garbage

collector. C# and VB.NET data is always managed. VS7 C++ data is unmanaged by default, even when

using the /com+ switch, but it can be marked as managed using the    gc keyword.

Managed classes:

This is usually referred to in the context of Managed Extensions (ME) for C++. When using ME C++, a

class can be marked with the    gc keyword. As the name suggests, this means that the memory for

instances of the class is managed by the garbage collector, but it also means more than that. The

class becomes a fully paid-up member of the

.NET community with the benefits and restrictions that brings. An example of a benefit is proper

interop with classes written in other languages - for example, a managed C++ class can inherit from

a VB class. An example of a restriction is that a managed class can only inherit from one base

class. 

20.What is reflection?

All .NET compilers produce metadata about the types defined in the modules they produce. This

metadata is packaged along with the module (modules in turn are packaged together in assemblies),

and can be accessed by a mechanism called reflection. The System.Reflection namespace contains

classes that can be used to interrogate the types for a module/assembly. Using reflection to access

.NET metadata is very similar to using ITypeLib/ITypeInfo to access type library data in COM, and

it is used for similar purposes - e.g. determining data type sizes for marshaling data across

context/process/machine boundaries.

Reflection can also be used to dynamically invoke methods (see System.Type.InvokeMember ) , or even

create types dynamically at run-time (see System.Reflection.Emit.TypeBuilder).

 

21.What is the difference between Finalize and Dispose (Garbage collection) ?

Class instances often encapsulate control over resources that are not managed by the runtime, such

as window handles (HWND), database connections, and so on. Therefore, you should provide both an

explicit and an implicit way to free those resources. Provide implicit control by implementing the

protected Finalize Method on an object (destructor syntax in C# and the Managed Extensions for

C++). The garbage collector calls this method at some point after there are no longer any valid

references to the object. In some cases, you might want to provide programmers using an object with

the ability to explicitly release these external resources before the garbage collector frees the

object. If an external resource is scarce or expensive, better performance can be achieved if the

programmer explicitly releases resources when they are no longer being used. To provide explicit

control, implement the Dispose method provided by the IDisposable Interface. The consumer of the

object should call this method when it is

done using the object.

Dispose can be called even if other references to the object are alive. Note that even when you

provide explicit control by way of Dispose, you should provide implicit cleanup using the

Finalize method. Finalize provides a backup to prevent resources from

Permanently leaking if the programmer fails to call Dispose. 

22.What is Partial Assembly References?

Full Assembly reference: A full assembly reference includes the assembly‘s text name, version,

culture, and public key token (if the assembly has a strong name). A full assembly reference is

required if you reference any assembly that is part of the common

Language runtime or any assembly located in the global assembly cache. 

Partial Assembly reference: We can dynamically reference an assembly by providing  only partial

information, such as specifying only the assembly name. When you specify a partial assembly

reference, the runtime looks for the assembly only in the application

Directory.

We can make partial references to an assembly in your code one of the following ways:

-> Use a method such as System.Reflection.Assembly.Load and specify only a partial reference. The

runtime checks for the assembly in the application directory.

-> Use the System.Reflection.Assembly.LoadWithPartialName method and specify only a partial

reference. The runtime checks for the assembly in the application directory and in the global

assembly cache

ASP.NET4

 10.     Server.Transfer V/s Response.Redirect

A:  Response.Redirect  simply  sends a  message down  to  the  browser,  telling  it  to  move  to

another        page.       So,        you       can      run,       

Response.Redirect(”WebForm2.aspx”)       or Response.Redirect(”http:99www.karlmoore.com9”) 

Server.Transfer  is similar  in that it  sends the  user to  another  page with  a statement  such 

as Server.Transfer(”WebForm2.aspx”).    But    transferring    to    another    page   conserves  

server resources. Instead of telling the browser to  redirect, it simply changes the ”focus” on the

Web server and transfers the request. This means you don’t get quite as many HTTP requests coming

through,  which  therefore  eases the  pressure on your  Web  server  and makes your  applications

run  faster.  But  remember,  you can’t  use Server.Transfer  to  send the  user to  an external 

site. Secondly,  Server.Transfer  maintains  the  original  URL  in  the  browser.  This  can 

really  help streamline data entry techniques, although it may make for confusion  when debugging.

 

That’s not all: The Server.Transfer method also has a second parameterH”preserveForm”. If you set  

this   to   True,  using  a  statement   such   as  Server.Transfer(”WebForm2.aspx”,  True),  the

existing   query  string   and  any  form   variables   will   still  be  available  to   the  page

 you  are transferring to. For example, if your WebForm1.aspx has a TextBox control called TextBox1

and you transferred to WebForm2.aspx with the preserveForm parameter set to True, you’d be able to 

   retrieve     the     value     of     the     original     page    TextBox     control     by   

 referencing Request.Form(”TextBox1”). 

Q: Introduction to .Net configuration (machine.config and other config files) Q: Session mangment

(Web.config’s Session State and cookie less session etc.) Q: Authentication and Authorization

(Forms, Windows a Passport Authentication and in depth Form Auth.) Q: Global.aspx

Q: Caching (cache attribute, fragment caching, cache object) Q: Value Type and Ref. Type (Boxing

and Un-boxing)

Q: Structure and classes, Difference? Q: Interface and classes, Difference?

Q: Class properties, methods and data members

Q: What the internal data member?

Q: What is difference between const and static readonly? Q: Overload and override

methods9properties?

Q: Abstract, virtual, override, new, sealed etc. keywords for method9property9class

Q: What is inheritance, abstraction etc. OOPs and real life example? Q: What is .Net framework,

CLR, class library, MSIL etc.

Q: What is assembly and how to create global assembly? Q: What are the objects of ADO.NET?

Q: What is difference between Reader and Dataset? Q: How to add relation in dataset’s 2 tables?

OOPs

 

12.What is object? What is class?

What are members? data, properties, methods, events

Access modifiers

Static members, static constructor

Overloading (parameters, return type etc. out) Constructors and distructor

Encapsulation (Data hinding)

through method or properties

Inheritance

Simple and multilevel inheritance

Interface and multiple inheritance

Polymorphism

virtual and override

method hiding with new key word abstract and sealed methods/classes 

13.When was .NET announced?

Bill Gates delivered a keynote at Forum 2000, held June 22, 2000, outlining the .NET ‘vision‘. The

July 2000 PDC had a number of sessions on .NET technology, and delegates were given CDs containing

a pre-release version of the .NET framework/SDK and Visual Studio.NET. 

14.When was the first version of .NET reLeased?

The final version of the 1.0 SDK and runtime was made publicly available around 6pm PST on

15-Jan-2002. At the same time, the final version of Visual Studio.NET was made available to

MSDN subscribers. 

15.What pLatforms do the .NET Framework run on?

The runtime supports Windows XP, Windows 2000, NT4 SP6a and Windows ME/98. Windows 95 is not

supported. Some parts of the framework do not work on all platforms - for example, ASP.NET is only

supported on Windows XP and Windows 2000. Windows 98/ME cannot be used for development.

IIS is not supported on Windows XP Home Edition, and so cannot be used to host ASP.NET.

However, the ASP.NET Web Matrix web server does run on XP Home.

The Mono project is attempting to implement the .NET framework on Linux. 

16.What is the CLR?

CLR 3 Common Language Runtime. The CLR is a set of standard resources that (in theory) any

.NET program can take advantage of, regardless of programming language. Robert Schmidt

(Microsoft) lists the following CLR resources in his MSDN PDC# article:

Object-oriented programming model (inheritance, polymorphism, exception handling, garbage

collection)

 Security model 

 Type system 

  ll  NET base classes 

 Many  NET framework classes 

 Development, debugging, and profiling tools 

 Execution and code management 

 IL-to-native translators and optimizers

What this means is that in the .NET world, different programming languages will be more equal

in capability than they have ever been before, although clearly not all languages will support all

CLR services.