Contents
Introduction.............................................................Software Company hierarchy............................................................................Resume Preparation Guidelines........................................................................Negotiation.............................................................................................remember............................................................................................Sheet........................................................................................1. Basic .NET Framework.......................................What is a IL?.....................................................................................................Twist :- What is MSIL or CIL , What is JIT?....................................................CLR?.................................................................................................CTS?..................................................................................................Specification)?..........................................Code?.................................................................................
Introduction..................................................................................18
uction...............................................e hierarchy..................................................... Guidelines..................................................egotiation....................................................................... remember.....................................................................w Sheet..................................................................sic Framework........................IL?...............................................................................JIT?.............................CLR?...........................................................................CTS?............................................................................Specification)?................... Code?...........................................................
hierarchy.............................................................................................................22
Guidelines.........................................................................................................23
on Guidelines.....................................n..........................................................er........................................................heet.....................................................T Framework............................................................................SIL JIT?........................................................................................................................................mmon Specification)?......
Salary Negotiation.............................................................................................................................26
Points to remember............................................................................................................................28
Interview rating Sheet.........................................................................................................................30
Framework............................................................33
IL?.....................................................................................................................................33
..................................................................?..............................................................?...............................................................(aged Code?..............................................mbly?.....................................................ifferent Assembly?.....................
JIT?.....................................................................................33
What is a CLR?.................................................................................................................................33
What is a CTS?..................................................................................................................................33
What is a CLS(Common Language Specification)?...........................................................................34
What is a Managed Code?..................................................................................................................34
What is a Assembly?.........................................................................................................................34
What are the different types of Assembly?.........................................................................................35
What is NameSpace?.........................................................................................................................35
What is Difference between NameSpace and Assembly?..................................................................35
If you want to view a Assembly how do you go about it ?................................................................35
Twist : What is ILDASM ?..................................................................................................................35
What is Manifest?..............................................................................................................................37
Where is version information stored of an assembly ?.......................................................................38
Is versioning applicable to private assemblies?.................................................................................38
What is GAC ?...................................................................................................................................38
Twist :- What are situations when you register .NET assembly in GAC ?.........................................38
What is the concept of strong names ?...............................................................................................38
Twist :- How do we generate strong names ?.....................................................................................38
Twist :- What is use the of SN.EXE ?..................................................................................................38
Twist :- How do we apply strong names to assembly?.......................................................................38
Twist :- How do you sign an assembly?.............................................................................................38
How to add and remove an assembly from GAC?.............................................................................43
What is Delay signing ?......................................................................................................................44
What is garbage collection?................................................................................................................45
Can we force garbage collector to run ?.............................................................................................45
What is reflection?.............................................................................................................................45
What are different types of JIT ?.......................................................................................................46
What are Value types and Reference types ?......................................................................................47
What is concept of Boxing and Unboxing ?.......................................................................................47
What is the difference between VB.NET and C# ?............................................................................48
What is the difference between System exceptions and Application exceptions?.............................49
What is CODE Access security?........................................................................................................50
What is a satellite assembly?..............................................................................................................50
How to prevent my .NET DLL to be decompiled?.............................................................................50
What is the difference between Convert.toString and .toString() method ?......................................50
What is Native Image Generator (Ngen.exe)?...................................................................................51
If we have two version of same assembly in GAC how do we make a choice ?...............................52
What is CodeDom?............................................................................................................................60
t CodeDom?...................................................................................................ET Interoperability................................................. can we use COM Components in .NET?......................................................t : What is RCW ?..............................................................................................e r COM?.........................................................t ?..................................................t ?........ NET?.....................................................n ?..............t ?.........................................................................................................t ?....................................................................
2..NET Interoperability.................................................................63
..Interoperability..............................................ow NET?...................................................wist ?..........................................................................................iow COM?......................................................wist ?...............................................wist ?....ow NET?.................................................hen ?...........hat ?.....................................................................................................hat ?.................................................................an ?...............................................an ?........................................................................ow VB6?...........................................................ow ?.......................................................................Interoperability.....................................................NET?.............................................................?....................................................................................................regisow COM?................................................................?.........................................................?..............NET?...........................................................?.....................?...............................................................................................................?...........................................................................?.........................................................?..................................................................................VB6?.....................................................................?.................................................................................ow ?......................................ow ?.......................................................................hat VB6?.......................................................................hat ?............................................................... Threading......................................................................Interoperability...............................................?...........................................................................................?.....NET?..................................................?......................................................................................................?................................................?........................................................................?............................?.............................................................How NET?.....................................................Twist ?............................................................................................. COM?........................................................?.................................................?....... NET?....................................................?.............?........................................................................................................?...................................................................?.................................................. ?..........................................................................VB6?.............................................................?.......................................................................... ?..............................?...............................................................VB6?...............................................................?......................................................3. Threading.................................................................What is Multi-tasking ?..........................................................................................What is Multi-threading ?.......................................................................................?..................................................................................................
NET?.................................................................................63
NET?............................................................?...................................................................................................nce regiow COM?...............................................................?........................................................?.............NET?..........................................................?....................?..............................................................................................................?..........................................................................?........................................................?.................................................................................VB6?....................................................................?................................................................................?.....................................?......................................................................VB6?......................................................................?.............................................................hat ?.................................................................................................hat ?..............................................................................................hat ?.........................................................................................................id ?...............................................................................an ?.....................................................hich ?.................................................................................an ?.......................................ow ?..hat ?...................................................... ?........................................................................... VB6?.............................................................. ?............................... ?................................................................t VB6?................................................................t ?.......................................................hreading.................................................................t ?...........................................................................................t ?........................................................................................t ?...................................................................................................?......................................................................... ?...............................................ch ?........................................................................... ?................................. NEt ?................................................
?........................................................................................................................63
Once I have developed the COM wrapper do I have to still register the COM in registry?.............64
How can we use .NET components in COM?....................................................................................64
Twist :- What is CCW (COM callable wrapper) ?.............................................................................64
Twist :- How do we ensure that .NET components is compatible with COM ?..................................64
ist COw NET?.......................................en ?at ?...........................................................................................at ?......................................................
How can we make Windows API calls in .NET?...............................................................................67
When we use windows API in .NET is it managed or unmanaged code ?.........................................69
What is COM ?..................................................................................................................................69
What is Reference counting in COM ?...............................................................................................69
Can you describe IUKNOWN interface in short ?.............................................................................69
Can you explain what is DCOM ?......................................................................................................70
How do we create DCOM object in VB6?.........................................................................................71
How to implement DTC in .NET ?.....................................................................................................71
How many types of Transactions are there in COM + .NET ?..........................................................73
es ?.o object pooling in .NET ?...................................s VB6?..................................alent ?..........................ing..............................................-?..............................................................-?..........................................................ad ?.....................................................................ort ?............................................ultiple ?.................ace ?.............................................in ?...hange aredressOf ?...................?..............
How do you do ?...........................................................................................74
What are types of compatibility in VB6?...........................................................................................75
What is equivalent for regsvr32 exe in .NET ?..................................................................................76
at ?......................................................... Threading...................................................................at ?.............................................................................................at ?..........................................................................................at ?.....................................................................................................
Threading..................................................................................77
?......................................................................................................................77
?.......................................................................................?...................................................................................?..............................................................................................?..................................................................... ?..........................................?...................................................................... ?............................ Nt ?............................................ ?......................................t's ?.................................................................. ?.......................................t ?.....................................................
?...................................................................................................................77
What is a Thread ?..............................................................................................................................77
?..............................................................................B6 support multi-threading ?.....................................................e have multiple threads in one App domain ?.......................... ?......................................................ou ?............an providoes ?............................an ?.......................
Did VB6 ?....................................................................................................77
Can we ?..........................................................................77
Which namespace has threading ?......................................................................................................77
Can you explain in brief how can we implement threading ?............................................................77
How can we change priority and what the levels of priority are provided by .NET ?.......................78
What does AddressOf operator do in background ?...........................................................................79
How can you reference current thread of the method ?......................................................................79
What's Thread.Sleep() in threading ?.................................................................................................79
How can we make a thread sleep for infinite period ?.......................................................................79
What is Suspend and Resume in Threading ?....................................................................................79
What the way to stop a long running thread ?....................................................................................80
How do I debug thread ?....................................................................................................................80
What is Thread.Join() in threading ?..................................................................................................81
What are Daemon threads and how can a thread be created as Daemon?.........................................81
When working with shared data in threading how do you implement synchronization ?.................81
Can we use events with threading ?...................................................................................................82
How can we know a state of a thread?...............................................................................................82
What is a monitor object?...................................................................................................................82
What are wait handles ?......................................................................................................................83
Twist :- What is a mutex object ?........................................................................................................83
What is ManualResetEvent and AutoResetEvent ?..........................................................................83
What is ReaderWriter Locks ?............................................................................................................83
How can you avoid deadlock in threading?.......................................................................................84
w threading?..........................................................at process?............................................. Remoting and Webservices.....................................at is an application domain?............................................................................at ?......................................................................................ich ?..............................................at ?..............scribe Remoting?.................................id threading?..............ence process?. Webservices........tion domain?................................oting ?..........................................?..
What is the difference between thread and process?..........................................................................84
hat process?............ Webservices...............hat domain?...........................................hat ?.....................................................hich ?.............hat modscribe Remoting?hat servre ?............................................... implementatio
4. Webservices.......................................................85
What domain?.........................................................................................................85
What is .NET Remoting ?...................................................................................................................85
Which class does the remote object has to inherit ?...........................................................................86
What are two different types of remote object creation mode in .NET ?........Remoting?............................?......?.........?.......................................................................... sh ClWhat LeaseManaWhich ?............................?.....................SAO?.......................?...........?..............................?..........................................................?.................?...............................................................?..................................................................................?...............................................................................................?.............................................................................................WSDL?...............................................................................................?...
?...........................................86
Describe in detail Basic of SAO architecture of Remoting?..............................................................86
What are the situations you will use singleton architecture in remoting ?........................................91
What is fundamental of published or precreated objects in Remoting ?............................................91
hat ?................hat ?....?.................................................................................hat LeaseManagerPhich ?...................................ow ?............................an SAO?..............................wist ?..................ow ?.....................................hat ?.................................................................hat ?........................hat ?......................................................................hat ?.........................................................................................hat ?......................................................................................................hat ?....................................................................................................hat WSDL?......................................................................................................hat ?..........
What are the ways in which client can create object on server in CAO model ?...............................91
s ?.....................................r Nn implemme, RenewonCa protify Coconstructors Cthe ethods Asynchronousnous ?....................
Are CAO stateful in nature ?.............................................................................................................92
In CAO model for client objects to be created by “NEW” keyword what should we do?...............92
Is it a good design practice to distribute the implementation to Remoting Client ?.........................93
What are LeaseTime, SponsorshipTime, RenewonCallTime and LeaseManagerPollTime?.............93
Which config file has all the supported channels/protocol ?..............................................................94
How can you specify remoting parameters using Config files ?........................................................95
Can Non-Default constructors be used with Single Call SAO?.........................................................97
Twist :- What are the limitation of constructors for Single call SAO ?.............................................97
How can we call methods in remoting Asynchronously ?.................................................................98
What is Asynchronous One-Way Calls ?............................................................................................98
What is marshalling and what are different kinds of marshalling ?...................................................98
What is ObjRef object in remoting ?..................................................................................................99
What is a Web Service ?.....................................................................................................................99
What is UDDI ?...............................................................................................................................100
What is DISCO ?..............................................................................................................................100
What is WSDL?...............................................................................................................................100
What the different phase/steps of acquiring a proxy object in Webservice ?...................................100
What is file extension of Webservices ?...........................................................................................101
Which attribute is used in order that the method can be used as WebService ?...............................102
What are the steps to create a webservice and consume it ?............................................................102
Do webservice have state ?...............................................................................................................111
5. Caching Concepts...................................................................113
What is an application object ?........................................................................................................113
What’s the difference between Cache object and application object ?............................................113
How can get access to cache object ?...............................................................................................113
What are dependencies in cache and types of dependencies ?.........................................................113
Can you show a simple code showing file dependency in cache ?..................................................114
What is Cache Callback in Cache ?..................................................................................................114
What is scavenging ?........................................................................................................................115
What are different types of caching using cache object of ASP.NET?.............................................115
How can you cache different version of same page using ASP.NET cache object ?.......................115
How will implement Page Fragment Caching ?...............................................................................116
Can you compare ASP.NET sessions with classic ASP?..................................................................116
Which various modes of storing ASP.NET session ?.......................................................................116
Is Session_End event supported in all session modes ?...................................................................117
What are the precautions you will take in order that StateServer Mode work properly ?...............117
What are the precautions you will take in order that SQLSERVER Mode work properly ?...........117
hat prhere do you specify session state mode in ASP.NET ?........................................hat ?...................................................hat ?.....................................?.................................................................................................management?........ow frames?....................................Cookies?..............................................Strin. OOPS.......................................................................hat is Object Oriented Programming ?................................................................?....................................................................................................... ?...................................................................................................?...............................................?....................Systems?...........relow ?.......................................................t prore ?...........................................t ?......................................................t ?........................................t ?....................................................................................................s ?....................t management?........... ?.............................................t frames?.......................................t Cookies?.................................................t StringsOOPS.........................................................................t ?...................................................................t’s ?..........................................................................................................t’s ?......................................................................................................t ?..................................................t ?.......................t Systems?..............t relat ?..........................................................Where ?....................................?................................................?.................................?.............................................................................................?..............management?.....?.......................................frames?................................Cookies?..........................................Stri6. OOPS.....................................................................What ?............................................................?....................................................................................................?...............................................................................................?............................................?................Systems?........rHow ?...................................................?..................................................................................?............................................................................................interfaces?................................?.............................................................................................?.................................................................................................?...............................................................................
?.................................................................118
here ?............................................?.......................................................?.........................................?.....................................................................................................?.....................management?............?..............................................frames?........................................Cookies?..................................................Strings?. OOPS..........................................................................?....................................................................?...........................................................................................................?.......................................................................................................?...................................................?........................ist Systems?...............ist relatiow ?...........................................................?..........................................................................................hat ?....................................................................................................hat interfaces?.......................................hat ?.....................................................................................................hat ?.........................................................................................................o ?.......................................................................................an ?...........................................................................an ?.......................................................................................hat ?....................................................................................................
What are the other ways you can maintain state ?............................................................................118
What are benefits and Limitation of using Hidden fields ?..............................................................118
re ?....................................s ViewState ?................................................................................................he ?.................re management?.......an ?..........................................re frames?...................................re Cookies?.............................................s StrinOPS.......................................................................s ?............................................................... ?..................................................................................................
What is ?..........................................................................................................................119
hat ?...............................................................................oes hat manageow ?........................hat frames?..................hat Cookies?............................hat OOPS...........................................................?..............................................?.....................................................................................?.................................................................................?.............................?..Systewist Inhow ?.....................................?....................................................................?..............................................................................interfaces?.................?...............................................................................?...................................................................................?.................................................................
Does the performance for viewstate vary according to User controls ?..........................................119
What are benefits and Limitation of using Viewstate for state management?.................................119
How can you use Hidden frames to cache client data ?...................................................................120
What are benefits and limitations of using Hidden frames?.............................................................120
What are benefits and limitations of using Cookies?.......................................................................121
What is Query String and What are benefits and limitations of using Query Strings?....................121
6. OOPS......................................................................................135
?.........................................................................................135
What’s a Class ?...............................................................................................................................135
hat’s ?.........................................................................................................hat’s ?.....................................................................................................hat ?.................................................hat ?......................wist Systems?.............wist relaow ?.........................................................hat ?........................................................................................
What’s an Object ?............................................................................................................................135
What is the relation between Classes and Objects ?........................................................................135
What are different properties provided by Object-oriented systems ?.............................................135
Twist :- Can you explain different properties of Object Oriented Systems?....................................135
Twist :- What is difference between Association, Aggregation and Inheritance relationships?......136
How can we acheive inheritance in VB.NET ?................................................................................137
What are abstract classes ?...............................................................................................................138
What is a Interface ?.........................................................................................................................140
What is difference between abstract classes and interfaces?............................................................142
What is a delegate ?..........................................................................................................................142
What are events ?..............................................................................................................................143
Do events have return type ?............................................................................................................145
Can event’s have access modifiers ?................................................................................................145
Can we have shared events ?............................................................................................................145
What is shadowing ?.........................................................................................................................145
What is the difference between Shadowing and Overriding ?........................................................146
What is the difference between delegate and events?......................................................................146
If we inherit a class do the private variables also get inherited ?.....................................................147
What are the different accessibility levels defined in .NET ?..........................................................147
Can you prevent a class from overriding ?.......................................................................................147
What is the use of “MustInherit” keyword in VB.NET ?.................................................................147
Do interface have accessibility modifier?........................................................................................148
What are similarities between Class and structure ?........................................................................148
What is the difference between Class and structure’s ?...................................................................148
What does virtual keyword mean ?..................................................................................................148
What are shared (VB.NET)/Static(C#) variables?...........................................................................148
What is Dispose method in .NET ?..................................................................................................150
What is the use of “OverRides” and “Overridable” keywords ?......................................................150
Where are all .NET Collection classes located ?.............................................................................150
What is ArrayList ?...........................................................................................................................151
What’s a HashTable ?.......................................................................................................................151
Twist :- What’s difference between HashTable and ArrayList ?.......................................................151
What are queues and stacks ?...................................................................?......................................................................................?...........................................................................NET?..................................................NET?.............................up?................................method?.................................................method?.....................................................automatically?.............private?...............?...........................................................................................................151
What is ENUM ?..............................................................................................What is nested Classes ?...................................................................................NET?..........................................................fWhat NET?.....................................up?........................................method?.........................................................method?.............................................................automatically?.....................private?.......................?....finallWhat ?..............................................................................................?.................................................................. cla7. ASP.NET..............................................................What’ is the sequence in which ASP.NET events are processed ?...................In which event are the controls fully loaded ?..................................................?............................................?..............?..................................................................................?.......................................................................NET?..............................................constructWhat NET?.........................up?............................method?.............................................method?.................................................automatically?.........private?...........propeIf thWhat ?..................................................................................?...................................................... StringBuil7. NET......................................................?.......?......................................?................................?..?......................................................................
?..............................................................................................................................151
hat hat hat n constructhat hy ow hat ow n an propef thhat an at ?................................................................................at ?.....................................................................at NET?............................................construcat NET?.......................y prope tat StringBuat ?.....................................................................................................?.........................................................................................NET?................................................................fat NET?............................................up?..............................................method?...............................................................method?....................................................................automatically?...........................private?..............................?...........bloat ?....................................................................................................?........................................................................classes NET..................................................................at’ ?..........................?.........................................................w ?...................................................?....................at ?.........................................................................................UM ?.....................................................................................sted ?..........................................................................perator NET?.................................................ample e NET?............................referred up?...............................e method?................................................e method?....................................................automatically?............stances private?..............ve propert
dexer ?.....................................................................................ve ?.........................................................e StringBuild
?...................................................................................................................151
What is Operator Overloading in .NET?..........................................................................................152
In below sample code if we create a object of class2 which constructor will fire first ?.................152
What is the significance of Finalize method in .NET?.....................................................................152
Why is it preferred to not use finalize for clean up?..........................method?...........................................method?...............................................automatically?.......private?.........proIf tWhat ?................................................................................?.................................................... StringBu7. NET....................................................?.....?....................................?..............................
up?........................................................................153
How can we suppress a finalize method?.........................................................................................154
w method?.......................................................at is the use of DISPOSE method?...........................................................w automatically?...................private?.....................n ?..e finalat ?............................................................................................n ?................................................................hat cl NET............................................................?.................?................................................?..........................................?............?................................................................................?..................................................e at ?.....................................................
What method?.............................................................................................154
How do I force the Dispose method to be called automatically?.....................................................155
In what instances you will declare a constructor to be private?.......................................................155
Can we have different access modifiers on get/set methods of a property ?....................................156
If we write a goto or a return statement in try and catch block will the finally block execute ?....156
What is Indexer ?..............................................................................................................................156
Can we have static indexer in C# ?..................................................................................................156
What is the difference between System.String and System.StringBuilder classes?........................156
7. NET.................................................................................157
?..................................................................................?...................................................wWhat ?......................................................?................................................?......................................... ?........................................................ NET?........................... ?......................................... ?..............
?...................................................157
?....ch ?...................................an ?.............................oes s ?...................................................................o ?.....................................ant s ?........................................ ?..................................s ?.......................... ?......................................... NET?............an ?..........................?..................................................................................157
How can we identify that the Page is PostBack ?............................................................................157
How does ASP.NET maintain state in between subsequent request ?..............................................157
w ?...........hat is event bubbling ?...............................................................................w ?................................................hat ?...................................................hat’s ?.............................................hat ?......................................here ?.....................................................
What ?..................................................................................................................157
How do we assign page specific attributes ?....................................................................................158
If we want to make sure that no one has tampered with ViewState, how do we ensure it?.............158
What is the use of @ Register directives ?.......................................................................................158
What’s the use of SmartNavigation property ?.................................................................................158
What is AppSetting Section in “Web.Config” file ?.........................................................................158
Where is ViewState information stored ?........................................................................................158
What is the use of @ OutputCache directive in ASP.NET?...........................................................159
s NET?......n we create custom controls in ASP.NET ?....................any Nu n ?................ ?...............................
How can ?.........................................................................159
How many types of validation controls are provided by ASP.NET
?..............................................159
Can you explain what is “AutoPostBack” feature in ASP.NET ?...................................................160
How can you enable automatic paging in DataGrid ?.....................................................................160
What’s the use of “GLOBAL.ASAX” file ?....................................................................................160
What is the difference between “Web.config” and “Machine.Config” ?........................................160
What is a SESSION and APPLICATION object ?..........................................................................161
What is the difference between Server.Transfer and response.Redirect ?.......................................161
What is the difference between Authentication and authorization?.................................................161
What is impersonation in ASP.NET ?..............................................................................................162
Can you explain in brief how the ASP.NET authentication process works?...................................162
What are the various ways of authentication techniques in ASP.NET?..........................................163
How does authorization work in ASP.NET?....................................................................................165
What’s difference between Datagrid, Datalist and repeater ?..........................................................166
From performance point of view how do they rate ?.......................................................................167
What is the method to customize columns in DataGrid?.................................................................167
How can we format data inside DataGrid?.......................................................................................167
How to decide on the design consideration to take a Datagrid, datalist or repeater ?.....................167
Difference between ASP and ASP.NET?..........................................................................................167
What are major events in GLOBAL.ASAX file ?............................................................................169
re ?............................................rder they are triggered ?........................................................................sion ?..................................................................................an ?.......................................an ?............nt validators?................................................an dation s ?.........................................................................o ?.............................................................................xactly Browser?............an ?......................................................................o ?..........................................................o ?..............................................re levels?............................................................ses Ns ?......................n code?................u ?............................................What order ?...............................................................................?.........................................................................................?..............................................?...................validators?.......................................................clieIf ?................................................................................?....................................................................................Browser?...................?.............................................................................?.................................................................?.....................................................levels?...................................................................??.............................code?.......................?...................................................?...........................................................
?........................................................................................................170
Do session use cookies ?..................................................................................................................171
?............................................................................................w ?.................................................w ?......................?.w validators?..........................................................w y
How can we force all the validation control to run ?.......................................................................171
?................................................ can we check if all the validation control are valid and proper ?.....................cich ? validators?......................................................... clientalidation yat ?.................................................................................. ?......................................................................................at Browser?..................... ?............................................................................... ?...................................................................
How ?............................................171
If client side validation is enabled in your Web page, does that mean server side code is not run?171
lient coch ?... validators?........................................................... salidation yot ?..................................................................................... ?........................................................................................t Browser?....................... ?.................................................................................. ?..................................................................... ?.........................................................t levels?....................................................................... ?....t ?.................................lain code?............................ ?........................................................ ?................................................................okies work?............... datagrid?.........................................................................t ?....................................t garden”?............................. WebGarden”?.........................................................................
Which JavaScript file is referenced for validating the validators at the client side ?.......................171
How to disable client side script in validators?................................................................................172
How can I show the entire validation error message in a message box on theIf whatWhat ?........................................................................?............................................................................Browser?...........?.....................................................................?........................................................?............................................levels?...........................................................?....................code?...............?...........................................?...................................................work?..datagrid?............................................................?........................garden”?.................WebGarden”?............................................................?..............
the client side?.............172
If validation are complicated and does not fit in any of the validators, what will you do ?..........172
What is Tracing in ASP.NET ?.........................................................................................................173
How do we enable tracing ?.............................................................................................................173
What exactly happens when ASPX page is requested from Browser?............................................173
How can we kill a user session ?...........................................................................?...............................................................?...................................................levels?.................................................................?...........................code?.....................?.................................................?.........................................................work?........datagrid?...................................................................?..............................garden”?.......................WebGarden”?...................................................................?....................8..NET Architecture.................................................... What are design patterns ?....................................................................................What is the difference between Factory and Abstract Factory Patterns?..............
?......................................................................................................177
How do you upload a file in ASP.NET ?..........................................................................................178
How do I send email message from ASP.NET ?..............................................................................178
What are different IIS isolation levels?............................................................................................178
ASP uses STA threading model, what is the threading model used for ASP.NET ?........................180
What is the use of <%@ page aspcompat=true %> attribute ?......................................................180
Explain the differences between Server-side and Client-side code?................................................181
Can you explain Forms authentication in detail ?............................................................................181
How do I sign out in forms authentication ?....................................................................................183
If cookies are not enabled at browser end does form Authentication work?...................................183
How to use a checkbox in a datagrid?..............................................................................................183
What are the steps to create a windows service in VB.NET ?.........................................................184
What is the difference between “Web farms” and “Web garden”?..................................................185
How do we configure “WebGarden”?..............................................................................................188
What is the main difference between Gridlayout and FlowLayout ?...............................................191
Architecture....................................................................192
?...............................................................................................................192
Patterns?.........................................193
What is MVC pattern?......................................................................................................................196
Twist: - How can you implement MVC pattern in ASP.NET?...........................................................196
How can we implement singleton pattern in .NET?.........................................................................198
How do you implement prototype pattern in .NET?........................................................................199
Twist: - How to implement cloning in .NET ? What is shallow copy and deep copy ?....................199
What are the situations you will use a Web Service and Remoting in projects?..............................199
Can you give a practical implementation of FAÇADE patterns?.....................................................199
How can we implement observer pattern in .NET?........................................................................201
What is three tier architecture?.........................................................................................................201
Have you ever worked with Microsoft Application Blocks, if yes then which?..............................202
What is Service Oriented architecture?............................................................................................202
What are different ways you can pass data between tiers?..............................................................205
What is Windows DNA architecture?...............................................................................................205
What is aspect oriented programming?............................................................................................207
9. ADO.NET...............................................................................216
What is the namespace in which .NET has the data functionality classe ?............................?............................?...............................?.........?.....................................................?.....................................................?...............................................................?................................................object?............................................................................?.................................................classes ?..... ?......................................?......................................?.........................................?...................?...............................................................?...............................................................?.........................................................................?..........................................................object?......................................................................................?...........................................................?.....................?..............?..............................................closedI thaHow roWhich ?................
?...................................216
s datou architecturre NEs re as ?....................s ?...................s ?..............................re ?...............s object?..........................................re ?................ Can you give a overview of ADO.NET architecture ?...........................................?...........................................?..............................................?........................?....................................................................?....................................................................?..............................................................................?...............................................................object?...........................................................................................?................................................................?..........................?.................................................................
?....................................................................216
What are the two fundamental objects in ADO.NET ?....................................................................218
What is difference between dataset and datareader ?.......................................................................218
What are major difference between classic ADO and ADO.NET ?.................................................218
What is the use of connection object ?.............................................................................................218
What is the use of command objects ?.............................................................................................219
What is the use of dataadapter ?.......................................................................................................219
What are basic methods of Dataadapter ?........................................................................................219
What is Dataset object?....................................................................................................................220
What are the various objects in Dataset ?.........................................................................................220
How can we connect to Microsoft Access , Foxpro , Oracle etc ?...................................................220
How do we connect to SQL SERVER, which namespace do we use ?...................?...................................................?.dHow ?.....................?........................................................?.........................................XML?..
?............................................221
How do we use stored procedure in ADO.NET ?............................................................................226
How can we force the connection object to close after my datareader is closed ?..........................227
I want to force the datareader to return only schema of the datastore rather than data ?.................227
How can we fine tune the command object when we are expecting a single row ?.......................227
Which is the best place to store connectionstring in .NET projects ?..............................................227
What are the steps involved to fill a dataset ?.................................................................................228
Twist :- How can we use dataadapter to fill a dataset ?..................................................................228
ist ?..................hat are the various methods provided by the dataset object to gew ?..........................................w s
What generate XML?...........................229
How can we save all data from dataset ?..........................................................................................229
How can we check that some changes have been made to dataset since it was loaded ?................230
Twist :- How can we cancel all changes done in dataset ?..............................................................230
Twist :- How do we get values which are changed in a dataset ?....................................................230
How can we add/remove row’s in “DataTable” object of “DataSet” ?............................................230
What is basic use of “DataView” ?...................................................................................................231
?........................................................................is the difference between “DataSet” and “DataReader” ?...........................:- Why is DataSet slower than DataReader ?..............................................an ?...................................................an ?......................................?..................................................................s ?..................?........................
What ?......................................................232
Twist ?.........................................................................232
ist ?..............................ow ?...................................ow ?......................hat ?..................................................hat’s ?..
How can we load multiple tables in a DataSet ?..............................................................................232
How can we add relation’s between table in a DataSet ?.................................................................233
What is the use of CommandBuilder ?.............................................................................................233
What’s difference between “Optimistic” and “Pessimistic” locking ?.............................................234
How many ways are there to implement locking in ADO.NET ?...................................................234
How can we perform transactions in .NET?....................................................................................235
What is difference between Dataset. clone and Dataset. copy ?......................................................235
Can you explain the difference between an ADO.NET Dataset and an ADO Recordset?...............235
Explain in detail the fundamental of connection pooling?...............................................................236
What is Maximum Pool Size in ADO.NET Connection String?......................................................237
10. SQL SERVER.......................................................................238
What is normalization? What are different types of normalization?................................................238
What is denormalization ?................................................................................................................240
What is a candidate key ?.................................................................................................................241
What are the different types of joins? What is the difference between them ?................................241
What are indexes? What is the difference between clustered and nonclustered indexes?...............242
How can you increase SQL performance ?......................................................................................242
What is the use of OLAP ?...........................................................................................?.......................................................................................?..................................................................................?.................................................?........................................................................?.........................................................................
?...............................................................................................................243
What is a measure in OLAP ?...........................................................................................................243
hat ?........................................................................................hat are dimensions in OLAP ?...................................................................................hat ?....................................................................................hat ?..................................................ist ?..................................................hat DTS?.................................................................................................................hat ?.........................................................................................................ist ?.........................................................................hat ?..........................................................................hat commanhat SERVER?...............................................ist ?........................................?...........................................................Server?.........What ?................................................................................?.................................................................................?..............................................?...............................................DTS?..............................................................................................................?......................................................................................................?.....................................................................?......................................................................commWhat SERVER?............................................?.....................................?........................................................?.....................................................escalation?........................................................................................Server?......?....................................................CLAUSE?....?................?.......................................?...................DBCC?..........................................................................................................?..........................................................................?................
?......................................................................................................243
What are levels in dimensions ?.......................................................................................................244
t ?...................................................................................t ?................................................t ?.................................................t DTS?................................................................................................................t ?........................................................................................................t ?.......................................................................t ?........................................................................t commat SERVER?..............................................t ?.......................................t ?.......................................................... ?.......................................................t escalation?..........................................................................................t Server?........t ?......................................................t CLAUSE?......t ?.................. ?.........................................t ?.....................t DBCC?............................................................................................................t ?............................................................................
What are fact tables and dimension tables in OLAP ?.....................................................................244
Twist :- Can you explain the star schema for OLAP ?.....................................................................244
What is DTS?...........................................................................................................?...................................................................................................?...................................................................?....................................................................comWhat SERVER?.........................................?..................................?.....................................................?...................................................
DTS?...................................................................................................................................244
............................................................................................t ?............................. ?..............................en TRn SERVER?...pes SERVERin ?...............s ?...........................................................data ?............en anden ALrrors ?
What is fillfactor ?............................................................................................................................244
Twist :- When does page split occurs ?............................................................................................244
What is RAID and how does it work ?.............................................................................................245
What is the difference between DELETE TABLE and TRUNCATE TABLE commands?.............246
What are different transaction levels in SQL SERVER?..................................................................247
hat SERVER?................................................wist ?.........................................hat ?............................................................an ?.........................................................hat escalation?............................................................................................hat Server?..........hat ?........................................................hat CLAUSE?........hat ?....................ow ?...........................................hat ?.......................hat DBCC?..............................................................................................................hat ?..............................................................................hat ?....................hat ?.........................................................................hat ?..................................
Twist :- What are different types of locks in SQL SERVER ?...........................................................247
What are the different locks in SQL SERVER ?..............................................................................248
Can we suggest locking hints to SQL SERVER ?............................................................................250
What is LOCK escalation?...............................................................................................................250
What are the different ways of moving data between databases in SQL Server?............................250
What are advantages of SQL 2000 over SQl 7.0 ?...........................................................................251
What is the difference between a HAVING CLAUSE and a WHERE CLAUSE?..........................252
What is the difference between UNION and UNION ALL SQL syntax ?.......................................252
How can you raise custom errors from stored procedure ?..............................................................252
What is ACID fundamental? What are transactions in SQL SERVER ?..........................................254
What is DBCC?...............................................................................................................................255
What is the purpose of Replication ?................................................................................................257
What are the different types of replication supported by SQL SERVER ?......................................258
What is BCP utility in SQL SERVER ?............................................................................................258
What are the different types of triggers in SQl SERVER 2000 ?.....................................................260
ifferent ?.......ltiple AFTER Triggers on table how can we define thjection ?.......................................................................fference Def..........................................................
If we have multiple the sequence of the triggers ?..261
What is SQl injection ?.....................................................................................................................261
What is the difference between Stored Procedure (SP) and User Defined Function (UDF)?..........262
11. UML......................................................................................277
What is UML?.................................................................................................................................277
How many types of diagrams are there in UML ?............................................................................277
Twist :- Explain in short all types of diagrams in UML ?................................................................277
What are advantages of using UML?...............................................................................................279
Twist: - What is Modeling and why UML ?......................................................................................279
What is the sequence of UML diagrams in project?........................................................................279
Twist: - How did you implement UML in your project?...................................................................279
Just a small Twist: - Do I need all UML diagrams in a project?.....................................................280
Give a small brief explanation of all Elements in activity diagrams?..............................................284
Explain Different elements of a collaboration diagram ?.................................................................286
Explain Component diagrams ?........................................................................................................287
Explain all parts of a deployment diagram?.....................................................................................289
Describe the various components in sequence diagrams?................................................................291
What are the element in State Chart diagrams ?...............................................................................293
Describe different elements in Static Chart diagrams ?...................................................................295
Explain the different elements of a Use Case ?................................................................................297
Twist: - What is the difference between Activity and sequence diagrams?......................................299
12. Project Management............................................What is project management?.............................................................................Is spending in IT projects constant through out the project?...............................?........................................................................................?...................................................................?................................. ?.........................................................?...........................?................................?..............................................................................variance?......................................................................................?.................project?..........................................................................Resolution)?..............................................?...........................................?............................................................................?...................................................................?...................................................................................
Management.............................................................300
management?..........................................................................................................300
hat management?..........................................................project?............ho ?.....................................................................n ?.................................................ist ?...............re ?......................................n ?.........hat ?..............hat ?............................................................hat variance?...................................................................w w project?.......................................................hat Resolution)?............................
project?............................................................300
Who is a stakeholder ?......................................................................................................................301
Can you explain project life cycle ?................................................................Twist :- How many phases are there in software project ?.............................. ?.....................................................?........................?.............................?...........................................................................variance?...................................................................................?..............project?......................................................................Resolution)?...........................................?.......................................?.........................................................................?................................................................?................................................................................?...................................................................request?...............................................................request?.....................................................................?...................................management?.......................management?.................................sWhat testing?..........................................testing?............................................................................project?.............................................................................
?.................................................................................................301
?...............................................................301
- ?.......................sk ?..............................................?.................?......................?....................................................................variance?............................................................................ ?.......o project?...............................................................
Are risk constant through out the project ?......................................................................................303
Can you explain different software development life cycles ?.........................................................304
u s ?....s ?..................................................s variance?..........................................................
What is triple constraint triangle in project management ?..............................................................307
What is a project baselines ?............................................................................................................308
What is effort variance?....................................................................................................................308
How is normally a project management plan document organized ?...............................................308
How do you estimate a project?.......................................................................................................308
What is CAR (Causal Analysis and Resolution)?............................................................................309
What is DAR (Decision Analysis and Resolution) ?........................................................................309
What is a fish bone diagram ?..........................................................................................................309
Twist:- What is Ishikawa diagram ?.................................................................................................309
What is pareto principle ?.................................................................................................................310
Twist :- What is 80/20 principle ?....................................................................................................311
How do you handle change request?................................................................................................311
What is internal change request?....................................................................What is difference between SITP and UTP in testing ?..................................management?......................management?................................sSome testing?.........................................RegressioWhat testing?...........................................................................project?............................................................................
request?......................................................................................................311
?....................................................................311
What is the software you have used for project management?........................................................311
What are the metrics followed in project management?...................................Twist: - What metrics will you look at in order to see the project is moving suSome yTwist soWhat testing?............................................testing?..............................................................................project?...............................................................................allocations?...............................................................
management?..................................................................312
successfully?.............312
ill toam deasources betng testingetween Asseting?................................ject?.................................
Some people in your team do not meet there deadlines what are the actions you will take ?.........315
Twist :- Two of your resources have conflicts between them how would you sort it out ?...............315
What is black box testing and White box testing?...........................................................................315
What’s the difference between Unit testing, Assembly testing and Regression testing?.................316
What is V model in testing?.............................................................................................................318
How do you start a project?..............................................................................................................321
How did you do resource allocations?..............................................................................................321
How will you do code reviews ?.....................................................................................................321
What is CMMI?...............................................................................................................................321
What are the five levels in CMMI?..................................................................................................321
What is continuous and staged representation?................................................................................325
Can you explain the process areas?..................................................................................................329
What is SIX sigma?.........................................................................................................................347
What is DMAIC and DMADV ?......................................................................................................348
What are the various roles in Six Sigma implementation?...............................................................349
What are function points?.................................................................................................................350
Twist: - Define Elementary process in FPA?....................................................................................350
What are the different types of elementary process in FPA?............................................................350
What are the different elements in Functions points?......................................................................350
Can you explain GSC and VAF in function points?.........................................................................356
What are unadjusted function points and how is it calculated?.......................................................358
Can you explain steps in function points?........................................................................................359
What is the FP per day in your current company?...........................................................................359
Twist :- What is your company’s productivity factor ?.....................................................................359
Do you know Use Case points?........................................................................................................359
ou points?....................................................................................t COCOMOIII?...............................................at estimation?........................................................................ requests?............................... XML.........................................................................t is XML?..............................................................................................................t XML?..................................................................t XML?................................................................................ML work?..........................................................ML sensitive?................................................................................................t ML HTML?............................................................................... XML?.......................................................t definition)?................................................................t XML?.........................................................................................t XML?.................................................................................................t XML?...............................................................................t CSS?...............................................................................................................t t XML?.....................................................................ch XML?...................................................
What is COCOMO I, COCOMOII and COCOMOIII?....................................................................359
What is SMC approach of estimation?............................................................................................359
How do you estimate maintenance project and change requests?....................................................360
13. XML.....................................................................XML.............................................................................What XML?..................................................................................................................XML?.......................................................................XML?.....................................................................................work?...............................................................sensitive?.....................................................................................................HTML?..........................................................HTML?....................................................................................XML?............................................................definition)?.....................................................................XML?..............................................................................................XML?......................................................................................................XML?....................................................................................CSS?....................................................................................................................XSL?....................................................................................................................XML?..........................................................................XML?........................................................document?................................................parser?.................................... times?..................................................................classes?....... framework?.........................................XSLT?.................................................................................................................
XML.....................................................................................361
XML?.................................................................................................................................361
What is the version information in XML?.......................................................................................361
What is ROOT element in XML?.....................................................................................................361
hat XML?................................................................................. XML does not have closing tag will it work?........................................................... sensitive?.................................................................................................hat HTML?...................................................... HTML?................................................................................XML?........................................................hat definition)?.................................................................hat XML?..........................................................................................hat XML?..................................................................................................hat XML?................................................................................hat CSS?................................................................................................................hat XSL?................................................................................................................hat XML?......................................................................hich XML?....................................................hat document?............................................ parser?................................ow times?..............................................................hat classes?...If work?.....................................................sensitive?...........................................................................................HTML?................................................HTML?..........................................................................XML?..................................................definition)?...........................................................XML?....................................................................................XML?............................................................................................XML?..........................................................................CSS?..........................................................................................................XSL?..........................................................................................................XML?................................................................XML?..............................................document?......................................parser?.......................... times?........................................................classes framework?...............................XSLT?.......................................................................................................
work?...............................................................................361
Is XML case sensitive?.....................................................................................................................362
What is the difference between XML and HTML?..........................................................................362
Is XML meant to replace HTML?....................................................................................................362
HTML?.................................................................................an XML?.........................................................
Can you explain why your project needed XML?............................................................................362
What is DTD (Document Type definition)?.....................................................................................362
What is well formed XML?..............................................................................................................362
What is a valid XML?......................................................................................................................363
What is CDATA section in XML?.............................................................................What is CSS?.............................................................................................................
XML?....................................................................................................363
CSS?...................................................................................................................................363
What is XSL?...................................................................................................................................363
What is element and attributes in XML?..........................................................................................363
Which are the namespaces in .NET used for XML?........................................................................363
What are the standard ways of parsing XML document?................................................................363
In What scenarios will you use a DOM parser and SAX parser?....................................................368
How was XML handled during COM times?..................................................................................368
What is the main difference between MSML and .NET Framework XML classes?.......................368
What are the core functionalities in XML .NET framework?.........................................................368
What is XSLT?................................................................................................................................369
hat XSLT?...........................................................................................................efine XPATH?..........................................................................................................hat is the concept of XPOINTER?..........................................................................hat Class?..................................................................................hat XMLTextReader?..........................................................................................
Define XPATH?...............................................................................................................................370
What XPOINTER?................................................................................................370
What is an XMLReader Class?........................................................................................................371
What is XMLTextReader?................................................................................................................371
How do we access attributes using “XmlReader”?..........................................................................372
Explain simple Walk through of XmlReader ?................................................................................372
What does XmlValidatingReader class do?.....................................................................................375
14. Localization/Globalization...................................................376
What is Unicode and why was it introduced?..................................................................................376
Does .NET support UNICODE and how do you know it supports?................................................377
What’s the difference between localization and globalization?.......................................................377
What architecture decisions you should consider while planning for international software’s?.....378
How do we get the current culture of the environment in windows and ASP.NET?......................380
Which are the important namespaces during localization and globalization?................................383
What are resource files and how do we generate resource files?.....................................................384
Can resource file be in any other format other than resx extensions?..............................................385
How is resource files actually used in project?................................................................................385
w project?.............................w project?.....................................hat assemblies?.......................................................w assemblies?....................................hat EXE?..........................................hat’s class?...................................
How can we use Culture Auto in project?........................................................................................385
What are satellite assemblies?.............................................................................assemblies?..........................................................EXE?................................................................class?.........................................................assemblies?.....managerExplain GetLocalResouCan assembly?.......................................................................server?..............................................tables?..........................sequence?localization?...........................thread?.......................................................15. Windows Communication Framework (Vista SerWhat is .NET 3.0.................................................................................................What is Windows CardSpace ?............................................................................WCF?.....................................................................................................Architecture)?......bindings?.........................................follow?............................................................WCF?............................................................class?.......................................................................................Contract?.....................service?.......................................IIS?...............................................................hWhat services?.................services?..................................................
assemblies?..........................................................................................................388
How do we generate Satellite assemblies?.......................................................................................388
What is AL.EXE and RESGEN.EXE?.............................................................................................388
.EXE?..................................use of resource manager class?...........................utions satell an assembly?.........................................plain server?................ tablenge ct localizationculture thread?.........................dows FramewoT 3.0...................................................................ndows ?..............................................F?.......................................................................
What’s the class?......................................................................................390
What precautions do we need to take while deploying satellite assemblies?..................................390
recautions assemblies?... manag GetLocalRes
Can we get a strongly typed resource class rather than using resource manager?...........................391
Explain the fundamentals of “GetGlobalResourceObject” and “GetLocalResourceObject” ?.......394
Can we sign a satellite assembly?....................................................................................................394
Can you explain collation sequence in sql server?...........................................................................394
How do we define collation sequence for database and tables?.......................................................395
Can we change the order in a select query with a specified collation sequence?............................396
Can you list best practices for globalization and localization?........................................................396
Why is the culture set to the current thread?....................................................................................397
Series)..........399
indows ViET 3.0..................................................................................indows ?.............................................................CF?...................................................................................... Architect bindings?..........................ecifications follow?.............................................
What 3.0.............................................................................................................................399
?.........................................................................................................399
What is WCF?.................................................................................................................................399
What are the important principles of SOA (Service oriented Architecture)?...................................403
What are end points, contract, address and bindings?......................................................................404
Which specifications does WCF follow?........................................................What are the main components of WCF?........................................................iWhat class?...................................................................................Contract?.................service?...................................IIS?...........................................................selfWhat services?.............services?..............................................WCF?............................................WCF?...........................
follow?.........................................................................................406
WCF?.........................................................................................407
Can you explain how End points, Contract, Address and Bindings are done in WCF?...................407
What is a service class?....................................................................................................................407
What is a service contract, operation contract and Data Contract?..................................................407
What are the various ways of hosting a WCF service?....................................................................414
How do we host a WCF service in IIS?............................................................................................414
What are the advantages of hosting WCF Services in IIS as compared to self hosting?.................420
What are the major differences between services and Web services?..............................................421
What is the difference WCF and Web services?...............................................................................421
What are different bindings supported by WCF?.............................................................................421
Which are the various programming approaches for WCF?............................................................422
What is one way operation?.............................................................................................................422
Can you explain duplex contracts in WCF?.....................................................................................424
How can we host a service on two different protocols on a single server?......................................428
How can we use MSMQ bindings in WCF?....................................................................................431
Can you explain transactions in WCF?............................................................................................435
What different transaction isolation levels provided in WCF?........................................................435
Can we do transactions using MSMQ?............................................................................................437
Can we have two way communications in MSMQ?........................................................................439
What are Volatile queues?................................................................................................................440
What are Dead letter queues?...........................................................................................................441
What is a poison message?...............................................................................................................441
16. Windows Presentation Framework (Vista Series)................443
What is WPF?..................................................................................................................................443
What is XAML?..............................................................................................................................443
?..........................................................................dency properties?................................................e runtime?...........................n XAML?...........cess code?...................nd WPF?............
What are dependency properties?.....................................................................................................443
Are XAML file compiled or built on runtime?................................................................................444
Can you explain how we can separate code and XAML?................................................................444
XAML?............................................ code?...................................................WPF?............................................ Windows workflow foundation(Vista series)............t is Windows Workflow Foundation?....................................................................t is a Workflow?....................................................................................................t foundation?................n machines designer?............................................................. flow?............................................................. workflow?.............................................................t files?..................................................................................st: workflows?.................................................................. workflow?...............................................................ATLAS-AJAX...........................................................t problem does Ajax solve?..................................................................................t is Ajax?...............................................................................................................t Ajax?..............................................................t JSON?............................................................................................................. JavaScript?............................................ Ajax?.................................................
How can we access XAML objects in behind code?........................................................................446
What are the kind of documents are supported in WPF?.................................................................446
t WPF?....................................... series)........Foundation?..............................................................Workflow?..............................................................................................foundation?...........machi designer?....................................................... flow?........................................................ workflow?........................................................files?.............................................................................workflows?............................................................. workflow?..........................................................AJAX........................................................solve?.............................................................................Ajax?.........................................................................................................Ajax?.........................................................JSON?....................................................................................................... JavaScript?....................................... Ajax?...........................................WPF?.................................... series)......Foundation?...........................................................Workflow?...........................................................................................foundation?........mac designer?.................................................... flow?..................................................... workflow?.....................................................files?..........................................................................workflows?.......................................................... workflow?.......................................................AJAX......................................................solve?..........................................................................Ajax?......................................................................................................Ajax?......................................................
17. series).......................448
What Foundation?........................................................................................448
What Workflow?.......................................................................................................................448
What are different types of Workflow in Windows Workflow foundation?.....................................449
When should we use a sequential workflow and when should we use state machines?..................450
How do we create workflows using designer?.................................................................................453
o designer?................o flow?.................o workflow?.................s files?......................................workflows?......................an workflow?...................TLAS-AJAX..............................roblem solve?......................................s Ajax?..................................................................s Ajax?..................s JSON?................................................................
How do we specify conditions in Work flow?..................................................................................454
How do you handle exceptions in workflow?..................................................................................456
What is the use of XOML files?.......................................................................................................457
files?........................................................ - How can we serialize workflows?........................................can we pass parameters to workflow?.....................................AJAX..........................................solve?........................................................Ajax?....................................................................................Ajax?....................................JSON?..................................................................................o JavaScript?..................o Ajax?......................chan text?.........................................................an o server?........................................an Atlas?......................Atlas?...........................................
Twist: workflows?.......................................................................................457
How workflow?....................................................................................459
18.AJAX.......................................................................461
What solve?.......................................................................................................461
What Ajax?..................................................................................................................................462
What is the basic fundamental behind Ajax?...................................................................................462
What is JSON?................................................................................................................................462
How do we use XMLHttpRequest object in JavaScript?.................................................................463
How do we do asynchronous processing using Ajax?.....................................................................464
What are the various states in XMLHttpRequest and how do we check the same?........................464
How can we get response text?........................................................................................................465
How can we send request to the server using the XMLHttpRequest component?..........................465
How do we pass parameters to the server?.......................................................................................466
How can we create a class in JavaScript using Atlas?.....................................................................466
How do we do inheritance using Atlas?..........................................................................................470
How do we define interfaces using Atlas?......................................................................................470
How do we reference HTML controls using Atlas?........................................................................471
Can you explain server controls in Atlas?........................................................................................471
Can you explain ScriptManager control?.........................................................................................471
What is the importance of UpdatePanel Control?............................................................................471
Can you explain update progress control?.......................................................................................471
Can you explain control extenders?.................................................................................................471
How can we data binding in Atlas?..................................................................................................471
Can you explain AtlasUIGlitz library?.............................................................................................471
I want to create a project like Google maps how can we do that with Atlas?..................................471
How can we integrate Atlas with Web services?..............................................................................472
How can implement drag and drop using Atlas?..............................................................................472
How do we do authentications using Atlas?.....................................................................................472
How can we access profiles using Atlas?.........................................................................................472
How can we access dataset in Atlas?................................................................................................472
We have custom data type on a web service how do we access the same in Atlas?........................472
19. Sample Projects....................................................................473
rojects...............................lete the projects.................................................................................................................................................................................................................................................tion............................................................entation application........nt application....................................................................................ns.............................................................Document..................................................Approach to complete projects...................................................................Address book....................................................................................................site.....................................................................................................application................................................................................................Application.......................................................................................application...................................application...........................................Estimation.........................................................................................................Sections.........................................................................................Document.............................................................................Overview..........................................................................................................approach.......................................................................................Diagram.......................................................................................................Layer..................................................................................................Layer...................................................................................................
projects...................................................................................................473
pproach ddress ini-hat eminder omplete se stimation.........................................................................................................ssumption Sections........................................................................................echnical verview..........................................................................................................rchitecture approach......................................................................................R Diagram......................................................................................................atabase Layer.................................................................................................usiness Layer..................................................................................................resentation Layer............................................................................................est plans..........................................................................................................ource code......................................................................................................omplete projects.......................................................................................................................................on....................................................lication...........................................lementation applicument application.........................................................ections............................................ign Document.........................................................................................pproach..........................................
book...................................................................................................................................475
Mini-job site....................................................................................................................................476
Chat application...............................................................................................................................482
Reminder Application......................................................................................................................483
Complete implementation of address book application...................................................................485
Use Case Document for address book application...........................................................................486
e application.............................timation..........................................................................................sumption Sections..........................................................................chnical Document..............................................................erview...........................................................................................chitecture approach........................................................................ Diagram........................................................................................tabase Layer...................................................................................siness Layer....................................................................................esentation Layer..............................................................................st plans............................................................................................urce code......................................................................................... Test Yourself............................................. Free exams................................................ Topics.........................................
Estimation........................................................................................................................................487
Assumption Sections.......................................................................................................................490
Technical Design Document.............................................................................................................490
Overview.........................................................................................................................................490
Architecture approach......................................................................................................................490
ER Diagram.....................................................................................................................................491
Database Layer................................................................................................................................491
Business Layer.................................................................................................................................499
Presentation Layer...........................................................................................................................503
Test plans.........................................................................................................................................508
Source code.....................................................................................................................................510
20. Yourself.........................................................................514
21. exams............................................................................525
22. Pending Topics......................................................................526
53
Introduction
Dedication
This book is dedicated to my kids Sanjana and Simran, whose dad’s play time has been
stolen and given to this book. I am thankful to my wife for constantly encouraging me and
also to BPB Publication to give new comer a platform to perform. Finally on top of all
thanks to the two old eyes my mom and dad for always blessing me. I am blessed to have
Raju as my brother who always keeps my momentum moving on.
I am grateful to Bhavnesh Asar who initially conceptualized the idea I believe concept
thinking is more important than execution. Tons of thanks to my reviewers whose feedback
provided an essential tool to improve my writing capabilities.
Just wanted to point out Miss Kadambari . S. Kadam took all the pain to review for the
left outs with out which this book would have never seen the quality light.
About the author
Author works in a big multinational company and has a good experience in software
industry. He is working presently as project lead and in past has led projects in banking,
travel and financial sectors.
But on top of all, I am a simple developer like you all guys there doing an 8 hour job.
Writing is something I do extra and I love doing it. No one is perfect and same holds true
for me .So anything you want to comment, suggest, and point typo / grammar mistakes or
technical mistakes regarding the book you can mail me at shiv_koirala@yahoo.com. Believe
me guys your harsh words would be received with love and treated to the top most priority.
Without all you guys I am not an author.
Writing an interview question book is really a great deal of responsibility. I have tried to
cover maximum questions for the topic because I always think probably leaving one silly
question will cost someone’s job there. But huge natural variations in an interview are
something difficult to cover in this small book. So if you have come across such questions
during interview which is not addressed in this book do mail at shiv_koirala@yahoo.com
.Who knows probably that question can save some other guys job.
Features of the book
√ Around 400 plus interview questions from live .NET interviews.
“Cheers to the true fighting spirit of IT professionals”
54
√ Section wise .NET interview question coverage according to multinational
companies.
√ Short and to the point answers ( no hitting around the bush).
√ Every question is classified in to Basic,Intermediate and advanced category,
thus providing more focus to readers on specific category.
√ Covers latest technology like Ajax , WCF , WPF and WWF.
√ During interviews other than main technology (.NET, JAVA etc.) companies
expect other areas to be strong for example UML, Architecture, Database
etc. Other sections is the most strong point of the book, which makes
reader prepared for the unexpected questions.
√ Full range of interview questions right from junior .NET developers to senior
architects or project manager.
√ CD has sample resume, sample dummy project and sample code to understand
fundamentals..
√ Book covers important points like salary negotiations, resume making and
general points to be remembered during interview.
√ Recommended for .NET interviewers who are looking for what questions to
be asked to get better and decent .NET professionals
√ Recommended for Fresher and students who want to have a feel of what
.NET questions are asked in multinational companies.
√ Developers who are looking for Quick reference and FAQ.
I am sure after reading this book readers will have extra confidence and a better approach
for .NET interviews.
Introduction
When we look back at times of COBOL, PASCAL features provided by these languages
where minimal. More emphasis was on completing projects than on quality of code. As
features provided by languages where less, programmer had to code everything from
scratch. For example to write a simple sorting logic you have to write your own sorting
algorithm. As languages grew and started becoming mature, these logic where in-built
55
feature of language. As feature list of languages started growing programmer’s became
feature specialist rather than specialist of whole language.
If a developer who is working for past two to three years on remoting is a remoting
specialist, but probably in ADO.NET he has minimal knowledge. Now after working day
& night and becoming specialist he is looking for a job. But the bad part of IT industry
today is that they do not look for specialist rather they look for developers who have fair
knowledge of over all feature of the language. This remoting specialist stumbles with
simple ADO.NET and SQL questions during interview. But guys that’s ok when you are
working and concentrating on one particular aspect it’s but obvious that you will forget
these fundamentals.
Software clients no more look source code as the only one deliverable, but even other
documents like SRS (System Requirement documents), SDD (System Design Documents),
Test Plans (SITP and UTP) etc. as a integral part of project. IT multinationals are now
looking from both technical and process aspect of the project. So going with pure .NET
technical fundamentals will only take you to a programmer position, but know how of
documenting project, UML understanding, SDLC cycle etc will take you to a better position
(Project Manager, Program Manager, Senior architect etc).
This book covers the other aspect of .NET interview’s by providing chapter like
Architecture, UML, SQL SERVER, Project Management, General Interview questions
etc.
I hope this book takes you to a better height and gives you extra confidence boost during
int erview’s.Best of Luck and Happy Job-Hunting.............
How to read this book
If you can read English, you can read this book....kidding. There are some legends which
will make your reading more effective. Every question has simple tags which mark the
rating of the questions.
These rating are given by Author and can vary according to companies and individuals.
(B) Basic Questions
Basic Grade means according to the interviewer it’s a fundamental question and should
be answered. Example What is a CLR ? Guy’s stumbling on this question will rarely pass
interviews.
56
(I) Intermediate Questions
These are Mid-level questions and will be expected to be answered if you are looking for
a decent position in the company.
(A) Advanced Questions
These are advanced level question which are expected when they are looking for specialist
in the field.
(P) Psyche Questions
These level of questions do not judge anything for a candidate but see it as a attitude
problem of the interviewer.
* Marked Questions
These are general questions asked in IT world. Example “What’s your expectation ?” You
will see these question’s as you keep reading. There are no direct answers to these question
but they do affect a lot during job search. Be ready with some decent answers.
Note
While reading you can come across section marked as “Note”, which highlight special
points of that section.
57
Software Company hierarchy
Figure :- 0.1 IT Company hierarchy
Its very important during interview to be clear about what position you are targeting.
Depending on what positions you are targeting the interviewer shoots you questions.
Example if you are looking for a project manager position you will be asked around 20%
technical questions and 80% management.
Note:- In small scale software house and mid scale software companies there are chances
where they expect a PM to be very much technical. But in big software houses the situations
are very much different, interview are conducted according to positions.... Unless the
interviewer changes the rule.
58
Above is a figure of a general hierarchy across most IT companies.
Note:- There are many small and medium software companies which do not follow this
hierarchy and they have there own adhoc way of defining positions in the company.
So why is the need of hierarchy in a interview.
“Interview is a contract between the employer and candidate to achieve specific goals.”
So employer is looking for a suitable candidate and candidate looks for a better career.
Normally in interviews the employer is very clear about what type of candidate he is
looking for.But 90% times the candidate is not clear about the positions he is looking for.
How many times it has happened with you that you have given a whole interview and
when you mentioned the position you are looking for...pat comes the answer, “ we do not
have any requirements for this position”. So be clarified about the position right from
when you start the interview.
Following are the number of years of experience according to position.
√ Junior engineers are specially fresher and work under software engineers.
√ Software engineers have around 1 to 2 years of experience. Interviewer expects
software engineers to be technically at a medium level.
√ Senior Software Engineers have around 2 to 4 years of experience. Interviewer
expects them to technically be very strong.
√ Project leads should handle majority technical aspect of project and should
have around 4 to 8 years of experience. They are also indirect architect of the
project. Interviewer expects them to be technically strong and in terms of
architecture to be decent. Interviewer also expects them to have people
management skills.
√ Project Manager are expected to be around 40% technically strong and should
have experience above 10 years plus. But they are more interviewed from
aspect of project management, client interaction, people management, proposal
preparation etc.
So now judge where you stand, and where you want to go..........
Resume Preparation Guidelines
First impression the last impression
59
Note :- A sample resume is provided in “SampleResume” folder.
Before even the interviewer meets you he will first meet your resume. Interviewer looking
at your resume is almost a 20% interview happening with out you knowing it. I was
always a bad guy when it comes to resume preparation. But when I looked at my friends
resume they where gorgeous. Now that I am writing series of book on interviews I thought
this will be a good point to put in. You can happily skip it if you are confident about your
resume. There is no hard and fast rule that you have to follow the same pattern but just
see if these all check list are attended.
√ Use plain text when you are sending resumes through email. For instance you sent
your resume using Microsoft word and what if the interviewer is using Linux he will
never be able to read your resume. You can not be sure both wise, you sent your
resume in Word 2000 and the guy has Word 97…uuhhh.
√ Attach a covering letter it really impresses and makes you look traditionally formal.
Yes, even if you are sending your CV through email send a covering letter.
Check list of content you should have in your resume :-
√ Start with an objective or summary, for instance, “Working as a Senior Database
administrator for more than 4 years. Implemented quality web based application.
Follow the industry’s best practices and adhered and implemented processes,
which enhanced the quality of technical delivery. Pledge to deliver the best technical
solutions to the industry.”
√ Specify your Core strengths at the start of the resume by which the interviewer can
make a quick decision are you eligible for the position. For example :-
• Looked after data mining and data warehousing department independently. Played
a major role in query optimization.
• Worked extensively in database design and ER diagram implementation.
• Well versed with CMMI process and followed it extensively in projects.
• Looking forward to work on project manager or senior manager position.
This is also a good position to specify your objective or position which makes it clear to
the interviewer that should he call you for an interview. For instance, if you are looking
for senior position specify it explicitly ‘looking for this job profile’. Any kind of certification
like MCP, MCSD etc you can make it visible in this section.
60
√ Once you have specified briefly your goals and what you have done its time to
specify what type of technology you have worked with. For instance RDBMS,
TOOLS, Languages, Web servers, process (Six sigma, CMMI).
√ After that you can make a run through of your experience company wise that is
what company you have worked with, year / month joining and year / month left.
This will give an overview to the interviewer what type of companies you have
associated your self.
Now its time to mention all your projects you have worked till now. Best is to start in
descending order that is from your current project and go backwards. For every project try
to put these things :-
√ Project Name / Client name (It’s sometimes unethical to mention clients name; I
leave it to the readers).
√ Number of team members.
√ Time span of the project.
√ Tools, language, RDBMS and technology used to complete the project.
√ Brief summary of the project.
Senior people who have huge experience will tend to increase there CV with putting in
summary for all project. Best for them is to just put description of the first three projects
in descending manner and rest they can say verbally during interview. I have seen CV
above 15 pages… I doubt who can read it.
√ Finally comes your education and personal details.
√ Trying for onsite, do not forget to mention your passport number.
√ Some guys tend to make there CV large and huge. I think an optimal size should be
not more than 4 to 5 pages.
√ Do not mention your salary in CV. You can talk about it during interview with HR
or the interviewer.
√ When you are writing your summary for project make it effective by using verbs like
managed a team of 5 members, architected the project from start to finish etc. It
brings huge weight.
61
√ This is essential very essential take 4 to 5 Xerox copies of your resume you will need
it now and then.
√ Just in case take at least 2 passport photos with you. You can escape it but many
times you will need it.
√ Carry all your current office documents specially your salary slips and joining letter.
Salary Negotiation
Ok that’s what we all do it for money… not everyone. This is probably the weakest area
for techno savvy guys. They are not good negotiators. I have seen so many guys at the first
instance they will smile and say “NEGOTIABLE SIR”. So here are some points:-
√ Do a study of what is the salary trend? For instance have some kind of baseline. For
example what is the salary trend on number of year of experience? Discuss this
with your friends out.
√ Do not mention your expected salary on the resume?
√ Let the employer first make the salary offer. Try to delay the salary discussion till the
end.
√ If they say what you expect ?, come with a figure with a little higher end and
say negotiable. Remember never say negotiable on something which you have aimed,
HR guys will always bring it down. So negotiate on AIMED SALARY + some thing
extra.
√ The normal trend is that they look at your current salary and add a little it so that
they can pull you in. Do your home work my salary is this much and I expect this
much so whatever it is now I will not come below this.
√ Do not be harsh during salary negotiations.
√ It’s good to aim high. For instance I want 1 billion dollars / month but at the same
time be realistic.
√ Some companies have those hidden cost attached in salary clarify that rather to be
surprised at the first salary package.
√ Many of the companies add extra performance compensation in your basic which
can be surprising at times. So have a detail break down. Best is to discuss on hand
salary rather than gross.
62
√ Talk with the employer in what frequency does the hike happen.
√ Take everything in writing, go back to your house and have a look once with a cool
head is the offer worth it of what your current employer is giving.
√ Do not forget once you have job in hand you can come back to your current employer
for negotiation so keep that thing in mind.
√ Remember the worst part is cribbing after joining the company that your colleague is
getting more. So be careful while interview negotiations or be sportive to be a
good negotiator in the next interview.
√ One very important thing is that the best negotiation ground is not the new company
where you are going but the old company which you are leaving. So once you have
offer on hand get back to your old employee and show them the offer and then make
your next move. It’s my experience that negotiating with the old employer is easy
than with the new one….Frankly if approached properly rarely any one will say no.
Just do not be aggressive or egoistic that you have an offer on hand.
Top of all some time some things are worth above money :- JOB SATISFACTION. So
whatever you negotiate if you think you can get JOB SATISFACTION aspect on higher
grounds go for it. I think its worth more than money.
Figure :- 0.2 Salary Card for India
63
Figure :- 0.3 US Salary Card
Note: - The above US Salary card is based on my experience and some talk which I had
with my friends who are staying on longer term basis outside. In case you are finding
discrepancies please do mail me at shiv_koirala@yahoo.com probably we can standardize it
better for the community.
The score card shown above is completely derived from author’s experience and interaction
he had in his circle. It is not an approved score card by any authorized body as such and
should be taken only has bench mark to measure your success. Also note that these rates
are applicable for medium and large software companies. Small company rate cards are
very irregular and governed by a single owner of the company. So the above rate card is
not applicable for small company. Many people do get mind blowing salaries even with
small experience which again the score card does not reflect.
Points to remember
√ One of the first questions asked during interview is “Can you say something about
yourself ”?
√ Can you describe about your self and what you have achieved till now?
√ Why do you want to leave the current company?
√ Where do you see yourself after three years?
64
√ What are your positive and negative points?
√ How much do you rate yourself in .NET and SQL Server in one out of ten?
√ Are you looking for onsite opportunities? (Be careful do not show your desperation
of abroad journeys)
√ Why have you changed so many jobs? (Prepare a decent answer do not blame
companies and individuals for your frequent change).
√ Never talk for more than 1 minute straight during interview.
√ Have you worked with previous version of SQL Server?
√ Would you be interested in a full time Database administrator job?
√ Do not mention client names in resume. If asked say that it’s confidential which
brings ahead qualities like honesty
√ When you make your resume keep your recent projects at the top.
√ Find out what the employer is looking for by asking him questions at the start of
interview and best is before going to interview. Example if a company has projects
on server products employer will be looking for BizTalk, CS CMS experts.
√ Can you give brief about your family background?
√ As you are fresher do you think you can really do this job?
√ Have you heard about our company ? Say five points about our company? Just read
at least once what company you are going for?
√ Can you describe your best project you have worked with?
√ Do you work on Saturday and Sunday?
√ Which is the biggest team size you have worked with?
√ Can you describe your current project you have worked with?
√ How much time will you need to join our organization? What’s notice period for
your current company?
√ What certifications have you cleared?
√ Do you have pass port size photos, last year mark sheet, previous companies
employment letter, last months salary slip, pass port and other necessary documents.
65
√ What is the most important thing that motivates you?
√ Why you want to leave the previous organization?
√ Which type of job gives you greatest satisfaction?
√ What is the type of environment you are looking for?
√ Do you have experience in project management?
√ Do you like to work as a team or as individual?
√ Describe your best project manager you have worked with?
√ Why should I hire you?
√ Have you been ever fired or forced to resign?
√ Can you explain some important points that you have learnt from your past project
experiences?
√ Have you gone through some unsuccessful projects, if yes can you explain why did
the project fail?
√ Will you be comfortable with location shift? If you have personal problems say no
right at the first stage.... or else within two months you have to read my book again.
√ Do you work late nights? Best answer if there is project deadline yes. Do not
show that it’s your culture to work during nights.
√ Any special achievements in your life till now...tell your best project which you
have done best in your career.
√ Any plans of opening your own software company...Beware do not start pouring
your bill gate’s dream to him.....can create a wrong impression.
Interview rating Sheet
In the CD we have provided Interview rating excel sheet. This sheet will help you in
providing insight of really how much you are ready for JAVA, .NET or SQL Server
Interviews. In the sheet we have seven sections:-
√ Guidelines
√ JAVA
66
√ Java results
√ .NET
√ .NET Results
√ SQL Server
√ SQL Server results
The guidelines sheet defines the guidelines for the rating. For every question you can give
one to five rating. Ratings are rated using the following guidelines :-
0-You have no idea about the question
1-You know only the definition.
2-You know the concept but not the depth of the subject.
3-You know the concept and have partial knowledge about the concept.
4-You know the concept and have in depth knowledge about the subject. But it’s possible
that you will stumble in some in depth question.
5- You are an expert and no one can touch you in this.
The remaining six sections are questions and results. For instance we have the JAVA
sections and the JAVA results section. JAVA section will take in the rating inputs for every
questions and JAVA result will show the output. Same hold true for .NET and SQL
Server.
Figure 0.4 : - Choose rating
67
For every question you need to select ratings.
So go through every question and see how good you are. Definitely you do not have any
one to govern you but finally you have to clear the interview so be fair and know your
results before hand.
Figure 0.5 : - Rating values
Above is figure shows how you have performed in every section and the overall rating.
68
(B)What is a IL?
Twist :- What is MSIL or CIL , What is JIT?
(IL)Intermediate Language is also known as MSIL (Microsoft Intermediate Language) or CIL
(Common Intermediate Language). All .NET source code is compiled to IL. This 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.
(B)What is a CLR?
Full form of CLR is Common Language Runtime and it forms the heart of the .NET framework.
All Languages have runtime and its the responsibility of the runtime to take care of the code
execution of the program. For example VC++ has MSCRT40.DLL,VB6 has MSVBVM60.DLL,
Java has Java Virtual Machine etc. Similarly .NET has CLR. Following are the responsibilities of
CLR
√ Garbage Collection :- CLR automatically manages memory thus eliminating
memory leaks. When objects are not referred GC automatically releases those
memories thus providing efficient memory management.
√ Code Access Security :- CAS grants rights to program depending on the security
configuration of the machine. Example the program has rights to edit or create
a new file but the security configuration of machine does not allow the program
to delete a file. CAS will take care that the code runs under the environment of
machines security configuration.
√ Code Verification :- This ensures proper code execution and type safety while
the code runs. It prevents the source code to perform illegal operation such as
accessing invalid memory locations etc.
√ IL( Intermediate language )-to-native translators and optimizer’s :- CLR uses
JIT and compiles the IL code to machine code and then executes. CLR also
determines depending on platform what is optimized way of running the IL
code.
(B)What is a CTS?
In order that two language communicate smoothly CLR has CTS (Common Type System).Example
in VB you have “Integer” and in C++ you have “long” these datatypes are not compatible so the
interfacing between them is very complicated. In order to able that two different languages can
1. Basic .NET Framework
69
communicate Microsoft introduced Common Type System. So “Integer” datatype in VB6 and
“int” datatype in C++ will convert it to System.int32 which is datatype of CTS. CLS which is
covered in the coming question is subset of CTS.
Note: If you have undergone COM programming period interfacing VB6 application with
VC++ application was a real pain as the datatype of both languages did not have a
common ground where they can come and interface, by having CTS interfacing is smooth.
(B)What is a CLS(Common Language Specification)?
This is a subset of the CTS which all .NET languages are expected to support. It was always a
dream of Microsoft to unite all different languages in to one umbrella and CLS is one step
towards that. Microsoft has defined CLS which are nothing but guidelines that language to follow
so that it can communicate with other .NET languages in a seamless manner.
(B)What is a Managed Code?
Managed code runs inside the environment of CLR i.e. .NET runtime. In short all IL are managed
code. But if you are using some third party software example VB6 or VC++ component they are
unmanaged code as .NET runtime (CLR) does not have control over the source code execution
of the language.
(B)What is a Assembly?
√ Assembly is unit of deployment like EXE or a DLL.
√ An assembly consists of one or more files (dlls, exe’s, html files etc.), and
represents a group of resources, type definitions, and implementations of those
types. An assembly may also contain references to other assemblies. These
resources, types and references are described in a block of data called a manifest.
The manifest is part of the assembly, thus making the assembly self-describing.
√ An assembly is completely self-describing.An assembly contains metadata
information, which is used by the CLR for everything from type checking and
security to actually invoking the components methods. As all information is in the
assembly itself, it is independent of registry. This is the basic advantage as
compared to COM where the version was stored in registry.
√ Multiple versions can be deployed side by side in different folders. These
different versions can execute at the same time without interfering with each
other. Assemblies can be private or shared. For private assembly deployment, the
assembly is copied to the same directory as the client program that references
it. No registration is needed, and no fancy installation program is required.
70
When the component is removed, no registry cleanup is needed, and no uninstall
program is required. Just delete it from the hard drive.
√ In shared assembly deployment, an assembly is installed in the Global Assembly
Cache (or GAC). The GAC contains shared assemblies that are
globally accessible to all .NET applications on the machine.
(A) What are the different types of Assembly?
There are two types of assembly Private and Public assembly. A private assembly is normally used
by a single application, and is stored in the application's directory, or a sub-directory beneath. A
shared assembly is normally stored in the global assembly cache, which is a repository of assemblies
maintained by the .NET runtime. Shared assemblies are usually libraries of code which many
applications will find useful, e.g. Crystal report classes which will be used by all application for
Reports.
(B) What is NameSpace?
Namespace has two basic functionality :-
√ NameSpace Logically group types, example System.Web.UI logically groups
our UI related features.
√ In Object Oriented world many times its possible that programmers will use the
same class name.By qualifying NameSpace with classname this collision can be
avoided.
(B) What is Difference between NameSpace and Assembly?
Following are the differences between namespace and assembly :
√ Assembly is physical grouping of logical units. Namespace logically groups
classes.
√ Namespace can span multiple assembly.
(A)If you want to view a Assembly how do you go about it ?
Twist : What is ILDASM ?
When it comes to understanding of internals nothing can beat ILDASM. ILDASM basically converts
the whole exe or dll in to IL code. To run ILDASM you have to go to "C:\Program Files\Microsoft
71
Visual Studio .NET 2003\SDK\v1.1\Bin". Note that i had v1.1 you have to probably change it
depending on the type of framework version you have.
If you run IDASM.EXE from the path you will be popped with the IDASM exe program as
shown in figure ILDASM. Click on file and browse to the respective directory for the DLL
whose assembly you want to view. After you select the DLL you will be popped with a tree view
details of the DLL as shown in figure ILDASM. On double clicking on manifest you will be able
to view details of assembly, internal IL code etc as shown in Figure Manifest View.
Note : The version number are in the manifest itself which is defined with the DLL or
EXE thus making deployment much easier as compared to COM where the information
was stored in registry. Note the version information in Figure Manifest view.
You can expand the tree for detail information regarding the DLL like methods etc.
Figure:- 1.1 ILDASM
72
Figure :- 1.2 Manifest View
(A) What is Manifest?
Assembly metadata is stored in Manifest. Manifest contains all the metadata needed to do the
following things (See Figure Manifest View for more details):
√ Version of assembly
√ Security identity
√ Scope of the assembly
√ Resolve references to resources and classes.
√ The assembly manifest can be stored in either a PE file (an .exe or .dll) with
Microsoft intermediate language (MSIL) code or in a stand-alone PE file that
contains only assembly manifest information.
73
(B)Where is version information stored of an assembly ?
Version information is stored in assembly in manifest.
(I)Is versioning applicable to private assemblies?
Versioning concept is only applicable to global assembly cache (GAC) as private assembly lie in
their individual folders.
(B) What is GAC ?
Twist :- What are situations when you register .NET assembly in GAC ?
GAC (Global Assembly Cache) is used where shared .NET assembly reside. GAC is used in the
following situations :-
√ If the application has to be shared among several application.
√ If the assembly has some special security requirements like only administrators
can remove the assembly. If the assembly is private then a simple delete of
assembly the assembly file will remove the assembly.
Note :- Registering .NET assembly in GAC can lead to the old problem of DLL hell,
where COM version was stored in central registry. So GAC should be used when absolutely
necessary.
(I) What is the concept of strong names ?
Twist :- How do we generate strong names ?
Twist :- What is use the of SN.EXE ?
Twist :- How do we apply strong names to assembly?
Twist :- How do you sign an assembly?
Strong name is similar to GUID(It is supposed to be unique in space and time) in COM
components.Strong Name is only needed when we need to deploy assembly in GAC. Strong
Names helps GAC to differentiate between two versions. Strong names use public key cryptography
(PKC) to ensure that no one can spoof it.PKC use public key and private key concept.
Following are the step to generate a strong name and sign a assembly :-
74
√ Go to “Visual Studio Command Prompt”. See below figure “Visual studio
Command Prompt”. Note the samples are compiled in 2005 but 2003 users do
not have to worry about it. Same type of command prompt will be seen in
2003 also.
Figure :- 1.3 Visual Studio Command Prompt
√ After you are in command prompt type sn.exe -k “c:\test.snk”.
Figure :- 1.4 Running SN.EXE
75
Figure :- 1.5 Successful output of SN.EXE
76
Figure :- 1.6 Sample view of test.snk file
√ After generation of the file you can view the SNK file in a simple notepad.
√ After the SNK file is generated its time to sign the project with this SNK file.
77
Figure:- 1.7 Click on project and then click on “classlibrary1 properties” menu to sign the assembly
√ Click on project -- properties and the browse the SNK file to the respective
folder and compile the project.
78
Figure :- 1.8 Click on Use a key file to sign the assembly with strong name
(I)How to add and remove an assembly from GAC?
There are two ways to install .NET assembly in GAC:-
√ Using Microsoft Installer Package. You can get download of installer from
http://www.microsoft.com.
√ Using Gacutil. Goto “Visual Studio Command Prompt” and type “gacutil –i
(assembly_name)”, where (assembly_name) is the DLL name of the project.
79
(B) What is Delay signing ?
During development process you will need strong name keys to be exposed to developer which
is not a good practice from security aspect point of view.In such situations you can assign the key
later on and during development you an use delay signing
Following is process to delay sign an assembly:
√ First obtain your string name keys using SN.EXE.
√ Annotate the source code for the assembly with two custom attributes from
System.Reflection: AssemblyKeyFileAttribute, which passes the name of the file
containing the public key as a parameter to its constructor. AssemblyDelaySignAttribute,
which indicates that delay signing, is being used by passing true as a parameter to its
constructor. For example as shown below:
[Visual Basic]
[C#]
[assembly:AssemblyKeyFileAttribute("myKey.snk")]
[assembly:AssemblyDelaySignAttribute(true)]
The compiler inserts the public key into the assembly manifest and reserves space in the PE file for
the full strong name signature. The real public key must be stored while the assembly is built so
that other assemblies that reference this assembly can obtain the key to store in their own assembly
reference.
√ Because the assembly does not have a valid strong name signature, the verification of
that signature must be turned off. You can do this by using the –Vr option with the
Strong Name tool.The following example turns off verification for an assembly called
myAssembly.dll.
Sn –Vr myAssembly.dll
80
√ Just before shipping, you submit the assembly to your organization's signing authority
for the actual strong name signing using the –R option with the Strong Name tool.
The following example signs an assembly called myAssembly.dll with a strong name
using the sgKey.snk key pair.
Sn -R myAssembly.dll sgKey.snk
(B)What is garbage collection?
Garbage collection is a CLR feature which automatically manages memory. Programmers forget
to release the objects while coding ..... Laziness (Remember in VB6 where one of the good
practices is to set object to nothing). CLR automatically releases objects when they are no longer in
use and refernced. CLR runs on non-deterministic to see the unused objects and cleans them. One
side effect of this non-deterministic feature is that we cannot assume an object is destroyed when
it goes out of the scope of a function.we should avoid using destructors because before GC
destroys the object it first executes destructor in that case it will have to wait for code to release
the umanaged resource. resultin in additional delays in GC. So its recommended to implement
IDisposable interface and write cleaup code in Dispose method and call GC.SuppressFinalize
method so instructing GC not to call your constructor. For more details read Why is it preferred
to not use finalize for clean up? in OOPS chapter..
(I) Can we force garbage collector to run ?
System.GC.Collect() forces garbage collector to run. This is not recommended but can be used if
situations arises.
(B)What is reflection?
All .NET assemblies have metadata information stored about the types defined in modules. This
metadata information can be accessed by mechanism called as “Reflection”.System. Reflection
can be used to browse through the metadata information.
Using reflection you can also dynamically invoke methods using System.Type.Invokemember.
Below is sample source code if needed you can also get this code from CD provided, go to
“Source code” folder in “Reflection Sample” folder.
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim Pobjtype As Type
Dim PobjObject As Object
Dim PobjButtons As New Windows.Forms.Button()
Pobjtype = PobjButtons.GetType()
81
For Each PobjObject In Pobjtype.GetMembers
LstDisplay.Items.Add(PobjObject.ToString())
Next
End Sub
End Class
Note :- Sample source code are compiled using VB.NET 2005.
Figure:- 1.9 Sample reflection display
Sample source code uses reflection to browse through “Button” class of “Windows.Forms”. If
you compile and run the program following is output as shown in “Sample Reflection Display”.
Using reflection you can also dynamically invoke a method using “System.Type.InvokeMember”.
Note :- System.Type.InvokeMember is left as homework for readers. Believe me you will
enjoy doing it yourself and the concept of reflection will be clearer.
(P)What are different types of JIT ?
Note :- This question can only be asked when the interviewer does not know what he wants.
It was asked to me in one of interview and for 15 minutes he was roaming around the
82
same question in order to get answer from me (requirement was for a simple database
project). Beware of such companies and interviewers you can land up no where.
JIT compiler is a part of the runtime execution environment.
In Microsoft .NET there are three types of JIT compilers:
√ Pre-JIT :- Pre-JIT compiles complete source code into native code in a single
compilation cycle. This is done at the time of deployment of the application.
√ Econo-JIT :- Econo-JIT compiles only those methods that are called at runtime.
However, these compiled methods are removed when they are not required.
√ Normal-JIT :- Normal-JIT compiles only those methods that are called at runtime.
These methods are compiled the first time they are called, and then they are stored in
cache. When the same methods are called again, the compiled code from cache is
used for execution.
(B) What are Value types and Reference types ?
Value types directly contain their data which are either allocated on the stack or allocated in-line in
a structure.
Reference types store a reference to the value's memory address, and are allocated on the heap.
Reference types can be self-describing types, pointer types, or interface types.
Variables that are value types each have their own copy of the data, and therefore operations on
one variable do not affect other variables. Variables that are reference types can refer to the same
object; therefore, operations on one variable can affect the same object referred to by another
variable. All types derive from the System.Object base type.
(B) What is concept of Boxing and Unboxing ?
Boxing permits any value type to be implicitly converted to type object or to any interface type
implemented by value type. Boxing is a process in which object instances are created and copy
values in to that instance.
Unboxing is vice versa of boxing operation where the value is copied from the instance in to
appropriate storage location.
Below is sample code of boxing and unboxing where integer data type is converted in to object
and then vice versa.
Dim x As Integer
83
Dim y As Object
x = 10
‘ boxing process
y = x
‘ unboxing process
x = y
(B) What is the difference between VB.NET and C# ?
Well this is the most debatable issue in .NET community and people treat there languages like
religion. Its a subjective matter which language is best. Some like VB.NET’s natural style and some
like professional and terse C# syntaxes. Both use the same framework and speed is also very much
equivalents. But still let’s list down some major differences between them :-
Advantages VB.NET :-
√ Has support for optional parameters which makes COM interoperability much easy.
√ With Option Strict off late binding is supported.Legacy VB functionalities can be
used by using Microsoft.VisualBasic namespace.
√ Has the WITH construct which is not in C#.
√ The VB.NET part of Visual Studio .NET compiles your code in the background.
While this is considered an advantage for small projects, people creating very large
projects have found that the IDE slows down considerably as the project gets larger.
Advantages of C#
√ XML documentation is generated from source code but this is now been incorporated
in Whidbey.
√ Operator overloading which is not in current VB.NET but is been introduced in
Whidbey.
√ Use of this statement makes unmanaged resource disposal simple.
√ Access to Unsafe code. This allows pointer arithmetic etc, and can improve
performance in some situations. However, it is not to be used lightly, as a lot of the
normal safety of C# is lost (as the name implies).This is the major difference that you
can access unmanaged code in C# and not in VB.NET.
84
* How much ever this book tries it can not match the huge variations of questions that have
been asked in.NET interviews.But note there will be variations and they will map to some
question of this book.
(I)What is the difference between System exceptions and Application
exceptions?
All exception derives from Exception Base class. Exceptions can be generated programmatically
or can be generated by system. Application Exception serves as the base class for all applicationspecific
exception classes. It derives from Exception but does not provide any extended functionality.
You should derive your custom application exceptions from Application Exception.
Application exception is used when we want to define user defined exception, while system
exception is all which is defined by .NET.
Figure :- 1.10 Exception Hierarchy
85
Note:- Frankly I have always relied on using Microsoft exception application blocks. As
such I have never used application exception; I think most of the work is done using System
exception classes.
(I)What is CODE Access security?
CAS is part of .NET security model that determines whether or not a piece of code is allowed to
run and what resources it can use while running. Example CAS will allow an application to read
but not to write and delete a file or a resource from a folder..
(I)What is a satellite assembly?
Refer Localization chapter for more details
(A)How to prevent my .NET DLL to be decompiled?
By design .NET embeds rich Meta data inside the executable code using MSIL. Any one can easily
decompile your DLL back using tools like ILDASM (owned by Microsoft) or Reflector for
.NET which is a third party. Secondly there are many third party tools which make this decompiling
process a click away. So any one can easily look in to your assemblies and reverse engineer them
back in to actual source code and understand some real good logic which can make it easy to
crack your application.
The process by which you can stop this reverse engineering is using “obfuscation”. It’s a technique
which will foil the decompilers. There are many third parties (XenoCode, Demeanor for .NET)
which provide .NET obfuscation solution. Microsoft includes one that is Dotfuscator Community
Edition with Visual Studio.NET.
Note: - I leave this as homework to reader’s compile, a DLL obfuscate it using
“Dotfuscator Community Edition” which comes with Visual Studio.NET and try viewing
the same using ILDASM.
(I) What is the difference between Convert.toString and .toString()
method ?
Just to give an understanding of what the above question means seethe below code.
int i =0;
MessageBox.Show(i.ToString());
MessageBox.Show(Convert.ToString(i));
86
We can convert the integer “i” using “i.ToString()” or “Convert.ToString” so what’s the difference.
The basic difference between them is “Convert” function handles NULLS while “i.ToString()”
does not it will throw a NULL reference exception error. So as good coding practice using
“convert” is always safe.
(A) What is Native Image Generator (Ngen.exe)?
The Native Image Generator utility (Ngen.exe) allows you to run the JIT compiler on your assembly's
MSIL and generate native machine code which is cached to disk. After the image is created .NET
runtime will use the image to run the code rather than from the hard disk. Running Ngen.exe on
an assembly potentially allows the assembly to load and execute faster, because it restores code
and data structures from the native image cache rather than generating them dynamically.
Below are some points to be remembered for Native Image Generator:-
√ Native images load faster than MSIL because JIT compilation and type-safety verification
is eliminated.
√ If you are sharing code between process Ngen.exe improves the performance
significantly. As Native image generated Windows PE file so a single DLL file can be
shared across applications. By contrast JIT produced code are private to an assembly
and can not be shared.
√ Native images enable code sharing between processes.
√ Native images require more storage space and more time to generate.
√ Startup time performance improves lot. We can get considerable gains when applications
share component assemblies because after the first application has been started the
shared components are already loaded for subsequent applications. If assemblies in
an application must be loaded from the hard disk, does not benefit as much from
native images because the hard disk access time shadows everything.
√ Assemblies in GAC do not benefit from Native image generator as the loader performs
extra validation on the strong named assemblies thus shadowing the benefits of Native
Image Generator.
√ If any of the assemblies change then Native image should also be updated.
√ You should have administrative privilege for running Ngen.exe.
√ While this can fasten your application startup times as the code is statically compiled
but it can be somewhat slower than the code generated dynamically by the JIT compiler.
So you need to compare how the whole application performance with Ngen.exe and
with out it.
87
To run Ngen.exe, use the following command line.
ngen.exe install
This will synchronously precompile the specified assembly and all of its dependencies. The generated
native images are stored in the native image cache.
In .NET Framework 2.0 there is a service (.NET Runtime Optimization Service) which can
precompile managed assemblies in the background. You can schedule your assemblies to be
precompiled asynchronously by queueing them up with the NGEN Service. Use the following
command line.
ngen.exe install /queue:
Assemblies which are critical to your application's start up time should either be precompiled
synchronously or asynchronously with priority 1. Priority 1 and 2 assemblies are precompiled
aggressively while Priority 3 assemblies are only precompiled during machine idle-time.
Synchronously precompiling your critical assemblies guarantees that the native images will be
available prior to the first time your end user launches the application but increases the time taken
to run your application's set up program.
You can uninstall an assembly and its dependencies (if no other assemblies are dependent on
them) from the native image cache by running the following command.
ngen.exe uninstall
Native images created using Ngen.exe cannot be deployed; instead they need to be created on the
end user's machine. These commands therefore need to be issued as part of the application's
setup program. Visual Studio .NET can be used to implement this behavior by defining custom
actions in a Microsoft Installer (MSI) package.
Note: - One of the things the interviewer will expect to be answered is what scenario will
use a Native Image generator. Best is to say that we first need to test the application
performance with Native Image and with out it and then make a decision.
(A) If we have two version of same assembly in GAC how do we make a
choice ?
Note: - I really want to explain this in depth for two reasons. First I have seen this
question been frequently asked and second it’s of real practical importance. I have faced this
in every of my .NET projects...So let’s try to get this fundamental not in our brain but in
our heart.Thanks Zeeshan Khan ( it_zeeshanlko@yahoo.com) to correct me regarding some
corrections in this question.
88
OK first let’s try to understand what the interviewer is talking about. Let’s say you have made an
application and its using a DLL which is present in GAC. Now for some reason you make second
version of the same DLL and put it in GAC. Now which DLL does the application refer? Ok by
default it always uses the version by which you have compiled you application in IDE. But you
want that it should actually use the older version.
So first we answer in short. You need to specify “bindingRedirect” in your config file. For instance
in the below case “ClassLibraryVersion” has two versions “1.1.1830.10493” and “1.0.1830.10461”
from which “1.1.1830.10493” is the recent version. But using the bindingRedirect we can specify
saying “1.0.1830.10461” is the new version. So the client will not use “1.1.1830.10493”.
publicKeyToken="b035c4774706cc72"
culture="neutral"/>
newVersion= "1.0.1830.10461"/>
Ok now I will try to answer it in long way by doing a small sample project. Again this project will
be done using C#. So in CD you can find the “Versioning” project. Below is the solution display,
it has two projects one the windows client project ( “WindowsVersioningCSharp” ) and second
the class library project ( “ClassLibraryVersion” ) which will be installed in GAC with two versions.
89
Figure 1.11: - Solution files for the versioning project.
Our first primary goal is to put two different versions of the same DLL in GAC. So let’s make a
walk through of “ClassLibraryVersion” project. It’s a very simple class which has “Version” function
which just sends a string “This is old Version”. Second we will also just ensure that the assembly
version is “1.0” in the “AssemblyInfo.cs”.
90
Figure 1.12 : - Assembly Version 1.0
Second in order that we can put a DLL in GAC we need to create generate strong names and
assign the same to the class. For instance, in below figure I have generated the strong name in
“mykey.snk” and assigned the same to the DLL.
91
Figure 1.13 : - Strong naming your DLL
Finally we need to install the same in GAC using “gacutil” tool. Below is the figure which shows
the same. This installs one version of “ClassLibraryVersion.dll” in GAC.
Figure 1.14 : - Install the same in GAC
Now it is time to create a second version of the DLL. So here is what we will do first we will just
return a different string value for this new version DLL. You can see in the below figure I have
changed the string to return “This is New Version”. Secondly we also need to change the
AssemblyVersion to “1.1.*” in the “AssemblyInfo.cs” file. After that again compile the DLL and
run the “gacutil” to register this second version of the “ClasLibraryVersion.dll”.
92
Figure 1.15 : - Rename to Assembly Version 1.1
Now when we view the GAC we can see two version of “ClassLibraryVersion” i.e. “1.1.1832.2619”
and “1.0.1832.2172” (see figure below).
Figure 1.16 : - Two version of “ClassLibraryVersion” dll.
93
Now that we have created the environment of two version of the same DLL in GAC its time to
look at how client can make a choice between those versions. We need to generate “publicKeyToken”
in order to move ahead. Below is a sample print screen which shows how we can use “sn.exe” to
generated the public key token. Note the “-T” parameter.
Figure 1.17 : - Get the PublicKeyToken
Now let’s look at the client which will consume this DLL. I have just added windows form and
a button to the same. In the button click we will try to call the version function and display the
data. So below is the code in the first step we create the object of “ClassLibraryVersion.Class1”
and in the second step we call the “Version” function to display the data.
Figure 1.18 : - Client code calling the GAC class.
Now comes the most important part of the whole thing the “app.config” file which will decide
which version should be used. So add a new “app.config” file in the project and add the
“AssemblyBinding” section as show below. So you need to specify the following things:-
√ Assembly name in the “name” attribute of “assemblyIdentity” section.
√ Specify the “publicKeyToken” value in the “assemblyIndentity” section which was generated
using “sn.exe –T ‘dllname.dll’ “.
√ Specify the “oldVersion” and “newVersion” values in the “bindingRedirect” element. So
what ever version we want the client to use should be specified in the “newVersion” attribute.
94
You can see from the figure below I have specified that client should use “1.0.*” version. So
the client will display “This is old Version”.
Figure 1.19 : - App.config file using the BindingRedirect
If you run the source code with changing version numbers you can see the below two message
boxes on different version numbers.“This is old version” will be displayed when “newVersion”
value is “1.0.1832.5411” and “This is new Version” will be displayed when “newVersion” value is
“1.1.1832.5427”.
95
Figure 1.20 : - Different Display depending on version numbers
Note: - Source code is provided in “versioning” folder. But as you compile the DLL’s
different publicToken numbers are created so you need to run the sn.exe in your machine and
change the token number accordingly in the “App.config” file.
(A)What is CodeDom?
“CodeDom” is an object model which represents actually a source code. It is designed to be
language independent - once you create a “CodeDom” hierarchy for a program we can then
generate the source code in any .NET compliant language. So let’s try to do something real
practical and simple to just get a feel of how powerful “CodeDom” is.
Note :- You can get the source code in CD in “CodeDom” folder.
We will try to generate the following code below. The below code which will be generated does
not do anything special buy just displays a hello message and waits for the key to be pressed.
namespace InterviewQuestions
{
using System;
public class EntryPoint
{
public static void Main()
{
System.Console.WriteLine(“Hello from Interview Question series”);
System.Console.ReadLine();
96
}
}
}
The “Codedom” folder in the CD has one “GenerateCode” method which returns
“CodeCompileUnit” object. “CodeDom” is nothing but a full DOM model where every object
in the structure represents a code unit. I have put comments the code so that the code is self
understandable. I have commented the code below so that readers can follow what is exactly
happening. When you click the button it generates the “MyCode.cs” and also compiles the
“Mycode.exe” in the “bin” folder.
private CodeCompileUnit GenerateCode()
{
// Definition of the Main method which will be entry point
CodeEntryPointMethod objMainMethod = new CodeEntryPointMethod();
objMainMethod.Name = “Main”;
// generate this expression: Console
CodeTypeReferenceExpression consoleType = new CodeTypeReferenceExpression();
consoleType.Type = new CodeTypeReference(typeof(Console));
// Set up the argument list to pass to Console.WriteLine()
CodeExpression[] writeLineArgs = new CodeExpression[1];
CodePrimitiveExpression arg0 = new CodePrimitiveExpression(“Hello from Interview
Question series”);
writeLineArgs[0] = arg0;
// generate this statement: Console.WriteLine(message)
CodeMethodReferenceExpression writeLineRef = new
CodeMethodReferenceExpression(consoleType, “WriteLine”);
97
CodeMethodInvokeExpression writeLine = new
CodeMethodInvokeExpression(writeLineRef, writeLineArgs);
// generate this statement: Console.ReadLine()
CodeMethodReferenceExpression readLineRef = new
CodeMethodReferenceExpression(consoleType, “ReadLine”);
CodeMethodInvokeExpression readLine = new
CodeMethodInvokeExpression(readLineRef);
// Add Main() method to a class
CodeTypeDeclaration theClass = new CodeTypeDeclaration();
theClass.Members.Add(objMainMethod);
theClass.Name = “EntryPoint”;
// Add both the code of WriteLine and Readline
objMainMethod.Statements.Add(writeLine);
objMainMethod.Statements.Add(readLine);
// Add namespace and add class
CodeNamespace ns = new CodeNamespace(“InterviewQuestions”);
ns.Imports.Add(new CodeNamespaceImport(“System”));
ns.Types.Add(theClass);
// Generate the Compile Unit
CodeCompileUnit unit = new CodeCompileUnit();
unit.Namespaces.Add(ns);
98
Sample provided is very basic but in actual project using codedom can be very complicated.
Projects where you need auto code generation codedom can be a right choice. Beware of high
bulky architecture created due to codedom.
99
(I) How can we use COM Components in .NET?
Twist : What is RCW ?
.NET components communicate with COM using RCW (Runtime Callable Wrapper). Following
are the ways with which you can generate RCW :-
√ Adding reference in Visual Studio.net. See figure below (Adding reference using VS.NET
2005). Wrapper class is generated and placed in the “BIN” directory.
Figure :- 2.1 Adding Reference using VS.NET 2005
2..NET Interoperability
100
√ Using Type library import tool. Tlbimp.exe yourname.dll.
√ Using interopservices.System.runtime.Interopservices namespace contains class
TypeLib Converter which provides methods to convert COM classes and interface in
to assembly metadata.
√ Make your custom wrappe rs.If your COM component does not have type library
then the only way to communicate is writing custom wrappers. That means
communicating directly with COM components.
(I) Once I have developed the COM wrapper do I have to still register the
COM in registry?
Yes.
(A)How can we use .NET components in COM?
Twist :- What is CCW (COM callable wrapper) ?
Twist :- How do we ensure that .NET components is compatible with COM ?
.NET components can not be used in straight forward way with COM. You will need to create
CCW in order that COM components communicate with .NET assemblies. Following are the
different approaches to implement it :-
√ Explicitly declare interfaces..
Public Interface ICustomer
Property CustomerName() As String
Property CustomerCode() As String
Sub AddCustomer()
End Interface
Public Class Customer
Implements ICustomer
Private PstrCustomerName As String
Private PstrCustomerCode As String
Public Sub AddCustomer() Implements ICustomer.AddCustomer
Try
‘ addin of database code can go here
Catch ex As Exception
Throw ex
End Try
101
End Sub
Public Property CustomerCode() As String Implements
ICustomer.CustomerCode
Get
Return PstrCustomerCode
End Get
Set(ByVal value As String)
PstrCustomerCode = value
End Set
End Property
Public Property CustomerName() As String Implements
ICustomer.CustomerName
Get
Return PstrCustomerName
End Get
Set(ByVal value As String)
PstrCustomerName = value
End Set
End Property
Public Sub New()
End Sub
End Class
Note :- Source code of this is provided in CD in SOURCECODE folder in
COMCALLABLEWRAPPER
The above customer class is going to be used by COM components so all the properties and
methods are declared in interface and implemented in the customer class. Customer Name.Customer
Code and AddCustomer are first declared in ICustomer and then implemented in Customer
Class. Also note that the class must have a default constructor.
Note :- All source code in this book is provided in VB.NET that does not mean that
author of the book does not like C#. In fact the main programming language of author is
C#. In order to keep things small I have only used one language. But the conversion is so
seamless that it is of least matter.
102
√ The second way to create CCW is by using InteropServices attributes. Here interfaces
are created automatically.
Following are different type of class attributes :
None:-No class interface is generated for the class. This is default setting when you do not specify
anything.
AutoDispatch :- Interface that supports IDispatch is created for the class. However, no type
information is produced.
AutoDual :- A dual interface is created for the class. Type information is produced and made
available in the type library.
Below in the source code we have used the third attribute.
Imports System.Runtime.InteropServices
Public Class ClsCompliant
End Class
Other than class attributes defined up there are other attributes with which you can govern other
part of assembly.Example “GuidAttribute” allows you to specify the GUID,
“ComVisibleAttribute” can be used to hide .NET types from COM etc. All attributes are not in
scope of the book as this is a interview questions book refer MSDN for more details.
√ Once .NET assembly is created using either interface or using interopservices method
we need to create a COM type library using Type library export tool.
Tlbexp (AssemblyName)
√ The final thing is registering the CCW in registry using regasm tool.
regasm AssemblyName [Options]
√ Finally refer the TLB in your COM IDE Below is figure showing VB6 IDE referencing
the DLL
Note :- DLL and TLB should be in same directory where the application is executed.
103
Figure :- 2.2 VB6 IDE referencing the CCW
(A)How can we make Windows API calls in .NET?
Windows API call are not COM based and they are invoked through Platform Invoke Services.
Declare StringConversionType (Function | Sub) MethodName Lib "DllName" ([Args])
As Type
√ StringConversionType is for what type of conversion should take place. Either we
can specify Unicode to convert all strings to Unicode values, or Auto to convert
strings according to the .NET runtime rules.
√ MethodName is the name of the API to call.
√ DllName is the name of the DLL.
√ Args are any arguments to the API call.
104
√ Type is the return type of the API call.
Below is a sample code for VB.NET which uses Sleep windows API for delaying.
Public Class Form1
Declare Auto Sub Sleep Lib “kernel32.dll” (ByVal dwMilliseconds
As Long)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
MessageBox.Show(“ start sleeping for 5000 Milli
seconds.....”)
Sleep(5000)
MessageBox.Show(“ end of sleeping.....”)
End Sub
End Class
Note:- Source code is provided in CD in “APICALL” folder
In VB.NET we use declare keyword but in C# it goes little bit different, we use DLLIMPORT
here.
Note :- We have interopservices in this and EXTERN keyword.
#region Using directives
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
#endregion
namespace CSharpCode
{
partial class Form1 : Form
{
[DllImport(“Kernel32.dll”)]
static extern int Sleep(long dwMilliseconds);
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
105
{
MessageBox.Show(“Starting of 5000 ms...”);
Sleep(5000);
MessageBox.Show(“End of 5000 ms...”);
}
}
}
(B)When we use windows API in .NET is it managed or unmanaged code
?
Windows API in .NET is unmanaged code.
Note:- Even though VB6 and V C++ has gone off still many people do ask these old
questions again and again. Still there are decent old application which are working with
COM very much fine. So interviewer still asks you these questions so that those
application’s can be ported to .NET. So let’s play some old music... By the way my
favourite music is Kishore, what’s yours???
(I)What is COM ?
Microsoft’s COM is a technology for component software development. It is a binary standard
which is language independent. DCOM is a distributed extension of COM.
(A) What is Reference counting in COM ?
Reference counting is a memory management technique used to count how many times an object
has a pointer referring to it. The first time it is created, the reference count is set to one. When the
last reference to the object is nulled, the reference count is set to zero and the object is deleted.
Care must be exercised to prevent a context switch from changing the reference count at the time
of deletion. In the methods that follow, the syntax is shortened to keep the scope of the discussion
brief and manageable.
(A) Can you describe IUKNOWN interface in short ?
Every COM object supports at least one interface, the IUnknown interface. All interfaces are
classes derived from the base class IUnknown. Each interface supports methods access data and
perform operations transparently to the programmer. For example, IUnknown supports three
methods, AddRef, Release(), and QueryInterface(). Suppose that pinterf is a pointer to an IUnknown.
pinterf->AddRef() increments the reference count. pinterf->Release() decrements the reference
count, deleting the object when the reference count reaches zero. pinterf->QueryInterface( IDesired,
106
pDesired) checks to see if the current interface (IUnknown) supports another interface, IDesired,
creates an instance (via a call to CoCreateInstance()) of the object if the reference count is zero (the
object does not yet exist), and then calls pDesired->AddRef() to increment the reference count
(where pDesired is a pointer to IDesired) and returns the pointer to the caller.
(I)Can you explain what is DCOM ?
DCOM differs from COM in that it allows for creating objects distributed across a network, a
protocol for invoking that object’s methods, and secures access to the object. DCOM provides a
wrapper around COM, hence it is a backwards compatible extension. DCOM uses Remote
Procedural Calls (RPC) using Open Software Foundation’s Distributed Computing Environment.
These RPC are implemented over TCP/IP and named pipes. The protocol which is actually being
used is registered just prior to use, as opposed to being registered at initialization time. The reason
for this is that if a protocol is not being used, it will not be loaded.
In order to inform an object that the client is still alive, periodic pinging is used. Hence, when the
client has died and no ping has been received (to refresh it) before the expiration time, the server
object will perform some clean up tasks (including decrementing its reference count).
Since RPC across a network are typically slow (compared to processes residing on the same
machine), DCOM sends multiple requests in the same call. For example, in COM, the program
performs a QueryInterface, one interface at a time. In DCOM, multiple QueryInterfaces are all
clustered into one call.
This clustering optimization trick is also used when creating an instance of the object and serializing
it with data. Since these two operations usually occur together, DCOM allows one method which
will perform both operations in one call without waiting for an acknowledgment from the first
task before performing the second one.
Similarly, when a client pings its server object, he can do it in one call. Moreover, if there are
multiple clients sending pings to multiple servers, an optimization is made where the multiple
pings going to the same object are consolidated into just one ping. This is to cut down on the use
of precious bandwidth used only for pinging.
The client has the control to set the computer which will be responsible for the lifetime of the
object. That is to say, these objects are not created just somewhere where the system resources and
access privileges allow for it.
Call security is implemented in all four ways: authentication (to prevent false clients from
impersonating the true client), authorization (to insure that a client only does what it is authorized
to do), data integrity (to insure that data was not tampered with during transit) and data privacy (to
insure that only designated sources can read it). The security issues are handled as they are on
107
operating systems. The client gives the server various access privileges to access memory or disk
space
(B)How do we create DCOM object in VB6?
Using the CreateObject method you can create a DCOM object. You have to put the server
name in the registry.
(A)How to implement DTC in .NET ?
DTC is implemented using COM+.
Following are the steps to implement COM + in .NET :-
√ “EnterpriseService” namespace has all the classes by which we can implement DTC
in .NET. You have to add reference “EnterpriseService” namespace.
108
Figure :- 2.3 Add reference to EnterpriseServices.
√ You class must derive from “Serviced Component” object.
√ Then you have to define your class with the transaction attribute
(For all transaction attribute look the down question)
[ Transaction(TransactionOption.RequiresNew) ]
√ After the class level transaction type is defined. Its time to define at the method level
the AutoComplete attribute. Autocomplete attribute says that if no exception is thrown
then mark its part of the transaction as being okay. This helps cut down on the
amount of code required. If the implementation sets AutoComplete to false, or
109
omits it all together, then we would need to manage the transaction manually. To
manually control the transaction you will need to use the ContextUtil class and its static
members. Following is small snippet of ContextUtil: -
public void SampleFunction()
{
try
{
// Do something to a database
// ...
// Everything okay so far Commit the transaction
ContextUtil.SetComplete();
}
catch(Exception)
{
// Something went wrong Abort and Rollback the Transaction.
ContextUtil.SetAbort();
}
}
√ Component derived from “ServicedComponent” should be strong named as they
run under COM+.
√ Once the classes are compiled using the string name.Register the Component in COM+
services using
regsvcs c:\DllPath\TransactionComponent.dll
√ You can see that the component is registered using the COM+ explorer.
(A)How many types of Transactions are there in COM + .NET ?
110
There are 5 transactions types that can be used with COM+. Whenever an object is registered with
COM+ it has to abide either to these 5 transaction types.
Disabled: - There is no transaction. COM+ does not provide transaction support for this
component.
Not Supported: - Component does not support transactions. Hence even if the calling component
in the hierarchy is transaction enabled this component will not participate in the transaction.
Supported: - Components with transaction type support will be a part of the transaction. This will
be only if the calling component has an active transaction. If the calling component is not transaction
enabled this component will not start a new transaction.
Required: - Components with this attribute require a transaction i.e. either the calling should have
a transaction in place else this component will start a new transaction.
Required New: - Components enabled with this transaction type always require a new transaction.
Components with required new transaction type instantiate a new transaction for themselves every
time.
(A)How do you do object pooling in .NET ?
COM+ reduces overhead by creating object from scratch. So in COM+ when object is activated
its activated from pool and when its deactivated it’s pushed back to the pool. Object pooling is
configures by using the “ObjectPoolingAttribute” to the class.
Note:- When a class is marked with objectpooling attribute it can not be inherited.
ObjectPooling(MinPoolSize := 2, MaxPoolSize := 5, CreationTimeout := 20000)> _
Public Class testingclass
Inherits ServicedComponent
Public Sub DoWork()
' Method contents go here.
End Sub
End Class
Above is a sample code which has the “ObjectPooling” attribute defined. Below is a sample code
which uses the class.
111
Public Class App
Overloads Public Shared Sub Main(args() As String)
Dim xyz As New TestObjectPooling()
xyz.doWork()
ServicedComponent.DisposeObject (xyz)
End Sub
End Class
Above is a sample code which uses the object pooled object. Note the DisposeObject() This
ensures its safe return to the object pool.
(A)What are types of compatibility in VB6?
There are three possible project compatibility settings:
√ No Compatibility
√ Project Compatibility
√ Binary Compatibility
No Compatibility
With this setting, new class ID’s, new interface ID’s and a new type library ID will be generated by
VB each time the ActiveX component project is compiled. This will cause any compiled client
components to fail (with error 429!) and report a missing reference to the 'VB ActiveX Test
Component' when a client project is loaded in the VB IDE.
Note :- Use this setting to compile the initial release of a component to other developers.
Project Compatibility
With this setting, VB will generate new interface ID’s for classes whose interfaces have changed,
but will not change the class ID’s or the type library ID. This will still cause any compiled client
components to fail (with error 429!) but will not report a missing reference to the 'VB ActiveX
Test Component' when a client project is loaded in the VB IDE. Recompilation of client
components will restore them to working order again.
Note:- Use this setting during the initial development and testing of a component within
the IDE and before the component is released to other developers.
112
Binary Compatibility
VB makes it possible to extend an existing class or interface by adding new methods and properties
etc. and yet still retain binary compatibility. It can do this, because it silently creates a new interface
ID for the extended interface and adds registration code to register the original interface ID but
with a new Forward key containing the value of this new interface ID. COM will then substitute
calls having the old ID with the new ID and hence applications built against the old interface will
continue to work (assuming the inner workings of the component remain backward compatible!).
With this setting, VB will not change any of the existing class, interface or type library ID’s, however
in order that it can do so, VB requires the project to specify an existing compiled version that it can
compare against to ensure that existing interfaces have not been broken
(A)What is equivalent for regsvr32 exe in .NET ?
Regasm
113
(B)What is Multi-tasking ?
It’s a feature of modern operating systems with which we can run multiple programs at
same time example Word, Excel etc.
(B)What is Multi-threading ?
Multi-threading forms subset of Multi-tasking. Instead of having to switch between
programs this feature switches between different parts of the same program. Example
you are writing in word and at the same time word is doing a spell check in background.
(B)What is a Thread ?
A thread is the basic unit to which the operating system allocates processor time.
(B)Did VB6 support multi-threading ?
While VB6 supports multiple single-threaded apartments, it does not support a freethreading
model, which allows multiple threads to run against the same set of data.
(B)Can we have multiple threads in one App domain ?
One or more threads run in an AppDomain. An AppDomain is a runtime representation
of a logical process within a physical process. Each AppDomain is started with a single
thread, but can create additional threads from any of its threads.
Note :- All threading classes are defined in System.Threading namespace.
(B)Which namespace has threading ?
Systems.Threading has all the classes related to implement threading. Any .NET application
who wants to implement threading has to import this namespace.
Note :- .NET program always has at least two threads running one is the main program
and second is the garbage collector.
(I)Can you explain in brief how can we implement threading ?
3. Threading
114
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim pthread1 As New Thread(AddressOf Thread1)
Dim pthread2 As New Thread(AddressOf Thread2)
pthread1.Start()
pthread2.Start()
End Sub
Public Sub Thread1()
Dim pintcount As Integer
Dim pstr As String
pstr = “This is first thread”
Do Until pintcount > 5
lstThreadDisplay.Items.Add(pstr)
pintcount = pintcount + 1
Loop
End Sub
Public Sub Thread2()
Dim pintcount As Integer
Dim pstr As String
pstr = “This is second thread”
Do Until pintcount > 5
lstThreadDisplay.Items.Add(pstr)
pintcount = pintcount + 1
Loop
End Sub
Above is a sample code which shows simple sample code for threading. Above sample
code can be found in “Threading” folder in CD provided. Above sample has two methods
“Thread1()” and “Thread2()” which are started in multi-threaded mode in Form load
event of the sample.
Note :- If you run the sample you will see that sometimes the first thread runs first and
then the second thread.This happens because of thread priorities . The first thread is run
with highest priority.
(A)How can we change priority and what the levels of priority are
provided by .NET ?
115
Thread Priority can be changed by using Threadname.Priority = ThreadPriority.Highest.
In the sample provided look out for code where the second thread is ran with a high
priority.
Following are different levels of Priority provided by .NET :-
√ ThreadPriority.Highest
√ ThreadPriority.AboveNormal
√ ThreadPriority.Normal
√ ThreadPriority.BelowNormal
√ ThreadPriority.Lowest
(A)What does AddressOf operator do in background ?
The AddressOf operator creates a delegate object to the BackgroundProcess method. A
delegate within VB.NET is a type-safe, object-oriented function pointer. After the thread
has been instantiated, you begin the execution of the code by calling the Start() method
of the thread
(A)How can you reference current thread of the method ?
"Thread.CurrentThread" refers to the current thread running in the
method."CurrentThread" is a public static property.
(I) What's Thread.Sleep() in threading ?
Thread's execution can be paused by calling the Thread.Sleep method. This method takes
an integer value that determines how long the thread should sleep. Example
Thread.CurrentThread.Sleep(2000).
(A)How can we make a thread sleep for infinite period ?
You can also place a thread into the sleep state for an indeterminate amount of time by
calling Thread.Sleep (System.Threading.Timeout.Infinite). To interrupt this sleep you can
call the Thread.Interrupt method.
(A) What is Suspend and Resume in Threading ?
116
It is Similar to Sleep and Interrupt. Suspend allows you to block a thread until another
thread calls Thread.Resume. The difference between Sleep and Suspend is that the latter
does not immediately place a thread in the wait state. The thread does not suspend until
the .NET runtime determines that it is in a safe place to suspend it. Sleep will immediately
place a thread in a wait state.
Note :- In threading interviews most people get confused with Sleep and Suspend. They look
very similar.
(A)What the way to stop a long running thread ?
Thread.Abort() stops the thread execution at that moment itself.
(A) How do I debug thread ?
Figure :- 3.1 Debug thread window
This window is only seen when the program is running in debug mode. In windows one of
the window is “Threads”.
117
(A)What is Thread.Join() in threading ?
There are two versions of Thread.Join :-
√ Thread.join().
√ Thread.join(Integer) this returns a Boolean value.
The Thread.Join method is useful for determining if a thread has completed before starting
another task. The Join method waits a specified amount of time for a thread to end. If the
thread ends before the time-out, Join returns true; otherwise it returns False. Once you
call Join, the calling procedure stops and waits for the thread to signal that it is done.
Example you have "Thread1" and "Thread2" and while executing 'Thread1" you call
"Thread2.Join()".So "Thread1" will wait until "Thread2" has completed its execution
and the again invoke "Thread1".
Thread.Join(Integer) ensures that threads do not wait for a long time. If it exceeds a
specific time which is provided in integer the waiting thread will start.
(A)What are Daemon threads and how can a thread be created as
Daemon?
Daemon thread's run in background and stop automatically when nothing is running
program. Example of a Daemon thread is "Garbage collector". Garbage collector runs
until some .NET code is running or else its idle.
You can make a thread Daemon by
Thread.Isbackground=true
(A) When working with shared data in threading how do you implement
synchronization ?
There are certain situtations that you need to be careful with when using threads. If two
threads (e.g. the main and any worker threads) try to access the same variable at the same
time, you'll have a problem. This can be very difficult to debug because they may not
always do it at exactly the same time. To avoid the problem, you can lock a variable
118
before accessing it. However, if the two threads lock the same variable at the same time,
you'll have a deadlock problem.
SyncLock x
'Do something with x
End SyncLock
(I)Can we use events with threading ?
Yes, you can use events with thread; this is one of the techniques to synchronize one
thread with other.
(A)How can we know a state of a thread?
"ThreadState" property can be used to get detail of a thread. Thread can have one or a
combination of status.System.Threading. Threadstate enumeration has all the values to
detect a state of thread. Some sample states are Isrunning, IsAlive, suspended etc.
(A) What is use of Interlocked class ?
Interlocked class provides methods by which you can achieve following functionalities :-
√ Increment Values.
√ Decrement values.
√ Exchange values between variables.
√ Compare values from any thread.
in a synchronization mode.
Example :- System.Threading.Interlocked.Increment(IntA)
(A) What is a monitor object?
Monitor objects are used to ensure that a block of code runs without being interrupted by
code running on other threads. In other words, code in other threads cannot run until
code in the synchronized code block has finished.
SyncLock and End SyncLock statements are provided in order to simplify access to monitor
object.
119
(A) What are wait handles ?
Twist :- What is a mutex object ?
Wait handles sends signals of a thread status from one thread to other thread. There are
three kind of wait modes :-
√ WaitOne.
√ WaitAny.
√ WaitAll.
When a thread wants to release a Wait handle it can call Set method. You can use Mutex
(mutually exclusive) objects to avail for the following modes. Mutex objects are
synchronization objects that can only be owned by a single thread at a time. Threads
request ownership of the mutex object when they require exclusive access to a resource.
Because only one thread can own a mutex object at any time, other threads must wait for
ownership of a mutex object before using the resource.
The WaitOne method causes a calling thread to wait for ownership of a mutex object. If
a thread terminates normally while owning a mutex object, the state of the mutex object
is set to be signaled and the next waiting thread gets ownership
(A) What is ManualResetEvent and AutoResetEvent ?
Threads that call one of the wait methods of a synchronization event must wait until
another thread signals the event by calling the Set method. There are two synchronization
event classes. Threads set the status of ManualResetEvent instances to signaled using
the Set method. Threads set the status of ManualResetEvent instances to no signaled
using the Reset method or when control returns to a waiting WaitOne call. Instances of
the AutoResetEvent class can also be set to signaled using Set, but they automatically
return to nonsignaled as soon as a waiting thread is notified that the event became signaled.
(A) What is ReaderWriter Locks ?
You may want to lock a resource only when data is being written and permit multiple
clients to simultaneously read data when data is not being updated. The ReaderWriterLock
class enforces exclusive access to a resource while a thread is modifying the resource, but
it allows nonexclusive access when reading the resource. ReaderWriter locks are a useful
120
alternative to exclusive locks that cause other threads to wait, even when those threads
do not need to update data.
(I) How can you avoid deadlock in threading?
A good and careful planning can avoid deadlocks.There are so many ways Microsoft has
provided by which you can reduce deadlocks example Monitor, Interlocked classes, Wait
handles, Event raising from one thread to other thread, ThreadState property which you
can poll and act accordingly etc.
(B) What is the difference between thread and process?
A thread is a path of execution that run on CPU, a process is a collection of threads that
share the same virtual memory. A process has at least one thread of execution, and a
thread always run in a process context.
Note:- Its difficult to cover threading interview question in this small chapter. These
questions can take only to a basic level. If you are attending interviews where people are
looking for threading specialist, try to get deeper in to synchronization issues as that's the
important point they will stress.
121
(B)What is an application domain?
Previously “PROCESS” where used as security boundaries. One process has its own
virtual memory and does not over lap the other process virtual memory; due to this one
process can not crash the other process. So any problem or error in one process does not
affect the other process. In .NET they went one step ahead introducing application domains.
In application domains multiple applications can run in same process with out influencing
each other. If one of the application domains throws error it does not affect the other
application domains. To invoke method in a object running in different application domain
.NET remoting is used.
Figure :- 4.1 One process can have multiple Application domains
(B) What is .NET Remoting ?
.NET remoting is replacement of DCOM. Using .NET remoting you can make remote
object calls which lie in different Application Domains. As the remote objects run in
different process client calling the remote object can not call it directly. So the client uses
a proxy which looks like a real object.
When client wants to make method call on the remote object it uses proxy for it. These
method calls are called as “Messages”. Messages are serialized using “formatter” class
and sent to client “channel”. Client Channel communicates with Server Channel. Server
Channel uses as formatter to deserialize the message and sends to the remote object.
4. Remoting and Webservices
122
Figure :- 4.2 Channels, Formatters and Proxy in action.
(B) Which class does the remote object has to inherit ?
All remote objects should inherit from System.MarshalbyRefObject.
(I) What are two different types of remote object creation mode in .NET ?
There are two different ways in which object can be created using Remoting :-
√ SAO (Server Activated Objects) also called as Well-Known call mode.
√ CAO (Client Activated Objects)
SAO has two modes “Single Call” and “Singleton”. With Single Call object the object is
created with every method call thus making the object stateless. With Singleton the object
is created only once and the object is shared with all clients.
CAO are stateful as compared to SAO. In CAO the creation request is sent from client
side. Client holds a proxy to the server object created on server.
(A) Describe in detail Basic of SAO architecture of Remoting?
For these types of questions interviewer expects small and sweet answers. He is basically
looking at what you know about the specific subject. For these type of question this book
will provide detail code which is not necessary to be said during interview. Only the basic
steps and overall brief are enough to convince that you have knowledge about the subject.
Even though this question has detail code and answer say only what is needed in interview.
123
Remoting has at least three sections :-
√ Common Interface which will be shared between them.
√ Server.
√ Client.
Figure :- 4.3 Solution Explorer of Remoting Project
In CD “RemotingSample(SAO)” project is provided which gives a insight of remoting.
Above is the figure which shows the three important project sections needed to implement
remoting.
First important section is the common interface between Server and
Client.”InterFaceRemoting” project has the interface code. For sample project interface
is very simple with only two methods :- SetValue and GetValue.
Public Interface InterFaceRemoting
Sub SetValue(ByVal value As String)
Function GetValue() As String
End Interface
Second important section is the server.In this sample server is using HTTP channel and
the server object is singleton.
Imports System
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels.Http
Imports System.Runtime.Remoting.Channels
Imports InterFaceRemoting
Public Class RemotingServer
Inherits MarshalByRefObject
124
Implements InterFaceRemoting.InterFaceRemoting
Private strData As String
Public Function GetValue() As String Implements
InterFaceRemoting.InterFaceRemoting.GetValue
Return strData
End Function
Sub New()
strData = “testing..”
End Sub
Public Sub SetValue(ByVal value As String) Implements
InterFaceRemoting.InterFaceRemoting.SetValue
strData = value
End Sub
End Class
Module ModuleRemotingStartUp
Sub Main()
Dim objHttpChannel As HttpChannel
Console.WriteLine(“Server Started....”)
objHttpChannel = New HttpChannel(1234)
ChannelServices.RegisterChannel(objHttpChannel)
RemotingConfiguration.RegisterWellKnownServiceType(GetType(RemotingServer),
“RemoteObject”, WellKnownObjectMode.Singleton)
Console.WriteLine(“Server registered and listening waiting
for clients...”)
Console.ReadLine()
End Sub
End Module
Following is detail explanation :-
√ Channel object is created and registered.
Following is the code.
Dim objHttpChannel As HttpChannel
Console.WriteLine(“Server Started....”)
objHttpChannel = New HttpChannel(1234)
ChannelServices.RegisterChannel(objHttpChannel)
√ Server then hosts the object so that client can connect to it. This is the time
when we specify what mode the server object will be created i.e. Singleton or
SingleCall. This is done by the following below given code. Note in sample we
125
are hosting the server object in singleton mode that means that the same object
will be shared between all clients. Also note the server object is implementing
“InterFaceRemoting” and inheriting from “MarshalByRefObject”.
RemotingConfiguration.RegisterWellKnownServiceType(GetType(RemotingServer),
“RemoteObject”, WellKnownObjectMode.Singleton)
Now comes the final section that is third section the client which will connect to this
hosted remoting object.
Following is a detail explanation of client code :-
√ First we create the channel i.e. HTTP. Note whatever channel the server is
using same will be used by the client.
ChannelServices.RegisterChannel(objHttpChannel)
√ As said before the common interface i.e.“InterFaceRemoting” will be used
to communicate with client.
√ After that we can get the server object reference using following code
objRemoting = CType(Activator.GetObject(GetType(InterFaceRemoting.InterFaceRemoting),
“http://localhost:1234/RemoteObject”), InterFaceRemoting.InterFaceRemoting)
√ Then the client can make method call as if the object is local. But actually the
object is a proxy.
Console.WriteLine(“Value on server :- “ & objRemoting.GetValue.ToString())
Imports System
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels.Http
Imports System.Runtime.Remoting.Channels
Imports InterFaceRemoting
Module ModuleStartClient
Sub Main()
Dim objHttpChannel As New HttpChannel
Dim objRemoting As InterFaceRemoting.InterFaceRemoting
ChannelServices.RegisterChannel(objHttpChannel)
objRemoting =
CType(Activator.GetObject(GetType(InterFaceRemoting.InterFaceRemoting),
“http://localhost:1234/RemoteObject”),
126
InterFaceRemoting.InterFaceRemoting)
Console.WriteLine(“Referenced the main object.... Now
displaying Data”)
Console.WriteLine(“Value on server :- “ &
objRemoting.GetValue.ToString())
Console.WriteLine(“Press enter to Terminate”)
Console.ReadLine()
End Sub
End Module
You an run the program and see the output. For running the program run the server
program which is in server directory. Run “Server.exe” from BIN directory. If the EXE
runs properly following will be the screen as shown below.
Figure :- 4.4 Running Server Program of Remoting
Now run “Client.exe” from client folder in BIN directory.Following will be the output
seen.This means that the client connected to the server program and displayed the data in
the server object. In the server object we have initialized value “testing......”. In constructor
of class “RemotingServer” same value is displayed at the client side as shown in figure
below.
127
Figure :- 4.5 Client Program output of Remoting
(A) What are the situations you will use singleton architecture in
remoting ?
If all remoting clients have to share the same data singleton architecture will be used.
(A) What is fundamental of published or precreated objects in Remoting
?
In scenarios of singleton or single call the objects are created dynamically. But in situations
where you want to precreate object and publish it you will use published object scenarios.
Dim obj as new objRemote
obj.Initvalue = 100
RemotingServices.Marshal(obj,”RemoteObject”)
As shown in above sample following changes will be needed on server side.
RemotingConfiguration.RegisterWellKnownServiceType is replaced by
RemotingServices.Marshal(obj,”RemoteObject”) where “obj” is the precreated objected
on the server whose value is initialized to 100.
(A) What are the ways in which client can create object on server in CAO
model ?
There are two ways by which you can create Client objects on remoting server :-
128
√ Activator.CreateInstance().
√ By Keyword “New”.
(A) Are CAO stateful in nature ?
Yes. In CAO remoting model client creates a instance on server and instance variable set
by client on server can be retrieved again with correct value.
(A) In CAO model for client objects to be created by “NEW” keyword
what should we do?
Remoting Clients and Remoting Server can communicate because they share a common
contract by implementing Shared Interface or Base Class (As seen in previous examples).
But according to OOP’s concept we can not create a object of interface or Base Classes
(Abstract Class). Shipping the server object to client is not a good design practice. In
CAO model we can use SOAPSUDS utility to generate Metadata DLL from server which
can be shipped to client, clients can then use this DLL for creating object on server. Run
the SOAPSUDS utility from visual studio command prompt for syntax see below :-
soapsuds -ia:RemotingServer -nowp -oa:ClientMetaData.dll
Where RemotingServer is your server class name.
ClientMetaData.dll is the DLL name by which you will want to create the metadll.
Server code will change as follows :-
ChannelServices.RegisterChannel(objHttpChannel)
RemotingConfiguration.ApplicationName = “RemoteObject”
RemotingConfiguration.RegisterActivatedServiceType(GetType(InterFaceRemoting.InterFaceRemoting))
Note :- We have to provide applicationname and register the object as ActivatedServiceType.
On client side we have to reference the generated ClientMetaData.dll from SOAPSUDS
utility. Below are changes which are needed to be incorporated at the Remoting Client :-
RemotingConfiguration.RegisterActivatedClientType(typeof(RemoteObject),“http://
localhost:1234/MyServer”)
Dim objRemoteObject as new RemoteObject().
129
RemoteObject is class which is obtained from ClientMetaData.dll which we created using
SOAPSUDS utility. Now you can reference the object as normal object.
(I) Is it a good design practice to distribute the implementation to
Remoting Client ?
It’s never advisable to distribute complete implementation at client, due to following
reasons:-
√ Any one can use ILDASM and decrypt your logic.
√ It’s a bad architecture move to have full implementation as client side as any
changes in implementation on server side you have to redistribute it again.
So the best way is to have a interface or SOAPSUDS generated meta-data DLL at client
side rather than having full implementation.
(A) What are LeaseTime, SponsorshipTime, RenewonCallTime and
LeaseManagerPollTime?
This is a very important question from practical implementation point of view. Companies
who have specific requirement for Remoting projects will expect this question to be answered.
In normal .NET environment objects lifetime is managed by garbage collector. But in
remoting environment remote clients can access objects which are out of control of
garbage collector. Garbage collector boundary is limited to a single PC on which framework
is running; any remote client across physical PC is out of control of GC (Garbage
Collector).
This constraint of garbage collector leads to a new way of handling lifetime for remoting
objects, by using concept called as “LeaseTime”. Every server side object is assigned by
default a “LeaseTime” of five minutes. This leasetime is decreased at certain intervals.
Again for every method call a default of two minutes is assigned. When i say method call
means every call made from client. This is called as “RenewalOnCallTime”.
Let’s put the whole thing in equation to make the concept more clear.
Total Remoting object life time = LeaseTime + (Number of method calls) X
(RenewalTime).
If we take NumberOfMethodCalls as one.
130
Then default Remote Object Life Time = 5 + (1) X 2 = 10 minutes (Everything is in
minutes)
When total object lifetime is reduced to zero, it queries the sponsor that should the object
be destroyed. Sponsor is an object which decides should object Lifetime be renewed. So
it queries any registered sponsors with the object, if does not find any then the object is
marked for garbage collection. After this garbage collection has whole control on the
object lifetime. If we do not foresee how long a object will be needed specify the
“SponsorShipTimeOut” value. SponsorShipTimeOut is time unit a call to a sponsor is
timed out.
“LeaseManagerPollTime” defines the time the sponsor has to return a lease time extension.
(A) Which config file has all the supported channels/protocol ?
Machine.config file has all the supported channels and formatter supported by .NET
remoting.Machine.config file can be found at
“C:\WINDOWS\Microsoft.NET\Framework\vXXXXX\CONFIG” path. Find
and the formatters. Below is a figure shown which can give a clear idea of how the file
looks like.
Note :- Interviewer will not ask you to name all channels and formatters in machine.config
but will definitely like to know in which file are all the formatter and channels specified, one
sweet answer “Machine.config” can fetch you handsome job.
131
Figure :- 4.6 Channels and Formatter in machine.config file
(A) How can you specify remoting parameters using Config files ?
Both remoting server and remoting client parameters can be provided through config
files. Below is a sample of server config file which provides all remoting parameter values
which we where providing through code.
132
mode=”SingleCall”
type=”Server.ClsServer, Server”
objectUri=”RemoteObject” />
Later this config file can be loaded using the following code.
RemotingConfiguration.Configure(AppDomain.CurrentDomain.SetupInformation.ApplicationBase
& “Server.config”)
Same way we also have client.config file for loading the client remoting parameters.
type=”CommonInterface.Icommon, Icommon”
url = “tcp://localhost:9000/Server/RemoteObject”/>
client remoting can then load the configuration file by using :-
Dim IobjCommon As CommonInterFace.Icommon
Dim StrData As String
Dim objServiceEntries As WellKnownClientTypeEntry()
RemotingConfiguration.Configure(AppDomain.CurrentDomain.SetupInformation.ApplicationBase
& “Client.config”)
objServiceEntries =
RemotingConfiguration.GetRegisteredWellKnownClientTypes()
IobjCommon = Activator.GetObject(GetType(Icommon),
objServiceEntries(0).ObjectUrl.ToString())
StrData = IobjCommon.GetValue()
133
Console.WriteLine(“ Serve side Data is “ & StrData)
Console.ReadLine()
Note :- Complete source is provided in CD in folder “RemotingObjectLifeTime”.If you run
Server and Client following output can be seen. All source is compiled using VS2005
BETA1
Figure : - 4.7 Output of Server and Client for RemotingObjectLifeTime project
(A) Can Non-Default constructors be used with Single Call SAO?
Twist :- What are the limitation of constructors for Single call SAO ?
134
Non-Default constructors can not be used with single call objects as object is created
with every method call, there is no way to define Non-default constructors in method
calls.
It’s possible to use Non-Default constructor with Client activated objects as both methods
:-
“NEW” keyword and “Activator.CreateInstance” provide a way to specify Non-Default
constructors.
(I) How can we call methods in remoting Asynchronously ?
All previous examples are a synchronous method calls that means client has to wait until
the method completes the process. By using Delegates we can make Asynchronous method
calls.
(A) What is Asynchronous One-Way Calls ?
One-way calls are a different from asynchronous calls from execution angle that the .NET
Framework does not guarantee their execution. In addition, the methods used in this kind
of call cannot have return values or out parameters. One-way calls are defined by using
[OneWay()] attribute in class.
(B) What is marshalling and what are different kinds of marshalling ?
Marshaling is used when an object is converted so that it can be sent across the network
or across application domains. Unmarshaling creates an object from the marshaled data.
There are two ways to do marshalling :-
√ Marshal-by-value (MBV) :- In this the object is serialized into the channel, and
a copy of the object is created on the other side of the network. The object to
marshal is stored into a stream, and the stream is used to build a copy of the
object on the other side with the unmarshalling sequence.
√ Marshaling-by-reference (MBR):- Here it creates a proxy on the client that is
used to communicate with the remote object. The marshaling sequence of a
remote object creates an ObjRef instance that itself can be serialized across
the network.
Objects that are derived from “MarshalByRefObject” are always marshaled by reference.
All our previous samples have classes inherited from “MarshalByRefObject”
135
To marshal a remote object the static method RemotingServices.Marshal() is
used.RemotingServices.Marshal() has following overloaded versions:-
public static ObjRef Marshal(MarshalByRefObject obj)
public static ObjRef Marshal(MarshalByRefObject obj, string objUri)
public static ObjRef Marshal(MarshalByRefObject obj, string objUri,Type
requestedType)
The first argument obj specifies the object to marshal. The objUri is the path that is
stored within the marshaled object reference; it can be used to access the remote object.
The requestedType can be used to pass a different type of the object to the object reference.
This is useful if the client using the remote object shouldn't use the object class but an
interface that the remote object class implements instead. In this scenario the interface is
the requestedType that should be used for marshaling.
(A) What is ObjRef object in remoting ?
All Marshal() methods return ObjRef object.The ObjRef is serializable because it
implements the interface ISerializable, and can be marshaled by value. The ObjRef knows
about :-
√ location of the remote object
√ host name
√ port number
√ object name.
(B) What is a Web Service ?
Web Services are business logic components which provide functionality via the Internet
using standard protocols such as HTTP.
Web Services uses Simple Object Access Protocol (SOAP) in order to expose the business
functionality.SOAP defines a standardized format in XML which can be exchanged
between two entities over standard protocols such as HTTP. SOAP is platform independent
so the consumer of a Web Service is therefore completely shielded from any
implementation details about the platform exposing the Web Service. For the consumer it
is simply a black box of send and receive XML over HTTP. So any web service hosted on
windows can also be consumed by UNIX and LINUX platform.
136
(B) What is UDDI ?
Full form of UDDI is Universal Description, Discovery and Integration. It is a directory
that can be used to publish and discover public Web Services. If you want to see more
details you can visit the http://www.UDDI.org .
(B) What is DISCO ?
DISCO is the abbreviated form of Discovery. It is basically used to club or group common
services together on a server and provides links to the schema documents of the services
it describes may require.
(B) What is WSDL?
Web Service Description Language (WSDL)is a W3C specification which defines XML
grammar for describing Web Services.XML grammar describes details such as:-
√ Where we can find the Web Service (its URI)?
√ What are the methods and properties that service supports?
√ Data type support.
√ Supported protocols
In short its a bible of what the webservice can do.Clients can consume this WSDL and
build proxy objects that clients use to communicate with the Web Services. Full WSDL
specification is available at http://www.w3.org/TR/wsdl.
(A) What the different phase/steps of acquiring a proxy object in
Webservice ?
Following are the different steps needed to get a proxy object of a webservice at
the client side :-
√ Client communicates to UDI node for WebService either through browser or
UDDI's public web service.
√ UDII responds with a list of webservice.
137
√ Every service listed by webservice has a URI pointing to DISCO or WSDL
document.
√ After parsing the DISCO document, we follow the URI for the WSDL document
related to the webservice which we need.
√ Client then parses the WSDL document and builds a proxy object which can
communicate with Webservice.
(B) What is file extension of Webservices ?
.ASMX is extension for Webservices.
Note :- After this we are going to deal with a sample of webservice. In VS2005 webproject
is created from the menu itself as compared to 2003 where it was present in the explorer.
138
Figure :- 4.8 Create Web project menu in VS2005
(B)Which attribute is used in order that the method can be used as
WebService ?
WebMethod attribute has to be specified in order that the method and property can be
treated as WebService.
(A) What are the steps to create a webservice and consume it ?
Note :- For this question this book will make a attempt by creating a simple webservice and
explaining steps to acheive it. A simple webservice will be created which takes two number
and gives addition result of the two number. In CD sample webservice project with folder
name “MathsWebService” is provided and same will be explained below. Definitely the
139
interviewer will not expect such a detail answer but this book will explain you in detail so
that you are on right track during interview.
This webservice will add two numbers and give to the calling client.All the below steps
are according to VS2005 beta editor :-
√ First create a website by clicking on File -- New WebSite.
√ From “Visual Studio Installed Templates” click on “Asp.NET Web Service”.
See figure below. Name the figure as “Maths Web Service”.
140
Figure :- 4.9 Create WebService Project
√ By default the .NET editor has made a default webservice method called as
"HelloWord" which returns a string datatype. Let's rename "Service.vb" to
"Maths.vb" and "Service.asmx" to "Maths.asmx". Let’s replace the
“HelloWorld” with following code below :-
Public Function AddTwoNumbers(ByVal Number1 As Integer, ByVal
Number2 As Integer) As Integer
Return Number1 + Number2
141
End Function
Figure :- 4.10 Rename all your default “Service” to “Maths”
√ After the webservice is done click on add Webreference. Normally for
components we do a “Add Reference” and for Webservices we do “Add Web
Reference”.
142
Figure :- 4.11 Click on Add Web Reference
√ You will be shown with a list of webservices which are known to the
solutions. As we are looking for our “Maths” webservice which exist in the
143
same solution, we click “Webservices in this solution”.
Figure :- 4.12 List of webservices for browsing
√ Your editor has located the “Maths” webservice.Select the webservice.
144
Figure :- 4.13 Solution showing the availability of Maths Webservice.
145
√ After you have clicked on “Maths” webservice you will see a search progress
bar as shown in figure below. This process will start the webservice, reference it
and create a proxy for the client, so that using it client can absorb the
webservice.
Figure :- 4.14 Starting the webservice and creating the proxy for your solution.
146
√ Finally you are able to see your webservice which is ready for use. Click on
Add Reference and you will see a “Localhost” reference in your .NET solution.
Figure :- 4.15 Starting the webservice and creating the proxy for your solution.
√ We need to make a client who will absorb this “Maths Webservice”. Add
“WebserviceClient.aspx” and create a UI as shown below. In the button click
put in the following code. “LocalHost.ClsMaths” is the proxy object by which
you can make calls to the webservice.
Sub cmdCalculate_Click(ByVal sender As Object, ByVal e As
147
System.EventArgs)
Dim pobjMaths As New localhost.ClsMaths
lblResultDisplay.Text =
Convert.ToString(pobjMaths.AddTwoNumbers(Convert.ToInt16(txtNumber1.Text),
Convert.ToInt16(txtNumber2.Text)))
End Sub
Figure :- 4.16 Complete Webservice in action.
Note :- The whole point of creating this “Maths Webservice” step by step was to have a
understanding of practical angle of how webservices are created. It’s very rare that you will
be asked to explain every step of how to write a webservice. But in case your interviewer is
too bend down to also know what are the actual steps in creating a Webservice.
(A) Do webservice have state ?
Twist :- How can we maintain State in Webservices ?
148
Webservices as such do not have any mechanism by which they can maintain state.
Webservices can access ASP.NET intrinsic objects like Session, application and so on if
they inherit from “WebService” base class.
<%@ Webservice class="TestWebServiceClass" %>
Imports System.Web.Services
Public class TestWebServiceClass
Inherits WebService
session("Val") = Value
End Sub
end class
Above is a sample code which sets as session object called as “val”. TestWebserviceClass
is inheriting from WebService to access the session and application objects.
149
(B) What is an application object ?
Application object can be used in situation where we want data to be shared across users
globally.
(I)What’s the difference between Cache object and application object ?
The main difference between the Cache and Application objects is that the Cache object
provides cache-specific features, such as dependencies and expiration policies.
(I)How can get access to cache object ?
The Cache object is defined in the System.Web.Caching namespace. You can get a reference
to the Cache object by using the Cache property of the HttpContext class in the
System.Web namespace or by using the Cache property of the Page object.
(A)What are dependencies in cache and types of dependencies ?
When you add an item to the cache, you can define dependency relationships that can
force that item to be removed from the cache under specific activities of dependenci
es.Example if the cache object is dependent on file and when the file data changes you
want the cache object to be update. Following are the supported dependency :-
√ File dependency :- Allows you to invalidate a specific cache item when a disk
based file or files change.
√ Time-based expiration :- Allows you to invalidate a specific cache item
depending on predefined time.
√ Key dependency :-Allows you to invalidate a specific cache item depending
when another cached item changes.
5. Caching Concepts
150
(P)Can you show a simple code showing file dependency in cache ?
Partial Class Default_aspx
Public Sub displayAnnouncement()
Dim announcement As String
If Cache(“announcement”) Is Nothing Then
Dim file As New _
System.IO.StreamReader _
(Server.MapPath(“announcement.txt”))
announcement = file.ReadToEnd
file.Close()
Dim depends As New _
System.Web.Caching.CacheDependency _
(Server.MapPath(“announcement.txt”))
Cache.Insert(“announcement”, announcement, depends)
End If
Response.Write(CType(Cache(“announcement”), String))
End Sub
Private Sub Page_Init(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Init
displayAnnouncement()
End Sub
End Class
Note :- Above source code can be obtained from CD in “CacheSample”
folder.”Announcement.txt” is in the same folder which you can play around to see the
results.
Above given method displayAnnouncement() displays banner text from Announcement.txt
file which is lying in application path of the web directory. Above method first checks
whether the Cache object is nothing, if the cache object is nothing then it moves further
to load the cache data from the file. Whenever the file data changes the cache object is
removed and set to nothing.
(A) What is Cache Callback in Cache ?
Cache object is dependent on its dependencies example file based, time based etc...Cache
items remove the object when cache dependencies change.ASP.NET provides capability
to execute a callback method when that item is removed from cache.
151
(A) What is scavenging ?
When server running your ASP.NET application runs low on memory resources, items
are removed from cache depending on cache item priority. Cache item priority is set when
you add item to cache. By setting the cache item priority controls the items scavenging
are removed first.
(B) What are different types of caching using cache object of ASP.NET?
You can use two types of output caching to cache information that is to be transmitted to
and displayed in a Web browser:
√ Page Output Caching
Page output caching adds the response of page to cache object. Later
when page is requested page is displayed from cache rather than
creating the page object and displaying it. Page output caching
is good if the site is fairly static.
√ Page Fragment Caching
If parts of the page are changing, you can wrap the static sections as user
controls and cache the user controls using page fragment caching.
(B) How can you cache different version of same page using ASP.NET
cache object ?
Output cache functionality is achieved by using “OutputCache” attribute on ASP.NET
page header. Below is the syntax
<%@ OutputCache Duration="20" Location="Server" VaryByParam="state"
VaryByCustom="minorversion" VaryByHeader="Accept-Language"%>
√ VaryByParam :- Caches different version depending on input parameters send
through HTTP POST/GET.
√ VaryByHeader:- Caches different version depending on the contents of the
page header.
152
√ VaryByCustom:-Lets you customize the way the cache handles page variations
by declaring the attribute and overriding the GetVaryByCustomString handler.
√ VaryByControl:-Caches different versions of a user control based on
the value of properties of ASP objects in the control.
(A) How will implement Page Fragment Caching ?
Page fragment caching involves the caching of a fragment of the page, rather than the
entire page. When portions of the page are need to be dynamically created for each user
request this is best method as compared to page caching. You can wrap Web Forms user
control and cache the control so that these portions of the page don’t need to be recreated
each time.
(B)Can you compare ASP.NET sessions with classic ASP?
ASP.NET session caches per user session state. It basically uses “HttpSessionState” class.
Following are the limitations in classic ASP sessions :-
√ ASP session state is dependent on IIS process very heavily. So if IIS restarts
ASP session variables are also recycled.ASP.NET session can be independent
of the hosting environment thus ASP.NET session can maintained even if IIS
reboots.
√ ASP session state has no inherent solution to work with Web Farms.ASP.NET
session can be stored in state server and SQL SERVER which can support
multiple server.
√ ASP session only functions when browser supports cookies.ASP.NET session
can be used with browser side cookies or independent of it.
(B) Which various modes of storing ASP.NET session ?
√ InProc:- In this mode Session state is stored in the memory space of the
Aspnet_wp.exe process. This is the default setting. If the IIS reboots or web
application restarts then session state is lost.
√ StateServer:-In this mode Session state is serialized and stored in a separate
process (Aspnet_state.exe); therefore, the state can be stored on a separate
computer(a state server).
153
√ SQL SERVER:- In this mode Session state is serialized and stored in a SQL
Server database.
Session state can be specified in element of application configuration
file. Using State Server and SQL SERVER session state can be shared across web farms
but note this comes at speed cost as ASP.NET needs to serialize and deserialize data over
network again and again.
(A) Is Session_End event supported in all session modes ?
Session_End event occurs only in “Inproc mode”.”State Server” and “SQL SERVER”
do not have Session_End event.
(A) What are the precautions you will take in order that StateServer Mode
work properly ?
Following are the things to remember so that StateServer Mode works properly :-
√ StateServer mode session data is stored in a different process so you must
ensure that your objects are serializable.
√ elements in Web.config should be identical across all
servers.So this ensures that encryption format is same across all computers.
√ IIS metabase (\LM\W3SVC\2) must be identical across all servers in that
farm.
(A) What are the precautions you will take in order that SQLSERVER
Mode work properly ?
Following are the things to remember so that SQLSERVER Mode works properly :-
√ SQLSERVER mode session data is stored in a different process so you must
ensure that your objects are serializable.
√ IIS metabase (\LM\W3SVC\2) must be identical across all servers in that
farm.
√ By default Session objects are stored in “Tempdb”, you can configure it store
outside “TempDB” by running Microsoft provided SQL script.
154
Note :- “TempDB” database is re-created after SQL SERVER computer reboot.If you
want to maintain session state with every reboot best is to run SQL Script and store session
objects outside “TempDB” database.
(A) Where do you specify session state mode in ASP.NET ?
stateConnectionString=”tcpip=192.168.1.1:42424"
sqlConnectionString=”data source=192.168.1.1; Integrated
Security=SSPI”
cookieless=”false”
timeout=”20"
/>
Above is sample session state mode specified for SQL SERVER.
(B) What are the other ways you can maintain state ?
Other than session variables you can use the following technique to store state :
√ Hidden fields
√ View state
√ Hidden frames
√ Cookies
√ Query strings
(B) What are benefits and Limitation of using Hidden fields ?
Following are the benefits of using Hidden fields :-
√ They are simple to implement.
√ As data is cached on client side they work with Web Farms.
√ All browsers support hidden field.
√ No server resources are required.
Following are limitations of Hidden field :-
√ They can be tampered creating a security hole.
155
√ Page performance decreases if you store large data, as the data are stored in
pages itself.
√ Hidden fields do not support rich structures as HTML hidden fields are only
single valued. Then you have to work around with delimiters etc to handle
complex structures.
Below is how you will actually implement hidden field in a project
runat="server"NAME="HiddenValue">
(B) What is ViewState ?
Viewstate is a built-in structure for automatically retaining values amongst the multiple
requests for the same page. The viewstate is internally maintained as a hidden field on the
page but is hashed, providing greater security than developer-implemented hidden fields
do.
(A) Does the performance for viewstate vary according to User controls
?
Performance of viewstate varies depending on the type of server control to which it is
applied. Label, TextBox, CheckBox, RadioButton, and HyperLink are server controls
that perform well with ViewState. DropDownList, ListBox, DataGrid, and DataList suffer
from poor performance because of their size and the large amounts of data making
roundtrips to the server.
(B) What are benefits and Limitation of using Viewstate for state
management?
Following are the benefits of using Viewstate :-
√ No server resources are required because state is in a structure in
the page code.
√ Simplicity.
√ States are retained automatically.
√ The values in view state are hashed, compressed, and encoded, thus representing
a higher state of security than hidden fields.
√ View state is good for caching data in Web frame configurations because the
data is cached on the client.
Following are limitation of using Viewstate:-
√ Page loading and posting performance decreases when large values are
stored because view state is stored in the page.
√ Although view state stores data in a hashed format, it can still be tampered
because it is stored in a hidden field on the page. The information in the
hidden field can also be seen if the page output source is viewed directly,
creating a potential security risk.
Below is sample of storing values in view state.
this.ViewState["EnterTime"] = DateTime.Now.ToString();
(B) How can you use Hidden frames to cache client data ?
This technique is implemented by creating a Hidden frame in page which will contain
your data to be cached.
scrolling="yes">
Above is a sample of hidden frames where the first frame “data_of_frame1.html” is visible
and the remaining frames are hidden by giving whole col section to first frame. See allocation
where 100 % is allocated to first frame and remaining frames thus remain hidden.
(I) What are benefits and limitations of using Hidden frames?
Following are the benefits of using hidden frames:
√ You can cache more than one data field.
√ The ability to cache and access data items stored in different hidden forms.
√ The ability to access JScript® variable values stored in different frames if they
come from the same site.
The limitations of using hidden frames are:
√ Hidden frames are not supported on all browsers.
√ Hidden frames data can be tampered thus creating security hole.
(I) What are benefits and limitations of using Cookies?
Following are benefits of using cookies for state management :-
√ No server resources are required as they are stored in client.
√ They are light weight and simple to use
Following are limitation of using cookies :-
√ Most browsers place a 4096-byte limit on the size of a cookie, although support
for 8192-byte cookies is becoming more common in the new browser and
client-device versions available today.
√ Some users disable their browser or client device’s ability to receive cookies,
thereby limiting the use of cookies.
√ Cookies can be tampered and thus creating a security hole.
√ Cookies can expire thus leading to inconsistency.
Below is sample code of implementing cookies
Request.Cookies.Add(New HttpCookie(“name”, “user1”))
(I) What is Query String and What are benefits and limitations of using
Query Strings?
A query string is information sent to the server appended to the end of a page URL.
Following are the benefits of using query string for state management:-
158
√ No server resources are required. The query string containing in the HTTP
requests for a specific URL.
√ All browsers support query strings.
Following are limitations of query string :-
√ Query string data is directly visible to user thus leading to security problems.-
√ Most browsers and client devices impose a 255-character limit on URL length.
Below is a sample “Login” query string passed in URL http://www.querystring.com/
login.asp?login=testing. This query string data can then be requested later by using
Request.QueryString(“login”).
(I) What is Absolute and Sliding expiration?
Absolute Expiration allows you to specify the duration of the cache, starting from the
time the cache is activated. The following example shows that the cache has a cache
dependency specified, as well as an expiration time of one minute.
Cache.Insert("announcement", announcement, depends, _
DateTime.Now.AddMinutes(1), Nothing)
Sliding Expiration specifies that the cache will expire if a request is not made within a
specified duration. Sliding expiration policy is useful whenever you have a large number
of items that need to be cached, because this policy enables you to keep only the most
frequently accessed items in memory. For example, the following code specifies that the
cache will have a sliding duration of one minute. If a request is made 59 seconds after the
cache is accessed, the validity of the cache would be reset to another minute:
Cache.Insert("announcement", announcement, depends, _
DateTime.MaxValue, _
TimeSpan.FromMinutes(1))
(I)What is cross page posting?
159
Note :- This is a new feature in ASP.NET 2.0
By default, button controls in ASP.NET pages post back to the same page that contains
the button, where you can write an event handler for the post. In most cases this is the
desired behavior, but occasionaly you will also want to be able to post to another page in
your application. The Server.Transfer method can be used to move between pages, however
the URL doesn't change. Instead, the cross page posting feature in ASP.NET 2.0 allows
you to fire a normal post back to a different page in the application. In the target page,
you can then access the values of server controls in the source page that initiated the post
back.
To use cross page posting, you can set the PostBackUrl property of a Button, LinkButton
or ImageButton control, which specifies the target page. In the target page, you can then
access the PreviousPage property to retrieve values from the source page. By default, the
PreviousPage property is of type Page, so you must access controls using the FindControl
method. You can also enable strongly-typed access to the source page by setting the
@PreviousPageType directive in the target page to the virtual path or Type name of the
source page.
Here is a step-by-step guide for implementing the cross-page post back using controls
that implement the IButtonControl interface.
√ Create a Web Form and insert a Button control on it using the VS .NET designer.
√ Set the button's PostBackUrl property to the Web Form you want to post back. For
instance in this case it is "nextpage.aspx"
PostBackUrl="~/nextpage.aspx" Text="Post to nextpage" />
When the PostBackUrl property of the IButtonControl is set, the ASP.NET framework
binds the corresponding HTML element to new JavaScript function named
WebForm_DoPostBackWithOptions. The corresponding HTML rendered by the ASP.NET
2.0 will look like this:
onclick="javascript:WebForm_DoPostBackWithOptions(new
WebForm_PostBackOptions("Button1", ",false”,"Page2.aspx", false, false))"
id="Button1" />
160
How do we access viewstate value of this page in the next page ?
View state is page specific; it contains information about controls embedded on the
particular page. ASP.NET 2.0 resolves this by embedding a hidden input field name,
__POSTBACK . This field is embedded only when there is an IButtonControl on the
page and its PostBackUrl property is set to a non-null value. This field contains the view
state information of the poster page. To access the view state of the poster page, you can
use the new PreviousPage property of the page:
Page poster = this.PreviousPage;
Then you can find any control from the previous page and read its state:
Label posterLabel = poster.findControl("myLabel");
string lbl = posterLabel.Text;
This cross-page post back feature also solves the problem of posting a Form to multiple
pages, because each control, in theory, can point to different post back URL.
Can we post and access view state in another application?
You can post back to any page and pages in another application, too. But if you are
posting pages to another application, the PreviousPage property will return null. This is a
significant restriction, as it means that if you want to use the view state, you are confined,
for example, posting to pages in the same virtual directory. Even so, this is a highly
acceptable addition to the functionality of ASP.NET.
What is SQL Cache Dependency in ASP.NET 2.0?
SQL cache dependencies is a new feature in ASP.NET 2.0 which can automatically
invalidate a cached data object (such as a Dataset) when the related data is modified in
the database. So for instance if you have a dataset which is tied up to a database tables
any changes in the database table will invalidate the cached data object which can be a
dataset or a data source.
How do we enable SQL Cache Dependency in ASP.NET 2.0?
Below are the broader steps to enable a SQL Cache Dependency:-
161
• Enable notifications for the database.
• Enable notifications for individual tables.
• Enable ASP.NET polling using “web.config” file
• Finally use the Cache dependency object in your ASP.NET code
Enable notifications for the database.
Before you can use SQL Server cache invalidation, you need to enable notifications for
the database. This task is performed with the aspnet_regsql.exe command-line utility,
which is located in the c:\[WinDir]\Microsoft.NET\Framework\[Version] directory.
aspnet_regsql -ed -E -d Northwind
-ed :- command-line switch
-E: - Use trusted connection
-S: - Specify server name it other than the current computer you are working on
-d: - Database Name
So now let’s try to understand what happens in the database because of
“aspnet_regsql.exe”. After we execute the “aspnet_regsql -ed -E -d Northwind” command
you will see one new table and four new stored procedures created.
Figure 5.1 : - SQL Cache table created for notification
Essentially, when a change takes place, a record is written in this table. The SQL Server
polling queries this table for changes.
162
Figure 5.2 : - New stored procedures created
Just to make brief run of what the stored procedures do.
“AspNet_SqlCacheRegisterTableStoredProcedure” :- This stored procedure sets a table
to support notifications. This process works by adding a notification trigger to the table,
which will fire when any row is inserted, deleted, or updated.
“AspNet_SqlCacheUnRegisterTableStoredProcedure”:- This stored procedure takes a
registered table and removes the notification trigger so that notifications won't be generated.
“AspNet_SqlCacheUpdateChangeIdStoredProcedure”:- The notification trigger calls this
stored procedure to update the AspNet_SqlCacheTablesForChangeNotification table,
thereby indicating that the table has changed.
AspNet_SqlCacheQueryRegisteredTablesStoredProcedure :- This extracts just the table
names from the AspNet_SqlCacheTablesForChangeNotification table. It’s used to get a
quick look at all the registered tables.
163
AspNet_SqlCachePollingStoredProcedure :- This will get the list of changes from the
AspNet_SqlCacheTablesForChangeNotification table. It is used to perform polling.
Enabling notification for individual tables
Once the necessary stored procedure and tables are created then we have to notify saying
which table needs to be enabled for notifications.
That can be achieved by two ways:-
√ aspnet_regsql -et -E -d Northwind -t Products
√ Exec spNet_SqlCacheRegisterTableStoredProcedure 'TableName'
Registering tables for notification internally creates triggerfor the tables. For instance for
a “products” table the following trigger is created. So any modifications done to the
“Products” table will update the “AspNet_SqlCacheNotification’ table.
CREATE TRIGGER
dbo.[Products_AspNet_SqlCacheNotification_Trigger] ON
[Products]
FOR INSERT, UPDATE, DELETE
AS
BEGIN
SET NOCOUNT ON
EXEC dbo.AspNet_SqlCacheUpdateChangeIdStoredProcedure
N'Products‘
END
“AspNet_SqlCacheTablesForChangeNotification” contains a single record for every table
you're monitoring. When you make a change in the table (such as inserting, deleting or
updating a record), the change Id column is incremented by 1.ASP.NET queries this table
repeatedly keeps track of the most recent changed values for every table. When this
value changes in a subsequent read, ASP.NET knows that the table has changed.
164
Figure 5.3 : - Entries in the Cache notification table
Enable ASP.NET polling using “web.config” file
Now that all our database side is configured in order to get the SQL Cache working in the
ASP.NET side we need to do some configuration in the web.config file.
We need to set two attributes in the “web.config” file:-
√ Set “Enabled” attribute to true to set the caching on.
√ Set the poll time attribute to the number of milliseconds between each poll
Below is the snapshot of the web.config file.
Figure 5.4 :- Web.config file modifications for SQL cache
165
Finally use the Cache dependency object in your ASP.NET code
Now comes the final step to use our cache dependency with programmatic data caching,
a data source control, and output caching.
For programmatic data caching, we need to create a new SqlCacheDependency and supply
that to the Cache.Insert() method. In the SqlCacheDependency constructor, you supply
two strings. The first is the name of the database you defined in the element in the section
of the web.config file e.g: Northwind. The second is the name of the linked table e.g:
Products.
private static void CacheProductsList(List products)
{SqlCacheDependency sqlDependency = new SqlCacheDependency("Northwind",
"Products");
HttpContext.Current.Cache.Insert("ProductsList", products, sqlDependency,
DateTime.Now.AddDays(1), Cache.NoSlidingExpiration);}
private static List GetCachedProductList()
{return HttpContext.Current.Cache["ProductsList"] as List;}
ClsProductItem is business class, and here we are trying to cache a list of ClsProductItem
instead of DataSet or DataTable.
The following method is used by an ObjectDataSource Control to retrieve List of Products
public static List GetProductsList(int catId, string sortBy)
{
//Try to Get Products List from the Cache
List products = GetCachedProductList();
if (products == null)
{
//Products List not in the cache, so query the Database layer
ClsProductsDB db = new ClsProductsDB(_connectionString);
DbDataReader reader = null;
products = new List(80);
166
if (catId > 0)
{
//Return Product List from the Data Layer
reader = db.GetProductsList(catId);
}
else
{
//Return Product List from the Data Layer
reader = db.GetProductsList();
}
//Create List of Products -List if ClsProductItemproducts
= BuildProductsList(reader);
reader.Close();
//Add entry to products list in the Cache
CacheProductsList(products);
}
products.Sort(new ClsProductItemComparer(sortBy));
if (sortBy.Contains("DESC")) products.Reverse();
return products;
}
167
To perform the same trick with output caching, you simply need to set the SqlDependency
property with the database dependency name and the table name, separated by a colon:
<%@ OutputCache Duration="600" SqlDependency="Northwind:Products"
VaryByParam="none" %>
The same technique works with the SqlDataSource and ObjectDataSource controls:
SqlCacheDependency="Northwind:Products" ... />
Note :- ObjectDataSource doesn't support built in caching for Custom types such as the one
in our example. It only supports this feature for DataSets and DataTables.
Just to make a sample check run the SQL Server profiler and see that does the SQL
actually hit the database after the first run.
What is Post Cache substitution?
Post cache substitution is used when we want to cache the whole page but also need
some dynamic region inside that cached page. Some examples like QuoteoftheDay,
RandomPhotos, and AdRotator etc. are examples where we can implement Post Cache
Substitution.
Post-cache substitution can be achieved by two means:
√ Call the new Response.WriteSubstitution method, passing it a reference to the desired
substitution method callback.
√ Add a control to the page at the desired location, and set its
methodName attribute to the name of the callback method.
168
Figure 5.5 : - “Writesubstitution” in action
You can see we have a static function here “GetDateToString()”. We pass the response
substitution callback to the “WriteSubstitution” method. So now when ASP.NET page
framework retrieves the cached page, it automatically triggers your callback method to
get the dynamic content. It then inserts your content into the cached HTML of the page.
Even if your page hasn't been cached yet (for example, it's being rendered for the first
time), ASP.NET still calls your callback in the same way to get the dynamic content. So
you create a method that generates some dynamic content, and by doing so you guarantee
that your method is always called, and it’s content is never cached.
Ok the above example was by using “WriteSubstitution” now lets try to see how we can
do by using “” control. You can get the “” control
from the editor toolbox.
169
Figure 5.6 : - Substitution Control
Figure 5.7 : - Substitution in Action.
170
Below is a sample code which shows how substitution control works. We have ASPX
code at the right hand side and class code at the behind code at the left hand side. We
need to provide the method name in the “methodname” attribute of the substitution
control.
Why do we need methods to be static for Post Cache substitution?
ASP.NET should be able to call this method even when there isn't an instance of your
page class available. When your page is served from the cache, the page object isn't
created. So ASP.NET skips the page life cycle when the page is coming from cache,
which means it won't create any control objects or raise any control events. If your dynamic
content depends on the values of other controls, you'll need to use a different technique,
because these control objects won't be available to your callback
171
(B) What is Object Oriented Programming ?
It is a problem solving technique to develop software systems. It is a technique to think
real world in terms of objects. Object maps the software model to real world concept.
These objects have responsibilities and provide services to application or other objects.
(B) What’s a Class ?
A class describes all the attributes of objects, as well as the methods that implement the
behavior of member objects. It’s a comprehensive data type which represents a blue print
of objects. It’s a template of object.
(B) What’s an Object ?
It is a basic unit of a system. An object is an entity that has attributes, behavior, and
identity. Objects are members of a class. Attributes and behavior of an object are defined
by the class definition.
(A) What is the relation between Classes and Objects ?
They look very much same but are not same. Class is a definition, while object is a
instance of the class created. Class is a blue print while objects are actual objects existing
in real world. Example we have class CAR which has attributes and methods like Speed,
Brakes, Type of Car etc. Class CAR is just a prototype, now we can create real time
objects which can be used to provide functionality. Example we can create a Maruti car
object with 100 km speed and urgent brakes.
(B) What are different properties provided by Objectoriented
systems ?
Twist :- Can you explain different properties of Object Oriented Systems?
Note:- Difference between abstraction and encapsulation is one of the favorite interview
question and quiet confusing as both the terminology look alike. Best is if you can
brainstorm with your friends or do a little reading.
Following are characteristic’s of Object Oriented System’s :-
6. OOPS
172
Abstraction
It allows complex real world to be represented in simplified manner. Example color is
abstracted to RGB. By just making the combination of these three colors we can achieve
any color in world.It’s a model of real world or concept.
Encapsulation
It is a process of hiding all the internal details of an object from the outside world.
Communication using messages
When application wants to achieve certain task it can only be done using combination of
objects. A single object can not do all the task. Example if we want to make order processing
form.We will use Customer object, Order object, Product object and Payment object to
achieve this functionality. In short these objects should communicate with each other.
This is achieved when objects send messages to each other.
Object lifetime
All objects have life time.Objects are created ,and initialized, necessary functionalities
are done and later the object is destroyed. Every object have there own state and identity
which differ from instance to instance.
Class hierarchies (Inheritance and aggregation)
Twist :- What is difference between Association, Aggregation and Inheritance relationships?
In object oriented world objects have relation and hierarchies in between them. There are
basically three kind of relationship in Object Oriented world :-
Association
This is the simplest relationship between objects. Example every customer has sales. So
Customer object and sales object have an association relation between them.
Aggregation
This is also called as composition model. Example in order to make a “Accounts” class it
has use other objects example “Voucher”, “Journal” and “Cash” objects. So accounts
class is aggregation of these three objects.
173
Inheritance
Hierarchy is used to define more specialized classes based on a preexisting generalized
class. Example we have VEHICLE class and we can inherit this class make more
specialized class like CAR, which will add new attributes and use some existing qualities
of the parent class. Its shows more of a parent-child relationship. This kind of hierarchy
is called inheritance.
Polymorphism
When inheritance is used to extend a generalized class to a more specialized class, it
includes behavior of the top class(Generalized class). The inheriting class often implement
a behavior that can be somewhat different than the generalized class, but the name of the
behavior can be same. It is important that a given instance of an object use the correct
behavior, and the property of polymorphism allows this to happen automatically.
(B) How can we acheive inheritance in VB.NET ?
Note:- The following explanation is for VB.NET
Inheritance is achieved by using “Inherits” keyword in VB.NET (For C# it is “:”). Simple
Sample is provided in CD for understanding inheritance in folder
“WindowsApplicationInheritance”. There are two classes one is the parent “ClsParent”
and second is the child “ClsChild”. Parent class has a string which has to parsed for junk
data “@” and “/”.ClsParent has the functionality which parses only cleans up
“@”.”ClsChild” then inherits from parent and adds extra functionality by parsing “/”.
Public Class ClsParent
Protected strData As String = “jksdhkj@dadad///ajkdhsjakd”
Public Function Parse() As String
Dim PstrData As String
PstrData = strData
PstrData = Replace(PstrData, “@”, “”)
Return PstrData
End Function
Public Function GetActualString() As String
Return strData
End Function
End Class
Above is the source which parses only “@” of strData variable.
174
Public Class ClsChild
Inherits ClsParent
‘ this is child and a special parse function is added which will
also parse “/”
Public Function ParseBackSlash()
Dim PstrData As String
PstrData = Me.Parse()
PstrData = Replace(PstrData, “/”, “”)
Return PstrData
End Function
End Class
Above is the source code for “ClsChild” which does the remaining work. It adds extra
functionality by parsing “/” junk character’s of the data.
Note:- Strdata was accessible only because it was defined as protected in the parent class.
Figure :- 6.1 Inheritance in action
(I) What are abstract classes ?
Following are features of a abstract class :-
√ You can not create a object of abstract class
175
√ Abstract class is designed to act as a base class (to be inherited by other classes).
Abstract class is a design concept in program development and provides a
base upon which other classes are built.
√ Abstract classes are similar to interfaces. After declaring an abstract class, it
cannot be instantiated on its own, it must be inherited.
√ In VB.NET abstract classes are created using “MustInherit” keyword.In C#
we have “Abstract” keyword.
√ Abstract classes can have implementation or pure abstract methods which
should be implemented in the child class.
Note:- In order to understand the concept simple sample of add and multiply functionality
is implemented in “WindowsAbstract” folder in CD.
From interview point of view just saying using “MustInherit” keyword is more than enough
to convince that you have used abstract classes. But to clear simple fundamental let’s try
to understand the sample code. There are two classes one is “ClsAbstract” class and
other is “ClsChild” class. “ClsAbstract” class is a abstract class as you can see the
mustinherit keyword. It has one implemented method “Add” and other is abstract method
which has to be implemented by child class “MultiplyNumber”. In the child class we
inherit the abstract class and implement the multiplynumber function.
Definitely this sample does not take out actually how things are implemented in live
projects. Basically you put all your common functionalities or half implemented
functionality in parent abstract class and later let child class define the full functionality
of the abstract class. Example i always use abstract class with all my SET GET properties
of object in abstract class and later make specialize classes for insert, update, delete for
the corresponding entity object.
Public MustInherit Class ClsAbstract
‘ use the mustinherit class to declare the class as abstract
Public Function Add(ByVal intnum1 As Integer, ByVal intnum2 As
Integer) As Integer
Return intnum1 + intnum2
End Function
‘ left this seconf function to be completed by the inheriting
class
Public MustOverride Function MultiplyNumber(ByVal intnum1 As
Integer, ByVal intnum2 As Integer) As Integer
End Class
176
Public Class ClsChild
Inherits ClsAbstract
‘ class child overrides the Multiplynumber function
Public Overrides Function MultiplyNumber(ByVal intnum1 As
Integer, ByVal intnum2 As Integer) As Integer
Return intnum1 * intnum2
End Function
End Class
Figure :- 6.2 Abstract classes in action
My attitude towards abstract class has been that i put all my common functionality in
abstract class.
(B) What is a Interface ?
Interface is a contract that defines the signature of the functionality. So if a class is
implementing a interface it says to the outer world, that it provides specific behavior.
Example if a class is implementing Idisposable interface that means it has a functionality
to release unmanaged resources. Now external objects using this class know that it has
contract by which it can dispose unused unmanaged objects.
√ Single Class can implement multiple interfaces.
√ If a class implements a interface then it has to provide implementation to all
its methods.
177
Note:- In CD sample “WindowsInterFace” is provided, which has a simple interface
implemented.
In sample there are two files.One has the interface definition and other class implements
the interface. Below is the source code “IInterface” is the interface and “ClsDosomething”
implements the “IInterface”. This sample just displays a simple message box.
Public Interface IInterFace
Sub DoSomething()
End Interface
Public Class ClsDoSomething
Implements IInterFace
Public Sub DoSomething() Implements
WindowsInterFace.IInterFace.DoSomething
MsgBox(“Interface implemented”)
End Sub
End Class
Figure:- 6.3 Interface in action
178
(A) What is difference between abstract classes and
interfaces?
Following are the differences between abstract and interfaces :-
√ Abstract classes can have concrete methods while interfaces have no methods
implemented.
√ Interfaces do not come in inheriting chain, while abstract classes come in
inheritance.
(B) What is a delegate ?
Delegate is a class that can hold a reference to a method or a function. Delegate class has
a signature and it can only reference those methods whose signature is compliant with the
class. Delegates are type-safe functions pointers or callbacks.
Below is a sample code which shows a example of how to implement delegates.
Public Class FrmDelegates
Inherits System.Windows.Forms.Form
Public Delegate Sub DelegateAddString()
Private Sub FrmDelegates_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub AddString()
lstDelegates.Items.Add(“Running AddString() method”)
End Sub
Private Sub cmdDelegates_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles cmdDelegates. Click
Dim objDelegateAddString As DelegateAddString
objDelegateAddString = AddressOf AddString
objDelegateAddString.Invoke()
End Sub
End Class
In the above there is a method called “AddString()” which adds a string to a listbox.You
can also see a delegate declared as :-
Public Delegate Sub DelegateAddString()
This delegate signature is compatible with the “AddString” method. When I mean
compatibility that means that there return types and passing parameter types are same.
179
Later in command click of the button object of the Delegate is created and the method
pointer is received from “AddressOf ” keyword. Then by using the “Invoke” method the
method is invoked.
Figure :- 6.4 Delegate in Action
(B) What are events ?
As compared to delegates events works with source and listener methodology. So listeners
who are interested in receiving some events they subscribe to the source. Once this
subscription is done the source raises events to its entire listener when needed. One
source can have multiple listeners.
In sample given below class “ClsWithEvents” is a event source class, which has a event
“EventAddString()”. Now the listeners who are interested in receiving this events they
can subscribe to this event. In class “FrmWithEvents” you can see they handle clause
which is associated with the “mobjClsWithEvents” objects.
Public Class ClsWithEvents
Event EventAddString(ByVal Value As String)
Public Sub AddString()
RaiseEvent EventAddString(“String added by Event”)
End Sub
End Class
180
Public Class FrmWithEvents
Inherits System.Windows.Forms.Form
Private WithEvents mobjClsWithEvents As New ClsWithEvents()
Private Sub FrmWithEvents_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub mobjClsWithEvents_EventAddString(ByVal Value As
String) Handles mobjClsWithEvents.EventAddString
LstData.Items.Add(Value)
End Sub
Private Sub CmdRunEvents_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles CmdRunEvents.Click
mobjClsWithEvents.AddString()
End Sub
End Class
Figure :- 6.5 Events in action
Nore:- Above source code is provided in “WindowsEvent”
181
(I) Do events have return type ?
No, events do not have return type.
(A) Can event’s have access modifiers ?
Event’s are always public as they are meant to serve every one register ing to it. But you
can access modifiers in events.You can have events with protected keyword which will
be accessible only to inherited classes.You can have private events only for object in that
class.
(A) Can we have shared events ?
Yes, you can have shared event’s note only shared methods can raise shared events.
(I) What is shadowing ?
When two elements in a program have same name, one of them can hide and shadow the
other one. So in such cases the element which shadowed the main element is referenced.
Below is a sample code, there are two classes “ClsParent” and “ClsShadowedParent”. In
“ClsParent” there is a variable “x” which is a integer. “ClsShadowedParent” overrides
“ClsParent” and shadows the “x” variable to a string.
Note:- In Sample CD “WindowsShadowing” is folder which has the sample code. If you
run the program you can have two output’s one which shows a integer and other which shows
a string.
Public Class ClsParent
Public x As Integer
End Class
Public Class ClsShadowedParent
Inherits ClsParent
Public Shadows x As String
End Class
182
Figure :- 6.6 Shadowing in Action
(A) What is the difference between Shadowing and
Overriding ?
Following are the differences between shadowing and overriding :-
√ Overriding redefines only the implementation while shadowing redefines the
whole element.
√ In overriding derived classes can refer the parent class element by using “ME”
keyword, but in shadowing you can access it by “MYBASE”.
(I) What is the difference between delegate and events?
√ Actually events use delegates in bottom. But they add an extra layer on the
delegates, thus forming the publisher and subscriber model.
√ As delegates are function to pointers they can move across any clients. So any
of the clients can add or remove events, which can be pretty confusing. But
events give the extra protection by adding the layer and making it a publisher
and subscriber model.
183
Just imagine one of your clients doing this
c.XyzCallback = null
This will reset all your delegates to nothing and you have to keep searching where the
error is.
(B) If we inherit a class do the private variables also get
inherited ?
Yes, the variables are inherited but can not be accessed directly by the class interface.
(B) What are the different accessibility levels defined in .NET
?
Following are the five levels of access modifiers :-
√ Private : Only members of class have access.
√ Protected :-All members in current class and in derived classes can access the
variables.
√ Friend (internal in C#) :- Only members in current project have access to the
elements.
√ Protected friend (protected internal in C#) :- All members in current project
and all members in derived class can access the variables.
√ Public :- All members have access in all classes and projects.
(I) Can you prevent a class from overriding ?
If you define a class as “Sealed” in C# and “NotInheritable” in VB.NET you can not
inherit the class any further.
(I) What is the use of “MustInherit” keyword in VB.NET ?
If you want to create a abstract class in VB.NET it’s done by using “MustInherit”
keyword.You can not create an object of a class which is marked as “MustInherit”. When
you define “MustInherit” keyword for class you can only use the class by inheriting.
184
Note :- There was huge typo in my previous versions for the above two questions. I hope
some one has not lost good oppurtunity because of the same. Thanks to all my readers for
pointing it out.
(I) Do interface have accessibility modifier?
All elements in Interface should be public. So by default all interface elements are public
by default.
(A) What are similarities between Class and structure ?
Following are the similarities between classes and structures :-
√ Both can have constructors, methods, properties, fields, constants,
enumerations, events, and event handlers.
√ Structures and classes can implement interface.
√ Both of them can have constructors with and without parameter.
√ Both can have delegates and events.
(A) What is the difference between Class and structure’s ?
Following are the key differences between them :-
√ Structure are value types and classes are reference types. So structures use
stack and classes use heap.
√ Structures members can not be declared as protected, but class members can
be. You can not do inheritance in structures.
√ Structures do not require constructors while classes require.
√ Objects created from classes are terminated using Garbage collector. Structures
are not destroyed using GC.
(B) What does virtual keyword mean ?
They signify that method and property can be overridden.
(B) What are shared (VB.NET)/Static(C#) variables?
185
Static/Shared classes are used when a class provides functionality which is not specific to
any instance. In short if you want an object to be shared between multiple instances you
will use a static/Shared class.
Following are features of Static/Shared classes :-
√ They can not be instantiated. By default a object is created on the first method
call to that object.
√ Static/Shared classes can not be inherited.
√ Static/Shared classes can have only static members.
√ Static/Shared classes can have only static constructor.
Note :- In CD there is a folder “WindowsShared” which has a sample code for shared
variables.Below is a snippet. It has a “AddCount” function which increments a static
“intCount” variable. In form there are two buttons which creates a new object and displays
the count of the static variable. Even though the object is created and destroyed, the variable
values does not change. It retains its old value.
Public Class ClsShared
Shared intCount As Integer
Public Function AddCount() As Integer
intCount = intCount + 1
Return intCount
End Function
End Class
Public Class FrmSharedClasses
Inherits System.Windows.Forms.Form
Private Sub CmdInstance1_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles CmdInstance1.Click
Dim pobjClsShared As New ClsShared()
MessageBox.Show(“The count at this moment is” &
pobjClsShared.AddCount.ToString())
End Sub
Private Sub CmdInstance2_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles CmdInstance2.Click
Dim pobjClsShared As New ClsShared()
MessageBox.Show(“The count at this moment is” &
pobjClsShared.AddCount.ToString())
186
End Sub
End Class
Figure :- 6.7 Shared/Static In Action
(B) What is Dispose method in .NET ?
.NET provides “Finalize” method in which we can clean up our resources. But relying on
this is not always good so the best is to implement “Idisposable” interface and implement
the “Dispose” method where you can put your clean up routines.
(B) What is the use of “OverRides” and “Overridable”
keywords ?
Overridable is used in parent class to indicate that a method can be overridden. Overrides
is used in the child class to indicate that you are overriding a method
(A) Where are all .NET Collection classes located ?
187
System.Collection namespace has all the collection classes available in .NET.
(A) What is ArrayList ?
Array is whose size can increase and decrease dynamically. Array list can hold item of
different types. As Array list can increase and decrease size dynamically you do not have
to use the REDIM keyword. You can access any item in array using the INDEX value of
the array position.
(A) What’s a HashTable ?
Twist :- What’s difference between HashTable and ArrayList ?
You can access array using INDEX value of array, but how many times you know the
real value of index. Hashtable provides way of accessing the index using a user identified
KEY value, thus removing the INDEX problem.
(A) What are queues and stacks ?
Queue is for first-in, first-out (FIFO) structures. Stack is for last-in, first-out (LIFO)
structures.
(B) What is ENUM ?
It’s used to define constants.
(A) What is nested Classes ?
Nested classes are classes within classes. In sample below “ClsNested” class has a
“ChildNested” class nested inside it.
Public Class ClsNested
Public Class ChildNested
Public Sub ShowMessage()
MessageBox.Show(“Hi this is nested class”)
End Sub
End Class
End Class
This is the way we can instantiate the nested class and make the method call.
Dim pobjChildNested As New ClsNested.ChildNested()
pobjChildNested.ShowMessage()
188
Note:-In CD the above sample is provided in “WindowsNestedClasses”.
(B)What is Operator Overloading in .NET?
It provides a way to define and use operators such as +, -, and / for user-defined classes
or structs. It allows us to define/redefine the way operators work with our classes and
structs. This allows programmers to make their custom types look and feel like simple
types such as int and string.
VB.NET till now does not support operator overloading. Operator overloading is done
by using the “Operator” keyword.
Note:- Operator overloading is supported in VB.NET 2005
(I) In below sample code if we create a object of class2
which constructor will fire first ?
Public Class Class1
Sub New()
End Sub
End Class
Public Class class2
Inherits Class1
Sub New()
End Sub
End Class
* I leave this to the readers......
(B)What is the significance of Finalize method in .NET?
.NET Garbage collector does almost all clean up activity for your objects. But unmanaged
resources (ex: - Windows API created objects, File, Database connection objects, COM
objects etc) is outside the scope of .NET framework we have to explicitly clean our
resources. For these types of objects .NET framework provides Object. Finalize method
189
which can be overridden and clean up code for unmanaged resources can be put in this
section.
(A)Why is it preferred to not use finalize for clean up?
Problem with finalize is that garbage collection has to make two rounds in order to remove
objects which have finalize methods.
Below figure will make things clear regarding the two rounds of garbage collection rounds
performed for the objects having finalized methods.
In this scenario there are three objects Object1, Object2 and Object3. Object2 has the
finalize method overridden and remaining objects do not have the finalize method
overridden.
Now when garbage collector runs for the first time it searches for objects whose memory
has to free. He can see three objects but only cleans the memory for Object1 and Object3.
Object2 it pushes to the finalization queue.
Now garbage collector runs for the second time. He see’s there are no objects to be
released and then checks for the finalization queue and at this moment it clears object2
from the memory.
So if you notice that object2 was released from memory in the second round and not first.
That’s why the best practice is not to write clean up Non.NET resources in Finalize
method rather use the DISPOSE.
190
Figure :- 6.8 Garbage collection in actions
(I)How can we suppress a finalize method?
GC.SuppressFinalize ()
(B)What is the use of DISPOSE method?
Dispose method belongs to IDisposable interface. We had seen in the previous section
how bad it can be to override the finalize method for writing the cleaning of unmanaged
resources. So if any object wants to release its unmanaged code best is to implement
191
IDisposable and override the Dispose method of IDisposable interface. Now once your
class has exposed the Dispose method it’s the responsibility of the client to call the
Dispose method to do the cleanup.
(A)How do I force the Dispose method to be called
automatically, as clients can forget to call Dispose method?
Note :- I admire this question.
Call the Dispose method in Finalize method and in Dispose method suppress the finalize
method using GC.SuppressFinalize. Below is the sample code of the pattern. This is the
best way we do clean our unallocated resources and yes not to forget we do not get the hit
of running the Garbage collector twice.
Note:- It will suppress the finalize method thus avoiding the two trip.
Public Class ClsTesting
Implements IDisposable
Public Overloads Sub Dispose()Implements IDisposable.Dispose
' write ytour clean up code here
GC.SuppressFinalize(Me)
End Sub
Protected Overrides Sub Finalize()
Dispose()
End Sub
End Class
(I)In what instances you will declare a constructor to be
private?
When we create a private constructor, we can not create object of the class directly from
a client. So you will use private constructors when you do not want instances of the class
to be created by any external client. Example UTILITY functions in project will have no
192
instance and be used with out creating instance, as creating instances of the class would
be waste of memory.
(I)Can we have different access modifiers on get/set
methods of a property ?
No we can not have different modifiers same property. The access modifier on a property
applies to both its get and set accessors.
(I)If we write a goto or a return statement in try and catch
block will the finally block execute ?
The code in then finally always run even if there are statements like goto or a return
statements.
(A)What is Indexer ?
An indexer is a member that enables an object to be indexed in the same way as an array.
(A)Can we have static indexer in C# ?
No.
(A)Can two catch blocks be executed?
No, once the proper catch section is executed the control goes finally to block. So there
will not be any scenarios in which multiple catch blocks will be executed.
(A) What is the difference between System.String and
System.StringBuilder classes?
System.String is immutable; System.StringBuilder can have mutable string where a variety
of operations can be performed.
193
7. ASP.NET
(B) What’ is the sequence in which ASP.NET events are
processed ?
Following is the sequence in which the events occur :-
√ Page_Init.
√ Page_Load.
√ Control events
√ Page_Unload event.
Page_init event only occurs when first time the page is started, but Page_Load occurs in
subsequent request of the page.
(B) In which event are the controls fully loaded ?
Page_load event guarantees that all controls are fully loaded. Controls are also accessed
in Page_Init events but you will see that viewstate is not fully loaded during this event.
(B) How can we identify that the Page is PostBack ?
Page object has a “IsPostBack” property which can be checked to know that is the page
posted back.
(B) How does ASP.NET maintain state in between
subsequent request ?
Refer caching chapter.
(A) What is event bubbling ?
Server controls like Datagrid, DataList, Repeater can have other child controls inside
them. Example DataGrid can have combo box inside datagrid. These child control do not
raise there events by themselves, rather they pass the event to the container parent (which
can be a datagrid, datalist, repeater), which passed to the page as “ItemCommand” event.
As the child control send there events to parent this is termed as event bubbling.
194
(B) How do we assign page specific attributes ?
Page attributes are specified using the @Page directive.
(A) If we want to make sure that no one has tampered with
ViewState, how do we ensure it?
Using the @Page directive EnableViewStateMac to True.
(B) What is the use of @ Register directives ?
@Register directive informs the compiler of any custom server control added to the
page.
(B) What’s the use of SmartNavigation property ?
It’s a feature provided by ASP.NET to prevent flickering and redrawing when the page is
posted back.
Note:- This is only supported for IE browser. Project’s who have browser compatibility as
requirements have to think some other ways of avoiding flickering.
(B) What is AppSetting Section in “Web.Config” file ?
Web.config file defines configuration for a webproject. Using “AppSetting” section we
can define user defined values. Example below defined is “ConnectionString” section
which will be used through out the project for database connection.
(B) Where is ViewState information stored ?
In HTML Hidden Fields.
195
(I) What is the use of @ OutputCache directive in ASP.NET?
It is basically used for caching. See more for Caching chapter.
(B) How can we create custom controls in ASP.NET ?
User controls are created using .ASCX in ASP.NET. After .ASCX file is created you need
to two things in order that the ASCX can be used in project:.
√ Register the ASCX control in page using the <%@ Register directive. Example
<%@ Register tagprefix="Accounting" Tagname="footer" Src="Footer.ascx" %>
√ Now to use the above accounting footer in page you can use the below directive.
(B) How many types of validation controls are provided by
ASP.NET ?
There are six main types of validation controls :-
RequiredFieldValidator
It checks whether the control have any value. It's used when you want the control should
not be empty.
RangeValidator
It checks if the value in validated control is in that specific range. Example
TxtCustomerCode should not be more than eight length.
CompareValidator
It checks that the value in controls should match some specific value. Example Textbox
TxtPie should be equal to 3.14.
RegularExpressionValidator
When we want the control value should match with a specific regular expression.
196
CustomValidator
It is used to define UserDefined validation.
ValidationSummary
It displays summary of all current validation errors.
Note:- It's rare that some one will ask step by step all the validation controls. Rather they
will ask for what type of validation which validator will be used. Example in one of the
interviews i was asked how you display summary of all errors in the validation
control...just uttered one word Validation summary.
(B) Can you explain what is “AutoPostBack” feature in
ASP.NET ?
If we want the control to automatically postback in case of any event, we will need to
check this attribute as true. Example on a ComboBox change we need to send the event
immediately to the server side then set the “AutoPostBack” attribute to true.
(B) How can you enable automatic paging in DataGrid ?
Following are the points to be done in order to enable paging in Datagrid :-
√ Set the “AllowPaging” to true.
√ In PageIndexChanged event set the current pageindex clicked.
Note:- The answers are very short, if you have implemented practically its just a revision.
If you are fresher just make sample code using Datagrid and try to implement this
functionality.
(B) What’s the use of “GLOBAL.ASAX” file ?
It allows to executing ASP.NET application level events and setting application-level
variables.
(B) What is the difference between “Web.config” and
“Machine.Config” ?
197
“Web.config” files apply settings to each web application, while “Machine.config” file
apply settings to all ASP.NET applications.
(B) What is a SESSION and APPLICATION object ?
Session object store information between HTTP requests for a particular user, while
application object are global across users.
(A) What is the difference between Server.Transfer and
response.Redirect ?
Following are the major differences between them:-
√ Response.Redirect sends message to the browser saying it to move to some
different page, while server.transfer does not send any message to the browser
but rather redirects the user directly from the server itself. So in server.transfer
there is no round trip while response.redirect has a round trip and hence puts
a load on server.
√ Using Server.Transfer you can not redirect to a different from the server itself.
Example if your server is www.yahoo.com you can use server.transfer to move
to www.microsoft.com but yes you can move to www.yahoo.com/travels, i.e.
within websites. This cross server redirect is possible only using
Response.redirect.
√ With server.transfer you can preserve your information. It has a parameter
called as “preserveForm”. So the existing query string etc. will be able in the
calling page.
If you are navigating within the same website use “Server.transfer” or else go for
“response.redirect()”
(A)What is the difference between Authentication and
authorization?
This can be a tricky question. These two concepts seem altogether similar but there is
wide range of difference. Authentication is verifying the identity of a user and authorization
is process where we check does this identity have access rights to the system. In short we
can say the following authentication is the process of obtaining some sort of credentials
198
from the users and using those credentials to verify the user’s identity. Authorization is
the process of allowing an authenticated user access to resources. Authentication always
proceed to Authorization; even if your application lets anonymous users connect and use
the application, it still authenticates them as being anonymous.
(I) What is impersonation in ASP.NET ?
By default, ASP.NET executes in the security context of a restricted user account on the
local machine. Sometimes you need to access network resources such as a file on a shared
drive, which requires additional permissions. One way to overcome this restriction is to
use impersonation. With impersonation, ASP.NET can execute the request using the
identity of the client who is making the request, or ASP.NET can impersonate a specific
account you specify in web.config.
(B) Can you explain in brief how the ASP.NET authentication
process works?
ASP.NET does not run by itself, it runs inside the process of IIS. So there are two
authentication layers which exist in ASP.NET system. First authentication happens at
the IIS level and then at the ASP.NET level depending on the WEB.CONFIG file.
Below is how the whole process works:-
√ IIS first checks to make sure the incoming request comes from an IP address
that is allowed access to the domain. If not it denies the request.
√ Next IIS performs its own user authentication if it is configured to do so. By
default IIS allows anonymous access, so requests are automatically
authenticated, but you can change this default on a per – application basis
with in IIS.
√ If the request is passed to ASP.net with an authenticated user, ASP.net checks
to see whether impersonation is enabled. If impersonation is enabled, ASP.net
acts as though it were the authenticated user. If not ASP.net acts with its own
configured account.
√ Finally the identity from step 3 is used to request resources from the operating
system. If ASP.net authentication can obtain all the necessary resources it
grants the users request otherwise it is denied. Resources can include much
more than just the ASP.net page itself you can also use .Net’s code access
199
security features to extend this authorization step to disk files, Registry keys
and other resources.
(A) What are the various ways of authentication techniques
in ASP.NET?
Selecting an authentication provider is as simple as making an entry in the web.config file
for the application. You can use one of these entries to select the corresponding built in
authentication provider:
√
√
√
√ Custom authentication where you might install an ISAPI filter in IIS that
compares incoming requests to list of source IP addresses, and considers
requests to be authenticated if they come from an acceptable address. In that
case, you would set the authentication mode to none to prevent any of the
.net authentication providers from being triggered.
Windows authentication and IIS
If you select windows authentication for your ASP.NET application, you also have to
configure authentication within IIS. This is because IIS provides Windows authentication.
IIS gives you a choice for four different authentication methods:
Anonymous,basic,digest and windows integrated
If you select anonymous authentication, IIS doesn’t perform any authentication, Any one
is allowed to access the ASP.NET application.
If you select basic authentication, users must provide a windows username and password
to connect. How ever this information is sent over the network in clear text, which makes
basic authentication very much insecure over the internet.
If you select digest authentication, users must still provide a windows user name and
password to connect. However the password is hashed before it is sent across the network.
Digest authentication requires that all users be running Internet Explorer 5 or later and
that windows accounts to stored in active directory.
200
If you select windows integrated authentication, passwords never cross the network.
Users must still have a username and password, but the application uses either the Kerberos
or challenge/response protocols authenticate the user. Windows-integrated authentication
requires that all users be running internet explorer 3.01 or later Kerberos is a network
authentication protocol. It is designed to provide strong authentication for client/server
applications by using secret-key cryptography. Kerberos is a solution to network security
problems. It provides the tools of authentication and strong cryptography over the network
to help to secure information in systems across entire enterprise
Passport authentication
Passport authentication lets you to use Microsoft’s passport service to authenticate users
of your application. If your users have signed up with passport, and you configure the
authentication mode of the application to the passport authentication, all authentication
duties are off-loaded to the passport servers.
Passport uses an encrypted cookie mechanism to indicate authenticated users. If users
have already signed into passport when they visit your site, they’ll be considered
authenticated by ASP.NET. Otherwise they’ll be redirected to the passport servers to log
in. When they are successfully log in, they’ll be redirected back to your site
To use passport authentication you have to download the Passport Software Development
Kit (SDK) and install it on your server. The SDK can be found at http://
msdn.microsoft.com/library/default.asp?url=/downloads/list/websrvpass.aps. It includes
full details of implementing passport authentication in your own applications.
Forms authentication
Forms authentication provides you with a way to handle authentication using your own
custom logic with in an ASP.NET application. The following applies if you choose forms
authentication.
√ When a user requests a page for the application, ASP.NET checks for the
presence of a special session cookie. If the cookie is present, ASP.NET assumes
the user is authenticated and processes the request.
√ If the cookie isn’t present, ASP.NET redirects the user to a web form you
provide
201
You can carry out whatever authentication, it check’s you like it checks your form. When
the user is authenticated, you indicate this to ASP.NET by setting a property, which
creates the special cookie to handle subsequent requests.
(A)How does authorization work in ASP.NET?
ASP.NET impersonation is controlled by entries in the applications web.config file. The
default setting is “no impersonation”. You can explicitly specify that ASP.NET shouldn’t
use impersonation by including the following code in the file
It means that ASP.NET will not perform any authentication and runs with its own
privileges. By default ASP.NET runs as an unprivileged account named ASPNET. You
can change this by making a setting in the processModel section of the machine.config
file. When you make this setting, it automatically applies to every site on the server. To
user a high-privileged system account instead of a low-privileged set the userName attribute
of the processModel element to SYSTEM. Using this setting is a definite security risk, as
it elevates the privileges of the ASP.NET process to a point where it can do bad things to
the operating system.
When you disable impersonation, all the request will run in the context of the account
running ASP.NET: either the ASPNET account or the system account. This is true when
you are using anonymous access or authenticating users in some fashion. After the user
has been authenticated, ASP.NET uses its own identity to request access to resources.
The second possible setting is to turn on impersonation.
In this case, ASP.NET takes on the identity IIS passes to it. If you are allowing anonymous
access in IIS, this means ASP.NET will impersonate the IUSR_ComputerName account
that IIS itself uses. If you aren’t allowing anonymous access,ASP.NET will take on the
credentials of the authenticated user and make requests for resources as if it were that
user. Thus by turning impersonation on and using a non-anonymous method of
authentication in IIS, you can let users log on and use their identities within your ASP.NET
application.
Finally, you can specify a particular identity to use for all authenticated requests
>
202
With this setting, all the requests are made as the specified user (Assuming the password
it correct in the configuration file). So, for example you could designate a user for a single
application, and use that user’s identity every time someone authenticates to the
application. The drawback to this technique is that you must embed the user’s password
in the web.config file in plain text. Although ASP.NET won’t allow anyone to download
this file, this is still a security risk if anyone can get the file by other means.
(B)What’s difference between Datagrid, Datalist and repeater
?
A Datagrid, Datalist and Repeater are all ASP.NET data Web controls.
They have many things in common like DataSource Property, DataBind Method
ItemDataBound and ItemCreated.
When you assign the DataSource Property of a Datagrid to a DataSet then each DataRow
present in the DataRow Collection of DataTable is assigned to a corresponding
DataGridItem and this is same for the rest of the two controls also. But The HTML code
generated for a Datagrid has an HTML TABLE element created for the particular
DataRow and its a Table form representation with Columns and Rows.
For a Datalist its an Array of Rows and based on the Template Selected and the
RepeatColumn Property value We can specify how many DataSource records should
appear per HTML row. In short in datagrid we have one record per row, but in
No comments:
Post a Comment