Application object can
be used in situation where we want data to be shared across users globally.
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.
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.
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.
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.
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.
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.
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.
- 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.
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.
What are ASP.NET
session and compare ASP.NET session with classic
ASP session variables?
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.
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).
SQL SERVER - In this mode Session state is serialized and stored in a
SQL Server database.
Session state can be
specified in <sessionState> 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.
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.
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.
- <machineKey>
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.
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.
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
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.
- 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
<input
id="HiddenValue" type="hidden" value="Initial
Value" runat="server"NAME="HiddenValue">
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.
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.
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();
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.
<FRAMESET
cols="100%,*,*">
<FRAMESET
rows="100%">
<FRAME
src="data_of_frame1.html"></FRAMESET>
<FRAME
src="data_of_hidden_frame.html">
<FRAME
src="data_of_hidden_frame.html" frameborder="0"
noresize scrolling="yes">
</FRAMESET>
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.
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 and be tampered thus creating security hole.
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”))
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:
- 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”).
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))
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, to
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.
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.
Click below links for more .NET Interview Questions and Answers
.NET Interview 1
.NET Interview 2
.NET Interview 3
Click below links for more .NET Interview Questions and Answers
.NET Interview 1
.NET Interview 2
.NET Interview 3