<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-3334571753847335785</atom:id><lastBuildDate>Thu, 19 Sep 2024 21:59:29 +0000</lastBuildDate><category>Assembly</category><category>Vb.Net</category><category>.Net</category><category>.Net Framework 2.0 update not found. The win32manifest will not be embedded</category><category>.ashx</category><category>.asmx</category><category>.aspx</category><category>70-536</category><category>ASP.Net server controls</category><category>Asp.net request processing</category><category>Attirbutes</category><category>Begin</category><category>Chrome</category><category>Client side vs server side validation</category><category>CompareValidator</category><category>Custom Validator</category><category>Distributed Transaction</category><category>Exception</category><category>GetExecutingAssembly</category><category>HTTP Handler</category><category>HTTP Modules</category><category>HttpContext</category><category>HttpRequest</category><category>HttpResponse</category><category>ISAPI</category><category>IsolationLevel</category><category>Load</category><category>LoadFrom</category><category>Local Transaction</category><category>Named Pipes Provider</category><category>Nullable type</category><category>ODBC</category><category>OleDb</category><category>Oracle</category><category>Partition by</category><category>REquest pipeline</category><category>RangeValidator</category><category>References</category><category>Reflection</category><category>Request</category><category>Required file &#39;alink.dll with IAlink3&#39; could not found</category><category>RequiredFieldValidator</category><category>Response</category><category>Rollback</category><category>Rownumber</category><category>SQL Server 2005 connection problem</category><category>SqlClient</category><category>Sqlserver 2005</category><category>Transaction</category><category>TransactionScope</category><category>Validation summary</category><category>Vista</category><category>asp.net page lifecycle</category><category>asp.net page stages</category><category>commit</category><category>connection string</category><category>delete duplicate rows</category><category>dynamic</category><category>error: 40 - Could not open a connection to SQL Server</category><category>get property</category><category>propertyinfo</category><category>set property</category><category>type</category><category>types</category><title>Nitty-gritty of .net</title><description>My experience with .Net,SQL Server,XML</description><link>http://dotnetnitty-gritty.blogspot.com/</link><managingEditor>noreply@blogger.com (Priyanks)</managingEditor><generator>Blogger</generator><openSearch:totalResults>29</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-2083621968744489454</guid><pubDate>Sun, 25 Jan 2009 02:20:00 +0000</pubDate><atom:updated>2009-01-25T13:33:29.942+11:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Client side vs server side validation</category><title>Client-Side vs. Server-Side Validation</title><description>If the browser supports DHTML, ASP.NET validation controls can perform validation by using client script . The advantage of using client script is that a feedback can be provided without a response from the server . The validation controls automatically detect whether the browser supports DHTML and perform the validation accordingly.&lt;br /&gt;&lt;br /&gt;The error display mechanism for client side is same as server-side validation. Validation is performed on the server even if it was already performed on the client. This enables you to determine the validation status in the server code and ensure security against users bypassing client-side validation.&lt;br /&gt;&lt;br /&gt;If validation is performed on the client, validation controls include some additional features:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If you are summarizing validation error messages, you can display them in a message box that appears when the user submits the page.&lt;/li&gt;&lt;li&gt;Validation controls present the same object model on the client as on the server. For example, you can test validation by reading a validation control&#39;s IsValid property the same way, on both the client and the server. However, there are differences in the validation information exposed at the page level. &lt;strong&gt;On the server, the page supports properties; on the client, it contains global variables&lt;/strong&gt;. &lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;             Client : Page_IsValid&lt;br /&gt;             Server : IsValid &lt;/li&gt;&lt;li&gt;             Client : Page_Validators (array). Contains references to all validation controls on te page.    Server: Validators (collection). Contains references to all validation controls.&lt;/li&gt;&lt;li&gt; Client : &lt;strong&gt;Page_ValidationActive&lt;/strong&gt;. A Boolean value that indicates whether validation should take place. Set this variable to false to turn off client-side validation programmatically.&lt;br /&gt;Server : Not applicable&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br /&gt;Note : If client-side validation is enabled, the page includes references to script libraries that are used to perform the client-side validation.When you use a RegularExpressionValidator control, the expressions can be checked on the client if an &lt;strong&gt;ECMAScript&lt;/strong&gt;-compatible language, such as Microsoft JScript is available. Client-side regular expressions differ in small details from the regular expression checking done on the server by using the Regex class.The page includes a client-side method to intercept and handle the Click event before the page is submitted.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Source of Reference : MSDN&lt;/p&gt;</description><link>http://dotnetnitty-gritty.blogspot.com/2009/01/client-side-vs-server-side-validation.html</link><author>noreply@blogger.com (Priyanks)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-3318161733288404225</guid><pubDate>Sun, 25 Jan 2009 02:02:00 +0000</pubDate><atom:updated>2009-01-25T13:20:07.775+11:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CompareValidator</category><category domain="http://www.blogger.com/atom/ns#">Custom Validator</category><category domain="http://www.blogger.com/atom/ns#">RangeValidator</category><category domain="http://www.blogger.com/atom/ns#">RequiredFieldValidator</category><category domain="http://www.blogger.com/atom/ns#">Validation summary</category><title>Validation controls</title><description>Validation controls contain 5 controls that make comparisons and 1 control that summarizes any errors that appear. All validation controls need to be placed within a Form or a Panel control, or inside a control&#39;s template on a mobile Web page. A validation control  can be dragged onto a mobile user control page.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;RequiredFieldValidator&lt;/strong&gt;  : Used to validate  user entered data into a SelectionList or TextBox control. With a SelectionList control, the user needs to select an item in the list. With a TextBox control, the user needs to enter a value.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;CompareValidator:&lt;/strong&gt; Used to&lt;strong&gt; &lt;/strong&gt; compare the data value entered by the user to a value in another control.  Set the &lt;strong&gt;ControlToCompare&lt;/strong&gt; property to the string in the id property of the SelectionList or TextBox control that contains the comparison value and the ValueToCompare property to the comparison value .&lt;/li&gt;&lt;li&gt; &lt;strong&gt;RangeValidator :&lt;/strong&gt; Used to&lt;strong&gt; &lt;/strong&gt;validate whether user input falls within a specified range. Use the MinimumValue and MaximumValue properties. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;RegularExpressionValidator : &lt;/strong&gt;to test whether the user input in a TextBox or SelectionList control matches a regular expression. The regular expression pattern is specified in its &lt;strong&gt;ValidationExpression&lt;/strong&gt; property. You can specify regular expressions or select from a list of predefined expressions.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;CustomValidator :&lt;/strong&gt; Use this to create a control that performs customized validation&lt;strong&gt;.&lt;/strong&gt; It also validates input from the TextBox or SelectionList control. Set its &lt;strong&gt;ControlToValidate&lt;/strong&gt; property to the ID of the control, to validate. When a form that contains a CustomValidator control is posted to the server, the CustomValidator control raises a ServerValidate event. In this event, you can write the custom validation code you want. Eventually, you can set the &lt;strong&gt;IsValid&lt;/strong&gt; property of the validation eventArgs to true or false, depending on the outcome of the validation. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;ValidationSummary:&lt;/strong&gt; Use to  to present the user with a list of validation errors that occurred when a form was posted on the server. The mobile version of the ValidationSummary control displays a back-link for the user to return to the form and correct the data entered.  &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Each validation control can display an error message at the position of the validation control on the form. Validation errors can be collected in a validation summary control and can be displayed at a single place, such as at the top of the page. &lt;/p&gt;&lt;p&gt;Set the &lt;strong&gt;Display&lt;/strong&gt; property  to &lt;strong&gt;None&lt;/strong&gt;, &lt;strong&gt;Static&lt;/strong&gt; , or &lt;strong&gt;Dynamic&lt;/strong&gt; , to check whether the validation control displays error messages. You can select Dynamic to display the results of the validation, and None, if you do not want to display the results. In the current version of the ASP.NET mobile controls, Dynamic and Static have similar meaning. &lt;/p&gt;&lt;p&gt;You can use the mobile version of the ValidationSummary control to display a list of validation errors that occurred when a form was submitted. This control lists all the error messages generated by the other validation controls on the form. The ValidationSummary control obtains the error message strings from the &lt;strong&gt;ErrorMessage&lt;/strong&gt; properties of the validation controls.&lt;/p&gt;</description><link>http://dotnetnitty-gritty.blogspot.com/2009/01/validation-controls.html</link><author>noreply@blogger.com (Priyanks)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-7739299155442565347</guid><pubDate>Sat, 24 Jan 2009 08:01:00 +0000</pubDate><atom:updated>2009-01-24T19:50:45.498+11:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ASP.Net server controls</category><title>Server Controls</title><description>&lt;p&gt;On receiving a request, ASP.Net examines the request, by using a User Agent retrieved from the header of HTTP Request, to find out the brower type and version for outputting the HTML specific to that browser.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;When you are using server controls, you do not need to specify the HTML that is to be the output from the server-side code.  You can specify the functionality you want to see in the browser, and ASP.NET  decides the output to be sent to the browser.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Label&lt;/p&gt;&lt;p&gt;TextBox : It can be mapped to the following HTML elements used in your forms:&lt;br /&gt;&lt;br /&gt;Standard TextBox&lt;br /&gt;Multiline TextBox&lt;br /&gt;Password Field&lt;br /&gt;&lt;br /&gt;Button: Use the button to submit forms. You can also manage the items on your forms by using the Button control’s OnClick event.&lt;br /&gt;&lt;br /&gt;DropDownList: With this, you can place an HTML select box on your Web page and set it against the select box. You can use this control when you want the user to select a single item from a list of multiple items. The select box generated by the DropDownList control displays a single item and allows the user to select one item from the list.&lt;br /&gt;&lt;br /&gt;ListBox: displays a collection of items. The ListBox control displays more of the collection to the user and allows the user to make multiple selections from the collection.&lt;br /&gt;&lt;br /&gt;CheckBox or CheckBoxList:  By using check boxes on a Web Form, users can either select from a collection of items or specify the value of an item to be yes/no, on/off, or true/false.   You can use multiple CheckBox controls on your ASP.NET pages, treating each check box as its own element with associated events. The CheckBoxList control allows you to put multiple check boxes on the form and create specific events for the entire group.&lt;br /&gt;&lt;br /&gt;RadioButton or RadioButtonList:  Radio buttons are form elements that require at least two options. The RadioButtonList server control allows you to display a collection of radio buttons on a Web page. The RadioButtonList control allows you to iterate through to see what the user selected, to make counts, or to perform other actions.&lt;br /&gt;&lt;br /&gt;Source of Reference : MSDN&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description><link>http://dotnetnitty-gritty.blogspot.com/2009/01/server-controls.html</link><author>noreply@blogger.com (Priyanks)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-272498484601346951</guid><pubDate>Tue, 20 Jan 2009 10:45:00 +0000</pubDate><atom:updated>2009-01-20T22:29:35.481+11:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.ashx</category><category domain="http://www.blogger.com/atom/ns#">.asmx</category><category domain="http://www.blogger.com/atom/ns#">.aspx</category><category domain="http://www.blogger.com/atom/ns#">HTTP Handler</category><title>HTTP Handler in detail</title><description>The process that runs in response to a request made to an ASP.NET Web application is the HTTP handler ( or endpoint). When users request an .aspx, .asmx, or .ashx file, the page processes the request through the page handler.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Uses:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It can be created to render custom utput to the browser.&lt;/li&gt;&lt;li&gt;It add new functionalities to the Web server.&lt;/li&gt;&lt;li&gt;It can be created to generate RSS-formatted XML. You can then bind a file name extension such as .rss to the custom handler. When users send a request to your site in a format that ends in .rss, the Web application sends the request to the HTTP handler to process the request.&lt;/li&gt;&lt;li&gt;Image server. HTTP handlers can be used to resize the images in a Web application. When you want a Web application to resize the images, you can write a custom handler to resize the images, and then send them to the user as the handler&#39;s response.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;ASP.NET maps HTTP requests to HTTP handlers, based on a file name extension. Each HTTP handler can process individual HTTP URLs or groups of URL extensions in an application. ASP.NET includes the following built-in HTTP handlers:&lt;br /&gt;&lt;strong&gt;ASP.NET page handler (*.aspx)&lt;/strong&gt; : default HTTP handler for all ASP.NET pages.&lt;br /&gt;&lt;strong&gt;Web service handler (*.asmx):&lt;/strong&gt; default HTTP handler for Web service pages created as .asmx files in ASP.NET.&lt;br /&gt;&lt;strong&gt;Generic Web handler (*.ashx&lt;/strong&gt;): default HTTP handler for all Web handlers that do not have a user interface (UI) and that include the @WebHandler directive.&lt;br /&gt;&lt;strong&gt;Trace handler (trace.axd):&lt;/strong&gt; displays current page trace information.&lt;br /&gt;&lt;br /&gt;A Http Handler for performing synchronous processing of requests:&lt;br /&gt;&lt;br /&gt;public class HelloWorldHandler : IHttpHandler&lt;br /&gt;{&lt;br /&gt;public HelloWorldHandler()&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//The ProcessRequest method is responsible for processing individual&lt;br /&gt;//HTTP requests. You can write the code that produces the&lt;br /&gt;//output for the handler by using the ProcessRequest method.&lt;br /&gt;public void ProcessRequest(HttpContext context)&lt;br /&gt;{&lt;br /&gt;HttpRequest Request = context.Request;&lt;br /&gt;HttpResponse Response = context.Response;&lt;br /&gt;// This handler is called whenever a file ending in .sample is&lt;br /&gt;//requested. A file with that extension does not need to exist.&lt;br /&gt;Response.Write(&quot;.HTML.&quot;);&lt;br /&gt;Response.Write(&quot;.body.&quot;);&lt;br /&gt;Response.Write(&quot; .h1.Hello from a synchronous custom HTTP handler./h1&quot;);&lt;br /&gt;Response.Write(&quot;./body.&quot;);&lt;br /&gt;Response.Write(&quot;./html.&quot;);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// This property specifies whether the IHttpHandlerFactory object can put the handler in a pool and reuse it. If the handler cannot be pooled, the factory should create a new instance of the handler&lt;br /&gt;&lt;br /&gt;public bool IsReusable&lt;br /&gt;{&lt;br /&gt;// To enable pooling, return true here. This keeps the handler in memory.&lt;br /&gt;get { return false; }&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To register the handler :&lt;br /&gt;&lt;br /&gt;.configuration.&lt;br /&gt;.system.web.&lt;br /&gt;.httpHandlers.&lt;br /&gt;.add verb=&quot;*&quot; path=&quot;*.sample&quot; type=&quot;HelloWorldHandler&quot;/.&lt;br /&gt;.httpHandlers.&lt;br /&gt;.system.web.&lt;br /&gt;.configuration.&lt;br /&gt;&lt;br /&gt;Note :  &quot;*&quot; means all of the http verbs, eg. GET,POST&lt;br /&gt;&lt;br /&gt;&lt;em&gt;To register the handler in IIS 7.0 running in Integrated mode&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;.configuration.&lt;br /&gt;.system.webServer.&lt;br /&gt;.handlers.&lt;br /&gt;.add verb=&quot;*&quot; path=&quot;*.sample&quot; name=&quot;HelloWorldHandler&quot; type=&quot;HelloWorldHandler&quot;.&lt;br /&gt;./handlers.&lt;br /&gt;./system.webServer.&lt;br /&gt;./configuration.&lt;br /&gt;&lt;br /&gt;Note : When a HTTP Handler class is created, the handler can respond to any file name extension that is not already mapped in IIS and in ASP.NET. For ASP.NET to know which handler to use for your custom file name extension, you must map the extension in IIS to ASP.NET. Then, in the application, you must map the extension to the custom handler.&lt;br /&gt;By default, ASP.NET maps the file name extension, .ashx, to an HTTP handler. If you create an HTTP handler class that has the file name extension, .ashx, the handler is automatically registered with IIS and ASP.NET. The advantage of not using the .ashx file name extension is that the handler is then reusable for different extension mappings. If you want to create a custom file name extension for a handler, you must explicitly register the extension with IIS and ASP.NET. After you create the custom HTTP handler class, you must register it in the application&#39;s web.config file&lt;br /&gt;&lt;br /&gt;source of reference : MSDN</description><link>http://dotnetnitty-gritty.blogspot.com/2009/01/http-handler-in-detail.html</link><author>noreply@blogger.com (Priyanks)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-8751904540687776659</guid><pubDate>Thu, 15 Jan 2009 11:54:00 +0000</pubDate><atom:updated>2009-01-20T22:24:16.440+11:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">HTTP Modules</category><category domain="http://www.blogger.com/atom/ns#">ISAPI</category><category domain="http://www.blogger.com/atom/ns#">REquest pipeline</category><title>HTTP Modules in detail</title><description>HTTP modules, part of ASP.Net request pipeline, are called on every request made to an application and can access life cycle events through out the request. They are like ISAPI filters as they are invoked for all requests. Once the request passes through all of the HTTP modules, it is eventually served by an HTTP handler. The HTTP handler performs some processing on it, and the result again passes through the HTTP modules in the pipeline.&lt;br /&gt;&lt;br /&gt;Features like form &lt;strong&gt;authentication&lt;/strong&gt;, &lt;strong&gt;caching&lt;/strong&gt;, &lt;strong&gt;sessionstate&lt;/strong&gt;, client script services are implemented using modules. As part of a request, the module is called to perform tasks that a single page request cannot perform. They use application events, raise events that can be handled in the Global.asax file.&lt;br /&gt;&lt;br /&gt;To receive notifications from the request pipeline, you need to register HTTP modules in the application&#39;s web.config file. When ASP.NET creates an instance of the &lt;strong&gt;HttpApplication&lt;/strong&gt; class that represents your application, instances of any modules that have been registered are created.&lt;br /&gt;&lt;br /&gt;When you create a module, its Init method is called, and then the module initializes itself.&lt;br /&gt;In the module&#39;s &lt;strong&gt;Init&lt;/strong&gt; method, you can subscribe to various application events such as &lt;strong&gt;BeginRequest&lt;/strong&gt; or &lt;strong&gt;EndRequest&lt;/strong&gt; by binding the events to methods in the module. When application events are raised, you need to call the appropriate method in your module to perform the required logic, such as checking authentication or logging request information. During event handling, the module can access the Context property of the current request to redirect the request to an alternative page, modify the request, or perform any other request manipulation. Otherwise, when the module&#39;s event handler has finished running, ASP.NET calls the next process in the pipeline.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class MyFirstModule : IHttpModule&lt;br /&gt;{&lt;br /&gt;public MyFirstModule ()&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String ModuleName&lt;br /&gt;{&lt;br /&gt;get { return &quot;MyModule&quot;; }&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;To register in web.config&lt;br /&gt;&lt;br /&gt;.&lt;configuration&gt;&lt;system.web&gt;&lt;httpmodules&gt;&lt;add name=&quot;MyFirstModule&quot; type=&quot;MyFirstModule&quot;&gt;&lt;/httpmodules&gt;&lt;/SYSTEM.WEB&gt;&lt;/configuration&gt;configuration.&lt;br /&gt;.system.web.&lt;br /&gt;.httpModules.&lt;br /&gt;.add name=&quot;MyFirstModule&quot; type=&quot;MyFirstModule&quot;/.&lt;br /&gt;.httpModules.&lt;br /&gt;./system.web.&lt;br /&gt;./configuration.&lt;br /&gt;&lt;br /&gt;Note: Replace the &quot;.&quot; with opening and closing tags.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To write a handler for the Init method.&lt;br /&gt;// In the Init function, register for HttpApplication events by adding&lt;br /&gt;your handlers.&lt;br /&gt;public void Init(HttpApplication application)&lt;br /&gt;{&lt;br /&gt;application.BeginRequest += (new EventHandler(this.Application_BeginRequest));&lt;br /&gt;application.EndRequest += (new EventHandler(this.Application_EndRequest));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Note : During the processing of an http request, only one HTTP handler will be called, whereas more than one HTTP modules can be called&lt;br /&gt;Source of Reference: MSDN</description><link>http://dotnetnitty-gritty.blogspot.com/2009/01/http-modules-in-detail.html</link><author>noreply@blogger.com (Priyanks)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-1458990561040570054</guid><pubDate>Tue, 13 Jan 2009 11:27:00 +0000</pubDate><atom:updated>2009-01-13T23:07:37.427+11:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Request</category><category domain="http://www.blogger.com/atom/ns#">Response</category><title>Intrinsic Server Objects</title><description>Response -  An instance of HttpResponse class, this object provides access to the output stream for the current page. Used for writing text into the page or for creating cookies.&lt;br /&gt;&lt;br /&gt;Request - An instance of HttpRequest, this object provides access to the current page request, including request headers, cookies, client certificates, and a query string.&lt;br /&gt;&lt;br /&gt;Context - An instance of HttpContext, this object provides access to the entire current context, which includes the Request object. You can use the HttpContext class to share information between Web pages.&lt;br /&gt;&lt;br /&gt;Server-  An instance of HttpServerUtility, it provides utility methods that you can use to transfer control between pages, get information about the most recent error, and encode and decode HTML text.&lt;br /&gt;&lt;br /&gt;Application - An instance of HttpApplicationState , it  provides access to application-wide methods and events for all sessions.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Soure of Reference- MSDN</description><link>http://dotnetnitty-gritty.blogspot.com/2009/01/intrinsic-server-objects.html</link><author>noreply@blogger.com (Priyanks)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-408946720127910180</guid><pubDate>Tue, 13 Jan 2009 10:42:00 +0000</pubDate><atom:updated>2009-01-13T22:02:24.564+11:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Asp.net request processing</category><category domain="http://www.blogger.com/atom/ns#">HttpContext</category><category domain="http://www.blogger.com/atom/ns#">HttpRequest</category><category domain="http://www.blogger.com/atom/ns#">HttpResponse</category><title>Processing of PageRequests</title><description>When the first request comes, the top-level items even the application code ,if required, residing in App_code folder is compiled and an instance of Application Manager ,i.e Application domain is created . By virtue of this application domain , the isolation is provided between global variables of different applications.  Asp.Net also creates an instance of Hosting environment class in the application domain.  After this the application objects such as HttpContext, HttpRequest, and HttpResponse are created and initialized.&lt;br /&gt;&lt;br /&gt;The &lt;strong&gt;HttpContext&lt;/strong&gt; class contains objects that are particular to the current application request,i.e. HttpRequest and HttpResponse.&lt;br /&gt;&lt;br /&gt;The &lt;strong&gt;HttpRequest&lt;/strong&gt; object contains information about the current request, i.e. cookies and browser information.&lt;br /&gt;&lt;br /&gt;The &lt;strong&gt;HttpResponse&lt;/strong&gt; object contains the response that is sent to the client, which includes all the rendered output and cookies.&lt;br /&gt;&lt;br /&gt;The request is then processed by the &lt;strong&gt;HttpApplication&lt;/strong&gt; pipeline and after the processing the  ASP.NET page life cycle is run.</description><link>http://dotnetnitty-gritty.blogspot.com/2009/01/processing-of-pagerequests.html</link><author>noreply@blogger.com (Priyanks)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-552131408882961168</guid><pubDate>Sun, 11 Jan 2009 09:25:00 +0000</pubDate><atom:updated>2009-01-12T21:55:09.928+11:00</atom:updated><title>Page life cycle events</title><description>&lt;p&gt;At every stage of its lifecycle, the page raises following events:&lt;br /&gt;&lt;br /&gt;Stage &lt;strong&gt;PageInitialization&lt;/strong&gt; - Events raised &lt;strong&gt;PreInit,Init,InitComplete&lt;/strong&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;PreInit&lt;/strong&gt; - handles following tasks:&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;The IsPostBack property is checked to determine if the page is being processed for the first time .&lt;/li&gt;&lt;li&gt;Dynamic controls are created &lt;/li&gt;&lt;li&gt;A master page is dynamically. &lt;/li&gt;&lt;li&gt;Theme property is set dynamically. &lt;/li&gt;&lt;li&gt;Profile property values are read or set.&lt;br /&gt;&lt;br /&gt;Note : The values of the controls are not restored from viewstate yet if it&#39;s a postback. so if any control property is set during this event, its value might be overwritted in the next event.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Init&lt;/strong&gt; - &lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;Control properties are read or initialized.&lt;/li&gt;&lt;li&gt;It&#39;s triggered after the controls are initialized and skin settings are applied.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Initcomplete -&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;&lt;ol&gt;&lt;li&gt;&lt;/strong&gt;Those tasks that need the initialization to be complete are processed.&lt;/li&gt;&lt;li&gt;Page object triggers it&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Stage &lt;strong&gt;LOAD&lt;/strong&gt; - Events raised &lt;strong&gt;Preload, Load&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;PreLoad -&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;Once this event is triggered by Page, the view state of the page and all controls are loaded and any postback data included in the Request instance is processed.&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Load -&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;Properties of the controls are set using OnLoad event.&lt;/li&gt;&lt;li&gt;Database connections are established.&lt;/li&gt;&lt;li&gt;The OnLoad event method of the page and its child control are called recursively until they all are loaded.&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Control events&lt;/strong&gt; -&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;Control specific events are handled at this stage. e.g. TextChanged event’s for a textbox. &lt;/li&gt;&lt;li&gt;In a postback request, if the page contains validator controls, you should check the IsValid property of the page and of the individual validation controls before performing any processing.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;LoadComplete -&lt;/strong&gt; &lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;For accessing controls that have been properly loaded. &lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;PreRender&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;To make any final changes to the controls before they are rendered. &lt;/li&gt;&lt;li&gt;Before this event , the Page object calls &lt;strong&gt;EnsureChildControls&lt;/strong&gt; for each control and for the page. Each data bound control, whose DataSourceID property is set, calls its &lt;strong&gt;DataBind&lt;/strong&gt; method. &lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;SaveStateComplete-&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;Used for tasksthat require view state to be saved, yet not making any changes to the controls themselves. &lt;/li&gt;&lt;li&gt;ViewState for the page and its controls are saved before this event occurs and thus any chhanges to the page or controls at this point will be ignored.&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Render&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;The page object calls this method on all of the controls, so all the controls are written and sent to the browser. &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Note: If a custom control incorporates only standard NET Web server controls and no custom markup, you do not need to override the Render method which you do normally for any custom control.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Unload -&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;A final cleanup for specific controls such as closing the control-specific database connections and open files, finishing up logging is performed here.&lt;/li&gt;&lt;li&gt;The Unload event occurs for each control, and then for the page.&lt;br /&gt;&lt;br /&gt;Note : No further changes to the response stream can be made now. All the controls UnLoad method are fired, followed by the pages UnLoad event (bottom-up). This stage is used for closing database connections, closing open files, etc.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;The Init, Unload event for each child control occur before its parent container corresponding event are raised. However the Load event for a container occurs before the Load events for its child controls (top-down).&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Source of Reference: MSDN&lt;/p&gt;</description><link>http://dotnetnitty-gritty.blogspot.com/2009/01/page-life-cycle-events.html</link><author>noreply@blogger.com (Priyanks)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-2318172359435160685</guid><pubDate>Sun, 11 Jan 2009 08:15:00 +0000</pubDate><atom:updated>2009-01-11T20:22:55.585+11:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">asp.net page lifecycle</category><category domain="http://www.blogger.com/atom/ns#">asp.net page stages</category><title>Asp.net Lifecycle stages</title><description>It&#39;s been quiet some time since I started building asp.net websites. Today I just thought of revising my concepts as I am planning to take Microsoft .NET Framework 3.5, ASP.NET Application Development exam soon. I am starting with the most basic concept which is the lifecycle stages of a asp.net page. I am referring to MSDN site mainly for my revision.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNUlmpGpuTQfR0kPIudAlTnBQS5yWUGpyC7CMRIu91yi-PifdjGnXzhhjhqDKAqKMHiPeAaJxD6A-HH9HNiX6VWkhHt0NVfbnkSGlopyrjfLH4QoaU0ORsgHfEfnwaibSBDttrkgNvqPJA/s1600-h/Asp.net+Lifecycle.jpg&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 400px; height: 371px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNUlmpGpuTQfR0kPIudAlTnBQS5yWUGpyC7CMRIu91yi-PifdjGnXzhhjhqDKAqKMHiPeAaJxD6A-HH9HNiX6VWkhHt0NVfbnkSGlopyrjfLH4QoaU0ORsgHfEfnwaibSBDttrkgNvqPJA/s400/Asp.net+Lifecycle.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5289963991829644466&quot; /&gt;&lt;/a&gt;</description><link>http://dotnetnitty-gritty.blogspot.com/2009/01/aspnet-lifecycle-stages.html</link><author>noreply@blogger.com (Priyanks)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNUlmpGpuTQfR0kPIudAlTnBQS5yWUGpyC7CMRIu91yi-PifdjGnXzhhjhqDKAqKMHiPeAaJxD6A-HH9HNiX6VWkhHt0NVfbnkSGlopyrjfLH4QoaU0ORsgHfEfnwaibSBDttrkgNvqPJA/s72-c/Asp.net+Lifecycle.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-7047776967276820812</guid><pubDate>Thu, 18 Sep 2008 11:43:00 +0000</pubDate><atom:updated>2008-09-18T23:04:35.370+10:00</atom:updated><title>Isolation levels in SQL Server 2005</title><description>&lt;strong&gt;Read Uncommitted:&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Least restrictive isolation level.&lt;/li&gt;&lt;li&gt;Transactions only ensure that they do not read physically corrupt data.&lt;br /&gt;Dirty reads, Nonrepeatable reads, Phantom reads are possible.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Read Committed with snapshot:&lt;br /&gt;&lt;/strong&gt;New to SQL Server 2005&lt;br /&gt;When a transaction references rows that have been updated by another transaction, read operations retrieve the version of the row that existed when the snapshot transaction started.&lt;br /&gt;Dirty reads are prevented.&lt;br /&gt;Nonrepeatable reads, Phantom reads are possible.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Read Committed with locking:&lt;br /&gt;&lt;/strong&gt;Default isolation level used by SQL Server 2005.&lt;br /&gt;Read operations cannot access data that other transactions are currently modifying.&lt;br /&gt;Dirty reads are prevented.&lt;br /&gt;Nonrepeatable reads, Phantom reads are possible.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Repeatable Read:&lt;/strong&gt;&lt;br /&gt;The first transaction locks all the rows that its reading so that other transactions cannot update the data.&lt;br /&gt;Dirty reads, Nonrepeatable reads are prevented.&lt;br /&gt;Phantom reads are possible.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Snapshot:&lt;/strong&gt;&lt;br /&gt;New to SQL Server 2005&lt;br /&gt;Read operations retrieve the version of the row that existed when the snapshot transaction started as it does not acquire locks.&lt;br /&gt;Dirty reads, Nonrepeatable, Phantom reads are prevented.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Serializable:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Most restrictive isolation level.&lt;br /&gt;Transactions are completely isolated from each other. This is implemented by Database engines frequently by locking large numbers of rows or entire tables.&lt;br /&gt;Dirty reads, Nonrepeatable, Phantom reads are prevented.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;</description><link>http://dotnetnitty-gritty.blogspot.com/2008/09/isolation-levels-in-sql-server-2005.html</link><author>noreply@blogger.com (Priyanks)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-2262866816910316496</guid><pubDate>Sat, 06 Sep 2008 09:05:00 +0000</pubDate><atom:updated>2008-09-06T21:21:44.283+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Begin</category><category domain="http://www.blogger.com/atom/ns#">commit</category><category domain="http://www.blogger.com/atom/ns#">Distributed Transaction</category><category domain="http://www.blogger.com/atom/ns#">IsolationLevel</category><category domain="http://www.blogger.com/atom/ns#">Local Transaction</category><category domain="http://www.blogger.com/atom/ns#">Rollback</category><category domain="http://www.blogger.com/atom/ns#">Transaction</category><category domain="http://www.blogger.com/atom/ns#">TransactionScope</category><title>How to use transaction in .Net</title><description>The following code gives an example of using local transaction in ado.net&lt;br /&gt;&lt;br /&gt;using System.Transactions;&lt;br /&gt;&lt;br /&gt;bool success = false;&lt;br /&gt;SqlConnection conn = null;&lt;br /&gt;SqlTransaction transaction = null;&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;conn= new SqlConnection(ConfigurationManager.ConnectionStrings[&quot;AdventureWorks&quot;].ConnectionString;);&lt;br /&gt;conn.Open();&lt;br /&gt;transaction = conn.BeginTransaction(System.Data.IsolationLevel.Serializable);&lt;br /&gt;&lt;span style=&quot;color:#3333ff;&quot;&gt;//Serializable isolation prevents dirty reads, phantom reads, non-repeatable reads by locking large numbers of rows or entire tables.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;using (SqlCommand commanda = new SqlCommand(somesql1, conn, transaction))&lt;br /&gt;{&lt;br /&gt;int rowsUpdateda = commanda.ExecuteNonQuery();&lt;br /&gt;if (rowsUpdateda &gt; 0)&lt;br /&gt;{&lt;br /&gt;using (SqlCommand commandb = new SqlCommand(somesql2,conn, transaction))&lt;br /&gt;{&lt;br /&gt;int rowsUpdatedb = commandb.ExecuteNonQuery();&lt;br /&gt;if (rowsUpdatedb &gt; 0)&lt;br /&gt;{&lt;br /&gt;success = true;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;finally&lt;br /&gt;{&lt;br /&gt;if (success)&lt;br /&gt;transaction.Commit();&lt;br /&gt;else&lt;br /&gt;transaction.Rollback();&lt;br /&gt;if (conn!= null)&lt;br /&gt;connection.Close();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To use distributed transaction:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:#3366ff;&quot;&gt;//A TransactionOptions object is created to specify the isolation level or timeout for the transaction&lt;/span&gt;&lt;br /&gt;TransactionOptions options = new TransactionOptions();&lt;br /&gt;options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;&lt;br /&gt;options.Timeout = new TimeSpan(0, 2, 0);&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:#3366ff;&quot;&gt;//A Transaction scope defines a block of code that participates in a local or distributed transaction&lt;/span&gt;&lt;br /&gt;using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))&lt;br /&gt;{&lt;br /&gt;using (SqlConnection conna= new SqlConnection(connstring))&lt;br /&gt;{&lt;br /&gt;using (SqlCommand commanda = new SqlCommand(sqla, conna))&lt;br /&gt;{&lt;br /&gt;int rowsUpdateda = commanda.ExecuteNonQuery();&lt;br /&gt;if (rowsUpdateda &gt; 0)&lt;br /&gt;{&lt;br /&gt;using (SqlConnection connb= new SqlConnection(connb))&lt;br /&gt;{&lt;br /&gt;using (SqlCommand commandb = new SqlCommand(sqlb,connb))&lt;br /&gt;{&lt;br /&gt;int rowsUpdatedb = commandb.ExecuteNonQuery();&lt;br /&gt;if (rowsUpdatedb &gt; 0)&lt;br /&gt;{&lt;br /&gt;transactionScope.Complete(); }&lt;br /&gt;}&lt;br /&gt;commandb.Dispose ;//&lt;span style=&quot;color:#3333ff;&quot;&gt; Dispose the second command object.&lt;br /&gt;&lt;/span&gt;}&lt;br /&gt;connb.Close;&lt;br /&gt;// &lt;span style=&quot;color:#3333ff;&quot;&gt;Dispose (close) the second connection. &lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;} commandb.Dispose; // &lt;span style=&quot;color:#3333ff;&quot;&gt;Dispose the first command object.&lt;/span&gt;&lt;br /&gt;} connb.Close ;&lt;br /&gt;// &lt;span style=&quot;color:#3333ff;&quot;&gt;Dispose (close) the first connection.&lt;/span&gt;&lt;br /&gt;} TransactionScope.Dispose; // &lt;span style=&quot;color:#3333ff;&quot;&gt;Dispose TransactionScope object, to commit or rollback&lt;/span&gt;</description><link>http://dotnetnitty-gritty.blogspot.com/2008/09/how-to-use-transaction-in-net.html</link><author>noreply@blogger.com (Priyanks)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-8122130875616918153</guid><pubDate>Wed, 03 Sep 2008 12:50:00 +0000</pubDate><atom:updated>2008-09-03T23:13:50.734+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Chrome</category><title>Google&#39;s Browser Chrome beta version is out</title><description>Google has finally released it much awaited web browser Chrome beta version. I hope it doesn&#39;t crash like IE and is more stable.&lt;br /&gt;&lt;br /&gt;It&#39;s highlighted features are :&lt;br /&gt;1.Multiprocess based. Each tab has its own process, if one of the tab crashes it will not close the entire window like IE.&lt;br /&gt;2. With it&#39;s task manager you can find out which website is using the most memory.&lt;br /&gt;3.Plug-ins appear as a separate process in the task manager&lt;br /&gt;4.Webkit is the open source rendering engine behind Chrome&lt;br /&gt;5.Address bar offers suggestions for both search and top pages&lt;br /&gt;&lt;br /&gt;For trying it out refer to &lt;a href=&quot;http://www.google.com/chrome/index.html?hl=en&amp;amp;brand=CHMG&amp;amp;utm_source=en-hpp&amp;amp;utm_medium=hpp&amp;amp;utm_campaign=en&quot;&gt;http://www.google.com/chrome/index.html?hl=en&amp;amp;brand=CHMG&amp;amp;utm_source=en-hpp&amp;amp;utm_medium=hpp&amp;amp;utm_campaign=en&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I am liking it.</description><link>http://dotnetnitty-gritty.blogspot.com/2008/09/googles-browser-chrome-beta-version-is.html</link><author>noreply@blogger.com (Priyanks)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-5331025471598429777</guid><pubDate>Wed, 03 Sep 2008 12:36:00 +0000</pubDate><atom:updated>2008-09-03T22:40:32.064+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">connection string</category><title>To store connection string in application configuration file</title><description>Open up web.config file and inside the &lt;configuration&gt;root element add the &lt;connectionstrings&gt; element.&lt;br /&gt;&lt;br /&gt;&lt;connectionstrings&gt; &lt;br /&gt;      &lt;add        name=&quot;AdventureWorks&quot;    &lt;br /&gt;   connectionString=&quot;Data Source=(local); Initial Catalog=AdventureWorks;                Integrated Security=SSPI; Persist Security Info=False&quot; /&gt;&lt;br /&gt;&lt;/connectionstrings&gt;</description><link>http://dotnetnitty-gritty.blogspot.com/2008/09/to-store-connection-string-in.html</link><author>noreply@blogger.com (Priyanks)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-970054552099365290</guid><pubDate>Wed, 03 Sep 2008 12:20:00 +0000</pubDate><atom:updated>2008-09-06T17:48:57.540+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ODBC</category><category domain="http://www.blogger.com/atom/ns#">OleDb</category><category domain="http://www.blogger.com/atom/ns#">Oracle</category><category domain="http://www.blogger.com/atom/ns#">SqlClient</category><title>Connecting to different Data sources using ADO.Net</title><description>&lt;span style=&quot;color:#000099;&quot;&gt;Connect to a SQLServer datasource&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;using System.Data.SqlClient&lt;br /&gt;&lt;br /&gt;string connectionString = &quot;Data Source=(local); Initial Catalog=Adventureworks; &quot; + &quot;Integrated Security=SSPI; Persist Security Info=False&quot;;&lt;br /&gt;&lt;br /&gt;SqlConnection connection = new SqlConnection(connectionString);&lt;br /&gt;connection.Open();&lt;br /&gt;&lt;br /&gt;using (connection)&lt;br /&gt;{&lt;br /&gt; // use connection.&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:#000099;&quot;&gt;Connect to an OLE DB Data Source&lt;/span&gt;&lt;br /&gt;using System.Data.OleDb&lt;br /&gt;&lt;br /&gt;string connectionString = &quot;Provider=SQLOLEDB; Data Source=(local); Initial Catalog=Northwind; &quot; + &quot;Integrated Security=SSPI; Persist Security Info=False&quot;;&lt;br /&gt;&lt;br /&gt;OleDbConnection connection = new OleDbConnection(connectionString);&lt;br /&gt;connection.Open();&lt;br /&gt;&lt;br /&gt;using (connection)&lt;br /&gt;{&lt;br /&gt;// use connection.&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:#000099;&quot;&gt;Connect to ODBC data source&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color:#000099;&quot;&gt;&lt;span style=&quot;color:#000000;&quot;&gt;using System.Data.Odbc&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color:#000099;&quot;&gt;&lt;/span&gt;&lt;br /&gt;string connectionString = &quot;Driver={Microsoft Access Driver (*.mdb)}; DBQ=c:\\nwind.mdb; &quot; + &quot;Trusted_Connection=yes&quot;;&lt;br /&gt;&lt;br /&gt;OdbcConnection connection = new OdbcConnection(connectionString);&lt;br /&gt;connection.Open();&lt;br /&gt;&lt;br /&gt;using (connection)&lt;br /&gt;{&lt;br /&gt;//use connection&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:#000099;&quot;&gt;Connect to Oracle data source&lt;/span&gt;&lt;br /&gt;using System.Data.OracleClient&lt;br /&gt;&lt;br /&gt;string connectionString = &quot; Data Source=MyOracleServer;Integrated Security=yes&quot;;&lt;br /&gt;&lt;br /&gt;OracleConnection connection = new OracleConnection(connectionString);&lt;br /&gt;connection.Open();&lt;br /&gt;&lt;br /&gt;using (connection)&lt;br /&gt;{&lt;br /&gt;//use connection&lt;br /&gt;&lt;br /&gt;.}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:#3366ff;&quot;&gt;Note : If you don&#39;t want the data source to return security-sensitive information, i.e password, when the connection is open or has ever been in an open state, set persist Security Info to be false(default value).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color:#3366ff;&quot;&gt;&lt;/span&gt;</description><link>http://dotnetnitty-gritty.blogspot.com/2008/09/connecting-to-different-data-sources.html</link><author>noreply@blogger.com (Priyanks)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-4498259150275989617</guid><pubDate>Wed, 03 Sep 2008 10:23:00 +0000</pubDate><atom:updated>2008-09-03T20:36:26.500+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net Framework 2.0 update not found. The win32manifest will not be embedded</category><category domain="http://www.blogger.com/atom/ns#">Required file &#39;alink.dll with IAlink3&#39; could not found</category><category domain="http://www.blogger.com/atom/ns#">Vista</category><title>.Net Framework 2.0 update not found. The win32manifest will not be embedded</title><description>Are you getting the following error after installing VS2008 on a vista machine:&lt;br /&gt;&lt;span style=&quot;color:#ff0000;&quot;&gt;.Net Framework 2.0 update not found. The win32manifest will not be embedded &lt;/span&gt;&lt;span style=&quot;color:#000000;&quot;&gt;while opening a VB.Net Project or&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color:#ff0000;&quot;&gt;Required file &#39;alink.dll with IAlink3&#39; could not found &lt;/span&gt;&lt;span style=&quot;color:#000000;&quot;&gt;while opening a C# project.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To fix the issue you need to install&lt;br /&gt;  NetFX2.0-KB110806-v60000-x86.msu  from the installation disk of VS2008 . After that repair VS2008 and reboot your pc.</description><link>http://dotnetnitty-gritty.blogspot.com/2008/09/net-framework-20-update-not-found.html</link><author>noreply@blogger.com (Priyanks)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-5701305749403804892</guid><pubDate>Fri, 01 Aug 2008 05:16:00 +0000</pubDate><atom:updated>2008-08-01T15:24:40.306+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">error: 40 - Could not open a connection to SQL Server</category><category domain="http://www.blogger.com/atom/ns#">Named Pipes Provider</category><category domain="http://www.blogger.com/atom/ns#">SQL Server 2005 connection problem</category><title>Named Pipes Provider, error: 40 - Could not open a connection to SQL Server</title><description>Are you getting the following message when you try connecting to SQLSever 2005 on some other machine ?&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:#ff0000;&quot;&gt;TITLE: Microsoft SQL Server Management Studio------------------------------&lt;br /&gt;An error has occurred while establishing a connection to the server.  When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) (Microsoft SQL Server, Error: 1396)&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style=&quot;color:#000000;&quot;&gt;This mainly happens if you haven&#39;t allowed remote connections on the sqlserver.&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;color:#000000;&quot;&gt;Go to &lt;em&gt;MicrosoftSQLServer2005&gt; ConfigurationTools&gt;SQL Server Surface AreaConfiguration tool&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;color:#000000;&quot;&gt;Click on &lt;em&gt;Surface Area Configuration for services and Connections&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;color:#000000;&quot;&gt;Select &lt;em&gt;MSSQLServer&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;color:#000000;&quot;&gt;Select &lt;em&gt;Remote Connections option&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;color:#000000;&quot;&gt;If you are using SQL Server Developed Edition, by default Local Connections only is selected.&lt;br /&gt;Select &lt;em&gt;Local and remote connections&lt;/em&gt; and select the first option &lt;em&gt;Using TCP/IP only&lt;/em&gt; if you are not using Named pipes.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;color:#000000;&quot;&gt;Restart MSSQLServer services.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;color:#000000;&quot;&gt;At times, it&#39;s better to reboot the system to make the change effective.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style=&quot;color:#ff0000;&quot;&gt;&lt;/span&gt; &lt;/p&gt;</description><link>http://dotnetnitty-gritty.blogspot.com/2008/08/named-pipes-provider-error-40-could-not.html</link><author>noreply@blogger.com (Priyanks)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-8233922869048596462</guid><pubDate>Fri, 11 Jul 2008 04:49:00 +0000</pubDate><atom:updated>2008-07-13T17:05:56.196+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">delete duplicate rows</category><category domain="http://www.blogger.com/atom/ns#">Partition by</category><category domain="http://www.blogger.com/atom/ns#">Rownumber</category><category domain="http://www.blogger.com/atom/ns#">Sqlserver 2005</category><title>Deleting duplicate records from a table</title><description>One of my recent task has required me to get rid of multiple duplicate records from a table. While doing that I came across a useful feature introduced in SQL Server 2005 which I would like to share with everyone.&lt;br /&gt;Example : A CustomerOrder table has duplicate records of the same customerid and orderid. If you got records for 1 customer, you can directly run the sql query as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:#3366ff;&quot;&gt;with temp as (SELECT ROW_NUMBER ( ) OVER ( PARTITION BY CUSTOMERID, ORDERID ORDER BY ID ) AS RNUM FROM CUSTOMERORDER )&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color:#3366ff;&quot;&gt;delete from temp where rnum &gt; 1&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color:#3366ff;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color:#000000;&quot;&gt;If there are more than 1 customer, it&#39;s better to write a storedprocedure as follows:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;CREATE PROCEDURE DeleteDuplicateRecords&lt;br /&gt;-- Add the parameters for the stored procedure here&lt;br /&gt;AS&lt;br /&gt;BEGIN&lt;br /&gt;-- SET NOCOUNT ON added to prevent extra result sets from&lt;br /&gt;-- interfering with SELECT statements.&lt;br /&gt;SET NOCOUNT ON;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:#9999ff;&quot;&gt;-- Create a temporary table to store all those customer which have duplicate records&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;create table #temp(customerid,orderid,totalcount)&lt;br /&gt;&lt;br /&gt;insert into #temp(customerid,orderid,totalcount)&lt;br /&gt;select customerid,orderid,count(*)&lt;br /&gt;from CustomerOrder&lt;br /&gt;group by customerid, orderid&lt;br /&gt;having count(*) &gt; 1&lt;br /&gt;order by count(*) desc&lt;br /&gt;&lt;br /&gt;declare @cid int,&lt;br /&gt;@orderid int&lt;br /&gt;&lt;br /&gt;declare delete_cursor cursor for&lt;br /&gt;select customerid,orderid from #temp&lt;br /&gt;&lt;br /&gt;open delete_cursor&lt;br /&gt;fetch next&lt;br /&gt;from delete_cursor&lt;br /&gt;into @cid, @orderid&lt;br /&gt;while (@@fetch_status = 0 )&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;with temp as (SELECT ROW_NUMBER ( ) OVER ( PARTITION BY CUSTOMERID, ORDERID ORDER BY ID ) AS RNUM FROM CUSTOMERORDER WHERE CustomerId = @cid and OrderId = @orderid )&lt;br /&gt;delete from temp where rnum &gt; 1&lt;br /&gt;&lt;br /&gt;fetch next&lt;br /&gt;from delete_cursor&lt;br /&gt;into @cid,@orderid&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;close delete_cursor&lt;br /&gt;deallocate delete_cursor&lt;br /&gt;END&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:#9999ff;&quot;&gt;ROWNUMBER() Returns the sequential number of a row within a partition of a result set, starting at 1 for the first row in each partition.&lt;/span&gt;&lt;br /&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms186734.aspx&quot;&gt;http://msdn.microsoft.com/en-us/library/ms186734.aspx&lt;/a&gt;</description><link>http://dotnetnitty-gritty.blogspot.com/2008/07/deleting-duplicate-records-from-table.html</link><author>noreply@blogger.com (Priyanks)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-7972654173181244516</guid><pubDate>Mon, 28 Apr 2008 12:12:00 +0000</pubDate><atom:updated>2008-04-28T23:03:11.477+10:00</atom:updated><title>Thread</title><description>The process of creating a thread is called spawning a new thread, the process of destroying an existing thread is called killing or terminating a thread, and the process of pausing a thread is called putting the thread to sleep.&lt;br /&gt;&lt;br /&gt;A short-lived thread is a thread that is created to perform a single task and is then terminated. It is common to create short-lived threads to perform operating system tasks such as copying or moving files. In such situations, you can use the ThreadPool class in the .NET Framework. This class can also be used when it is not necessary to have full control over each individual thread.&lt;br /&gt;&lt;br /&gt;The ThreadPool class manages a set of readily available threads to be used by a process. Each process has only one thread pool that the process uses to execute different methods. Resource allocation does not need to occur every time a thread is started because the thread is already created in the pool. This increases application performance. However, there are situations in which the thread pool should be avoided because there is no direct control over the thread. You should not use a thread pool when:&lt;br /&gt;You require a foreground thread.&lt;br /&gt;You require a thread to have a particular priority.&lt;br /&gt;You have tasks that can block threads for long periods of time. The thread pool has a maximum number of threads, so a large number of threads from the thread pool being blocked might prevent tasks from starting.&lt;br /&gt;You need to place threads into a single-threaded apartment. All thread pool threads are in the multithreaded apartment.&lt;br /&gt;You need to have a stable identity associated with the thread, or you need to dedicate a thread to a task.&lt;br /&gt;Based on these situations, you need to use a thread pool whenever the application requires threads to execute short-lived tasks in a fast-paced scenario. For example, if you want to test read/write operations to a database simulating a multiuser environment, you can create a set of methods that access the database by executing common queries, and use multiple threads from the thread pool to execute the methods multiple times, simultaneously.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There is a limit of 25 threads in a thread pool; therefore, even if you start 50 threads, only 25 threads will be executed at a given time. As soon as a thread finishes, another thread that was waiting for an idle thread in the pool can start.&lt;br /&gt;&lt;br /&gt;The process of managing access to resources being shared by multiple threads is called synchronization.Synchronization comprises of locking mechanisms, signaling, and some interlocked operations.&lt;br /&gt;&lt;br /&gt; the most common ones include exclusive and shared locks. The .NET Framework provides several classes that you can use to lock resources. However, the simplest method to lock a shared resource is to use the SyncLock statement in Visual Basic or the lock statement in C#.&lt;br /&gt;When a thread notifies another thread about the lock status of a resource, it is called signaling. synchronization includes some interlocked operations that you can use to perform simple operations on a shared memory location or a variable.&lt;br /&gt;&lt;br /&gt;.NET Framework provides several classes to manage the locking of shared resources. These classes include Monitor, WaitHandle, Mutex, Semaphore, and ReaderWriterLock.&lt;br /&gt;&lt;br /&gt;The Monitor class is a static class used by a thread to acquire an exclusive lock on an object so that other threads are not able to use that object while it is being monitored. The use of the Monitor class is similar to that of the SyncLock or lock blocks in Visual Basic and C# respectively. To start synchronization, the thread must call the Enter method of the Monitor class and pass the object to be locked as a parameter. To end synchronization, the thread must call the Exit method and pass the same parameter. The code is synchronized between the calls. Although the functionality of the Monitor class is exactly the same as that of the SyncLock and lock blocks, this class provides better control of the synchronization code through a set of methods.&lt;br /&gt;&lt;br /&gt;The Mutex class derives from the WaitHandle class and provides the same functionality achieved through the Monitor class, but it can synchronize threads in different application domains. There are two types of mutexes that can be created, local and system mutexes. A local mutex can only be used within the process where it was created, while a system (or named) mutex can be used by any process in the operating system. Once a mutex is created, it can only be released from the thread in which it was created.&lt;br /&gt;&lt;br /&gt;You can use the Semaphore class to synchronize access to resources by a pool of threads, instead of a single thread at once. When using the Semaphore class, you can specify the maximum number of threads that can access the resources simultaneously. Other threads must wait in queue until the executing threads release the semaphore. You can achieve this functionality by maintaining a count of new threads that can access the resource, decrementing this count every time a thread enters the semaphore, and incrementing it every time a thread leaves the semaphore. Whenever the counter is greater than zero, new threads can enter the semaphore. Once the counter is zero, incoming threads will be queued until the counter increases. Just like Mutex, Semaphore can be local or global (named).&lt;br /&gt;You can use the Semaphore class when you want to restrict the number of threads executing a piece of code.&lt;br /&gt;&lt;br /&gt;You can use the ReaderWriterLock class to synchronize access to resources by using a pool of threads with read access or a single thread with write access. You can use different methods in the ReaderWriterLock class to lock resources for either read or write access. When a thread submits a read lock request, the ReaderWriterLock class works similar to the Semaphore class, allowing access to resources by multiple threads. Once a writer lock is requested, all new reader requests are queued. After the existing locks are released, the writer lock is honored. A lock can be represented by a variable of type LockCookie for multiple requests, such as when upgrading a reader lock to a writer lock and vice versa. However, a thread cannot have both reader and writer locks at the same time; it must change the lock type by using predefined methods.&lt;br /&gt;You can use the ReaderWriterLock class in situations where changes to resources are infrequent and multiple threads are able to share the resource.&lt;br /&gt;&lt;br /&gt;When working with the Monitor class, you can implement signaling by using the Pulse method. However, you can also use other classes such as Mutex, Semaphore, EventWaitHandle, and RegisteredWaitHandle for signaling.&lt;br /&gt;&lt;br /&gt;Signaling may be necessary when the same object is being used to execute different actions by different threads, and the synchronization of these different threads is needed. For instance, consider a bank account object being used simultaneously to both withdraw and deposit money in an account. The deposit method reads the balance, followed by the withdraw method. The withdraw method then changes the balance based on the amount withdrawn. Since the deposit method had already read the balance, it adds the amount to be deposited to the old balance, and therefore, saves the new balance incorrectly. This error could be prevented if the two threads were using signaling.&lt;br /&gt;&lt;br /&gt;All classes that derive from the WaitHandle class can use signaling, such as the Mutex, Semaphore, and EventWaitHandle classes.&lt;br /&gt;&lt;br /&gt;You can use the EventWaitHandle class to exchange signals among different threads and processes. EventWaitHandle can be local (to the process) or global (named). The EventWaitHandle class has two child classes, AutoResetEvent and ManualResetEvent. These two classes are very similar; you can use both to signal to a thread whether it can execute or not after waiting for a signal.&lt;br /&gt;You can think of the signal as a green (go) or red (stop) light letting the thread know whether to wait or move on. Once a thread makes a call to wait on a signal, it stops until a green light is received. The signal remains green until a thread turns it red again. This describes the Set (turn green) and Reset (turn red) methods available in the ManualResetEvent class. The AutoResetEvent class works in a similar way; however, the light turns red automatically after turning green and letting one, and only one, thread continue.&lt;br /&gt;&lt;br /&gt;You can use the AutoResetEvent class in the same way as the EventWaitHandle class when working with an object in the AutoReset mode. The only difference is that the event created is a local event, with thread affinity. You can use this class when the signal does not need to cross application domains and the AutoResetEvent class automatically resets itself between signaled and non-signaled states. The only constructor for this class takes a parameter of type Boolean indicating if the initial state of the event is signaled.&lt;br /&gt;&lt;br /&gt;You can use the ManualResetEvent class in the same way as the EventWaitHandle class when working with an object in the ManualReset mode. The only difference is that the event created is a local event, with thread affinity. You should use this class when the signal does not need to cross application domains. The ManualResetEvent class remains signaled until you manually switch it to a non-signaled state and vice versa.&lt;br /&gt;The only constructor for the ManualResetEvent class takes a parameter of type Boolean indicating if the initial state of the event is signaled. You can use the OpenExisting method of the ManualResetEvent class to open a named event that already exists.&lt;br /&gt;&lt;br /&gt;When attempting to access a shared resource by using a thread from a thread pool, your application may have to wait in queue until the resource is free. Your application can reserve a place in queue in a method analogous to you taking a numeric ticket to stand in queue while at a public office. The ThreadPool class includes a method named RegisterWaitForSingleObject that returns a WaitHandle class. WaitHandle represents your application’s reserved spot in the queue and your object is signaled when the resource in question is free.&lt;br /&gt;The RegisteredWaitHandle class represents the WaitHandle returned by the RegisterWaitForSingeObject method. If you decide that you would like your application to surrender its place in line and no longer wait for a resource, you may call the Unregister method.&lt;br /&gt;&lt;br /&gt;The Interlocked class is a static (Shared) class that you can use to synchronize shared thread access to a variable. Variables that are interlocked have an exclusive lock placed on them so that no other threads can interrupt operations. The operations that can be performed on an interlocked variable are limited to very simple operations such as simple mathematic calculations. One benefit of using the Interlocked class is that it performs operations at a very low level, directly with the operating system and is, therefore, very fast.&lt;br /&gt;&lt;br /&gt; In asynchronous programming, calls to various methods are made in a parallel manner where a method call does not wait for the other method to complete before application execution continues.</description><link>http://dotnetnitty-gritty.blogspot.com/2008/04/thread.html</link><author>noreply@blogger.com (Priyanks)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-3748149767911254644</guid><pubDate>Sun, 27 Apr 2008 11:15:00 +0000</pubDate><atom:updated>2008-04-27T21:16:51.646+10:00</atom:updated><title>Implementing service processes, threading, and application domains in a .NET Framework application (11 %)</title><description>&lt;strong&gt;Implement, install, and control a service. (Refer System.ServiceProcess namespace)&lt;br /&gt;&lt;/strong&gt;•Inherit from ServiceBase class&lt;br /&gt;•ServiceController class and ServiceControllerPermission class&lt;br /&gt;•ServiceInstaller and ServiceProcessInstaller class&lt;br /&gt;•SessionChangeDescription structure and SessionChangeReason enumeration</description><link>http://dotnetnitty-gritty.blogspot.com/2008/04/implementing-service-processes.html</link><author>noreply@blogger.com (Priyanks)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-7145388420427714144</guid><pubDate>Sun, 27 Apr 2008 04:31:00 +0000</pubDate><atom:updated>2008-04-27T15:28:04.898+10:00</atom:updated><title>F.Delegates</title><description>Delegates&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Reference types&lt;/li&gt;&lt;li&gt;Type safe , instances of objects with their own properties and methods.&lt;/li&gt;&lt;li&gt;Declare a delegate type,define a variable of a delegate type,create an instance of a delegate.&lt;/li&gt;&lt;li&gt;Used to indirectly call one or more methods at run time,pass a delegate by ref as a parameter of a method&lt;/li&gt;&lt;li&gt;Method is not specified when declaring the delegate type or a variable based on the delegate type&lt;/li&gt;&lt;li&gt;Invoking Method is specified when an instance of delegate is created and dynamically associate one or more instances with the variable at runtime.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Uses:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;In creation of events. e.g. all events in 2.0 based on delegate types&lt;/li&gt;&lt;li&gt;creation of asynchronous method calls.e.g. callbacks in 2.0 based on delegate types&lt;/li&gt;&lt;li&gt;If you have two objects that have similar methods with identical method signatures, you can use the same delegate to invoke them even if two objects are not related,methods have different names.&lt;/li&gt;&lt;li&gt;You can use generics in delegate signatures. By using generics, you can instantiate a strongly typed delegate that can be used at run time with full type safety without specifying a particular type in the signature of your delegate type declaration.This helps you create an event in a generic class and specify the return type and parameter types when you create an instance of the delegate.&lt;/li&gt;&lt;li&gt;Invoke static or instance methods&lt;/li&gt;&lt;li&gt;In C#,you can have anonymous methods&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Types:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;A singlecast delegate references only a single method. &lt;/li&gt;&lt;li&gt;A multicast delegate references many methods . All delegates are implicitly multicast delegates. By adding multiple method references to a delegate’s invocation list, you can invoke all the methods with one call to the delegate.This process is referred to as multicasting. You can invoke each method in the invocation list individually. This is useful if you want to determine the return value or output parameters of each method call or if you do not want to call certain methods in certain circumstances.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;C# exeception rules to delegate&lt;/p&gt;&lt;p&gt;Covariance :  occurs when the return type of the method referenced by the delegate inherits from the return type of the delegate itself. Because the method’s return type inherits from the delegate’s return type, the signatures are still considered a match. &lt;/p&gt;&lt;p&gt;Contravariance :Contravariance permits the declaration of a delegate with parameters that inherit from the types used in the parameters of the method that will be invoked. However, for contravariance to work, the order and number of parameters in the signatures of the delegate as well as the method must still match.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;</description><link>http://dotnetnitty-gritty.blogspot.com/2008/04/2implementing-service-processes.html</link><author>noreply@blogger.com (Priyanks)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-1513913540025639840</guid><pubDate>Sat, 26 Apr 2008 11:40:00 +0000</pubDate><atom:updated>2008-04-27T12:29:05.694+10:00</atom:updated><title>D. Specialized collection</title><description>&lt;strong&gt;System.Collections.Specialized&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Specialized collections:P&lt;/strong&gt;redefined collections that serve a special or highly specific purpose&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Specialized String Collection :&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;StringCollection class&lt;/strong&gt;: same behavior as the generic List class when elements are specified as string.&lt;br /&gt;Strongly typed version of ArrayList&lt;br /&gt;Accepts Null reference as a valid value.&lt;br /&gt;Allow duplicate Element&lt;br /&gt;Zero based index&lt;br /&gt;String comparision is case sensitive&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;StringDictionary class&lt;/strong&gt;: exact same behavior as the generic Dictionary class, when the key is specified as a string and the value is specified as a string.&lt;br /&gt;Can accept a null value but the key cannot be a null reference&lt;br /&gt;Case insensitive&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;StringEnumerator&lt;/strong&gt; class provides enumeration for the string collection.&lt;br /&gt;&lt;strong&gt;CollectionsUtil&lt;/strong&gt; class allows to create a case insensitive Hashtable or a case insensitive SortedList.&lt;br /&gt;Hashtable name=CollectionsUtil.CreateCaseInsensitiveHashtable();&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Specialized Dictionary collection:&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;HybridDictionary&lt;/strong&gt; class internally switches to either a ListDictionary or a Hashtable to store data, depending on the number of elements.&lt;br /&gt;&lt;strong&gt;ListDictionary&lt;/strong&gt; provides a better performance for less than 10 elements&lt;br /&gt;Not suitable in conditions when performance is important.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Hashtable&lt;/strong&gt; provides a better performance for more than 10 elements.&lt;br /&gt;&lt;strong&gt;OrderedDictionary&lt;/strong&gt; can store elements sorted by key and sorted by index. This class is very efficient if the number of elements is 10 or less than 10.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Specialized Named Collection:&lt;/strong&gt;&lt;br /&gt;The named collection classes provide the abstract base class for a collection of associated string keys and object values that you can access either by the key or by the index.&lt;br /&gt;It allows multiple string values to be associated with a single string key.&lt;br /&gt;It provides a class that you can derive from to create your own key/value collections, with their own specialized behavior&lt;br /&gt;Default initial capacity for a NameValueCollection is zero.&lt;br /&gt;Dynamically resizes.&lt;br /&gt;In NameValueCollection, a null reference is allowed for either a key or a value.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Specialized Bit collection:&lt;/strong&gt;&lt;br /&gt;A BitVector32 provides a simple structure that stores Boolean values and small integers.&lt;br /&gt;It stores Boolean values in a 32-bit structure hence more efficient than bit structure.&lt;br /&gt;&lt;br /&gt; A BitVector32.Section is a window into the BitVector32 and is composed of the smallest number of consecutive bits that can contain the maximum value specified in CreateSection. For example, a section with a maximum value of 1 is composed of only one bit, whereas a section with a maximum value of 5 is composed of three bits&lt;br /&gt;The BitVector32.Section allows you to store small integers within a BitVector32 class.</description><link>http://dotnetnitty-gritty.blogspot.com/2008/04/specialized-collection.html</link><author>noreply@blogger.com (Priyanks)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-9048599008840243040</guid><pubDate>Sat, 26 Apr 2008 11:21:00 +0000</pubDate><atom:updated>2008-04-26T21:40:38.670+10:00</atom:updated><title>Generic Collection</title><description>&lt;strong&gt;List&lt;/strong&gt; : Equivalent to Arraylist of NonGeneric collection&lt;br /&gt;Unlike Arraylist, can store value type as well&lt;br /&gt;You need to specify datatype.&lt;br /&gt;Uses List.Enumertor for iteration.&lt;br /&gt;e.g. List&lt;string&gt;names = new List &lt;string&gt;();&lt;br /&gt;dim names as List = new List(of String)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Generic Stack&lt;/strong&gt; : Equivalent to Non generic Stack but you specify a datatype&lt;br /&gt;Use Push to add&lt;br /&gt;Use Pop to remove element&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Generic Queue:&lt;/strong&gt;&lt;br /&gt;Enqueue to add element&lt;br /&gt;Dequeue to remove element&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;LinkedList&lt;/strong&gt; : Createss and manage a strongly typed doubly linked list.&lt;br /&gt;Every node contains reference to the previous and next nodes in the list.</description><link>http://dotnetnitty-gritty.blogspot.com/2008/04/generic-collection.html</link><author>noreply@blogger.com (Priyanks)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-7969232815494019734</guid><pubDate>Sat, 26 Apr 2008 06:50:00 +0000</pubDate><atom:updated>2008-04-26T21:20:50.169+10:00</atom:updated><title>Collection and Collection Interfaces</title><description>&lt;strong&gt;INTERFACES &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;IComparable :&lt;/strong&gt; Used to compare two objects and determine which object is greater.&lt;br /&gt;The CompareTo method returns 1, 0, or -1 if the value of the current object is greater than, equal to, or less than the object passed as a parameter to this method.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ICollection&lt;/strong&gt;: defines the size, enumerators, and synchronization methods for all non-generic and generic collections.&lt;br /&gt;Non-Generic : AddAt, AddItem, GetEnumerator, Item methods,IsReadOnly and Count properties&lt;br /&gt;Generic : Add, Clear, Contains, CopyTo, Remove,Count methods.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;IList&lt;/strong&gt; :Used to index a collection..&lt;br /&gt;Generic &amp;amp; Non-Generic : Insert, IndexOf, and RemoveAt methods.&lt;br /&gt;Non-Generic: Add, Clear, Contains, IndexOf, Insert, Remove, and RemoveAt methods.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;IComparer&lt;/strong&gt;: The non-generic IComparer interface provides the Compare method same as Compare method of IComparable.&lt;br /&gt;In the generic version ,both parameters are passed as a specific data type.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;IEqualityComparer&lt;/strong&gt;:Used to check if two collections are equivalent.&lt;br /&gt;Non-Generic: Equals(determines if two system.Object are equivalent or not) and GetHashCode(returns same hashcode if two collections are equivalent.&lt;br /&gt;The generic version accepts parameters of a specific data type.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;IDictionary&lt;/strong&gt;:The non-generic IDictionary provides the collection key/value pair behavior.&lt;br /&gt;The generic version allows the key and the value to be declared as specific data type.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;IEnumerabl&lt;/strong&gt;e: It provides the GetEnumerator method to enumerate the collection and returns the IEnumerator data type.&lt;br /&gt;&lt;br /&gt;I&lt;strong&gt;Enumerator&lt;/strong&gt;: Non genric version supports a simple iteration in a non-generic collection. This interface is the base interface of all non-generic enumerators. e.g.For each in vb.net and foreach in C#&lt;br /&gt;Non-Generic: MoveNext , Reset methods ,current property(returns a data type of system.object)&lt;br /&gt;The generic version provides the strongly typed Current property.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ArrayList&lt;/strong&gt; : Can be resized.&lt;br /&gt;Implements IList&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Stack&lt;/strong&gt; : based on LIFO&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Queue&lt;/strong&gt; :Based on FIFO&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Iterator&lt;/strong&gt; : used in C#&lt;br /&gt;&lt;br /&gt;Comparer :&lt;br /&gt;Default method that provides a comparison based on the current culture&lt;br /&gt;DefaultInvariant that provides a culture-independent comparison&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;HashTable&lt;/strong&gt; : represents a collection of name/value pairs&lt;br /&gt;The key is stored as an object and its hash code is used to identify the value which makes data retrieval very fast.&lt;br /&gt;Allows you to dynamically add and remove elements without re-indexing.&lt;br /&gt;Doesnt have a generic version&lt;br /&gt;Implements IEnumerator&lt;br /&gt;Disadvantage : doesnt allow sorting&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SortedList&lt;/strong&gt;:represents a collection of name/value pairs that are accessible either by key or by index, but are sorted only by keys.&lt;br /&gt;The SortedList class maintains two arrays to store the elements of the list, one array for the keys and another for the associated values.&lt;br /&gt;The elements are sorted by keys.&lt;br /&gt;Does not allow duplication of keys.&lt;br /&gt;Indexing adjusts when you add or remove a element .&lt;br /&gt;Slower than hashtable becoz of sorting process. However,compared to hashtable more flexible as flexibility it can be accessed by key or index.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;BitArray&lt;/strong&gt;: implements a bit structure, which represents a collection of binary bits, 1s and 0s.&lt;br /&gt;The size of a bit structure in memory depends on the number of elements in the collection.&lt;br /&gt;Elements are accessed using an integer index.&lt;br /&gt;Zero-based indexes.&lt;br /&gt;To add element use Length property</description><link>http://dotnetnitty-gritty.blogspot.com/2008/04/my-notes-on-b.html</link><author>noreply@blogger.com (Priyanks)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-2252258303224624923</guid><pubDate>Wed, 23 Apr 2008 06:50:00 +0000</pubDate><atom:updated>2008-04-26T13:57:10.394+10:00</atom:updated><title>My Notes on A</title><description>When to use structure :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If the type will perform better as a value type rather than reference, use a structure instead of class. &lt;/li&gt;&lt;li&gt;Instance size less than 16bytes&lt;/li&gt;&lt;li&gt;Represents a single value&lt;/li&gt;&lt;li&gt;Will not be changed after creation&lt;/li&gt;&lt;li&gt;Will not be cast to a Reference type&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Advantages of using Generics:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Processing is fast as boxing and unboxing are not required&lt;/li&gt;&lt;li&gt;Catch errors at compile time by ensuring typesafety&lt;/li&gt;&lt;li&gt;You can use constraints on the types: Interface,Base Class,Constructor,Reference or ValueType&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;IConvertible: Converts an object to CLR datatypes &lt;/p&gt;&lt;p&gt;ICloneable: defines the Clone method that you can implement to do a deep cloning of an object and it&#39;s references to other objects&lt;/p&gt;&lt;p&gt;IFormattable: defines the ToString method that you can implement to format the value of the current instance by using the specified format. &lt;/p&gt;&lt;p&gt;IDisposable: defines the dispose method that you can implement to release the resources with the help of a supporting custom-defined ReleaseResource method and remove the current object from the finalization queue. This relieves the garbage collector from calling the finalizer of an object after the object is disposed&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;New in 2.0&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Nullable&lt;/li&gt;&lt;li&gt;Operator&lt;/li&gt;&lt;li&gt;Generic types .eg.EventHandler&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;IEquatable: applicable to Generic class used Equal method&lt;br /&gt;TypeForwarding&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;Conversion operator ( Vb.Net:Widening,Narrowing C#:implicit,explicit)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;</description><link>http://dotnetnitty-gritty.blogspot.com/2008/04/my-notes-on.html</link><author>noreply@blogger.com (Priyanks)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3334571753847335785.post-4414719492176670193</guid><pubDate>Wed, 23 Apr 2008 05:37:00 +0000</pubDate><atom:updated>2008-04-27T12:20:44.683+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Attirbutes</category><category domain="http://www.blogger.com/atom/ns#">Exception</category><category domain="http://www.blogger.com/atom/ns#">Nullable type</category><category domain="http://www.blogger.com/atom/ns#">References</category><category domain="http://www.blogger.com/atom/ns#">types</category><title>1. Developing applications that use system types and collections (15 percent)</title><description>&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;p&gt;A .&lt;strong&gt;Manage data in a .NET Framework application by using the .NET Framework 2.0 system types. (Refer System namespace)&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/s1ax56ch(vs.80).aspx&quot;&gt;Value types &lt;/a&gt;( &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/t63sy5hs(VS.80).aspx&quot;&gt;VB.Net&lt;/a&gt; )&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/1t3y8s4s(VS.80).aspx&quot;&gt;Nullable type &lt;/a&gt;(&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/ms235245(VS.80).aspx&quot;&gt;VB.Net&lt;/a&gt;)&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/490f96s2(VS.80).aspx&quot;&gt;Reference types &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/z0w1kczw(VS.80).aspx&quot;&gt;Attributes &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/0x6a29h6(VS.80).aspx&quot;&gt;Generic types&lt;/a&gt; (&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/w256ka79(VS.80).aspx&quot;&gt;VB.Net&lt;/a&gt;)&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/ms173160(vs.80).aspx&quot;&gt;Exception classes&lt;/a&gt; (&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/s6da8809(VS.80).aspx&quot;&gt;VB.Net&lt;/a&gt;)&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/yz2be5wk(VS.80).aspx&quot;&gt;Boxing and UnBoxing&lt;/a&gt; (&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/k1e94s7e(VS.80).aspx&quot;&gt;VB.Net&lt;/a&gt;)&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.runtime.compilerservices.typeforwardedtoattribute(VS.80).aspx&quot;&gt;TypeForwardedToAttribute Class &lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;&lt;strong&gt;B.Manage a group of associated data in a .NET Framework application by using collections. (Refer System.Collections namespace)&lt;/strong&gt;&lt;br /&gt;&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.arraylist(VS.80).aspx&quot;&gt;•ArrayList class &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.icollection(VS.80).aspx&quot;&gt;Collection interfaces &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.icollection(VS.80).aspx&quot;&gt;ICollection interface &lt;/a&gt;and &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.ilist(VS.80).aspx&quot;&gt;IList interface&lt;br /&gt;&lt;/a&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.iequalitycomparer(VS.80).aspx&quot;&gt;IComparer interface&lt;/a&gt; and &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.iequalitycomparer(VS.80).aspx&quot;&gt;IEqualityComparer interface&lt;br /&gt;&lt;/a&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.idictionary(VS.80).aspx&quot;&gt;IDictionary interface&lt;/a&gt; and &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.idictionaryenumerator(VS.80).aspx&quot;&gt;IDictionaryEnumerator interface &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.ienumerable(VS.80).aspx&quot;&gt;IEnumerable interface&lt;/a&gt; and &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.ienumerator(VS.80).aspx&quot;&gt;IEnumerator interface &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/dscyy5s0(VS.80).aspx&quot;&gt;Iterators &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.hashtable(VS.80).aspx&quot;&gt;Hashtable class&lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.collectionbase(VS.80).aspx&quot;&gt;CollectionBase class&lt;/a&gt; and &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.readonlycollectionbase(VS.80).aspx&quot;&gt;ReadOnlyCollectionBase class &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.dictionarybase(VS.80).aspx&quot;&gt;DictionaryBase class &lt;/a&gt;and &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.dictionaryentry(VS.80).aspx&quot;&gt;DictionaryEntry class &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.comparer(VS.80).aspx&quot;&gt;Comparer class &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.queue(VS.80).aspx&quot;&gt;Queue class &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.sortedlist(VS.80).aspx&quot;&gt;SortedList class &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.bitarray(VS.80).aspx&quot;&gt;BitArray class &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.stack(VS.80).aspx&quot;&gt;Stack class &lt;/a&gt;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt; &lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;&lt;strong&gt;C.Improve type safety and application performance in a .NET Framework application by using generic collections. (Refer &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.generic(VS.80).aspx&quot;&gt;System.Collections.Generic &lt;/a&gt;namespace)&lt;/strong&gt;&lt;br /&gt;•Collection.Generic interfaces&lt;br /&gt;&lt;em&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/4d7sx9hd(VS.80).aspx&quot;&gt;Generic IComparable interface&lt;/a&gt; (Refer System Namespace)&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/92t2ye13(VS.80).aspx&quot;&gt;Generic ICollection interface&lt;/a&gt; and &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/5y536ey6.aspx&quot;&gt;Generic IList interface &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/8ehhxeaf(VS.80).aspx&quot;&gt;Generic IComparer interface &lt;/a&gt;and &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/ms132151(VS.80).aspx&quot;&gt;Generic IEqualityComparer interface&lt;br /&gt;&lt;/a&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/s4ys34ea(VS.80).aspx&quot;&gt;Generic IDictionary interface &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/9eekhta0(VS.80).aspx&quot;&gt;Generic IEnumerable interface&lt;/a&gt; and &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/78dfe2yb(VS.80).aspx&quot;&gt;Generic IEnumerator interface&lt;/a&gt;&lt;br /&gt;&lt;/em&gt;&lt;em&gt;&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.ihashcodeprovider(VS.80).aspx&quot;&gt;IHashCodeProvider interface &lt;/a&gt;(obsolete now)&lt;/em&gt;&lt;/p&gt;&lt;em&gt;&lt;p align=&quot;justify&quot;&gt;•&lt;/em&gt;&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/xfhwa508(VS.80).aspx&quot;&gt;Generic Dictionary&lt;br /&gt;&lt;/a&gt;•&lt;em&gt;Generic Dictionary class and &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/k3z2hhax(VS.80).aspx&quot;&gt;Generic Dictionary.Enumerator structure &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/3fcwy8h6(VS.80).aspx&quot;&gt;Generic Dictionary.KeyCollection class &lt;/a&gt;and &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/8a7wk24w(VS.80).aspx&quot;&gt;Dictionary.KeyCollection.Enumerator structure &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/x8bctb9c(VS.80).aspx&quot;&gt;GenericDictionary.ValueCollectionclass&lt;/a&gt; and &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/ax9d1dzh(VS.80).aspx&quot;&gt;Dictionary.ValueCollection.Enumerator structure &lt;/a&gt;&lt;/em&gt;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/cfttsh47(VS.80).aspx&quot;&gt;Generic Comparer class&lt;/a&gt; and &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/ms132123(VS.80).aspx&quot;&gt;Generic EqualityComparer class&lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/5tbh8a42(VS.80).aspx&quot;&gt;Generic KeyValuePair structure&lt;br /&gt;&lt;/a&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/6sh2ey19(VS.80).aspx&quot;&gt;Generic List class,&lt;/a&gt; &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/x854yt9s(VS.80).aspx&quot;&gt;Generic List.Enumerator structure&lt;/a&gt;, and &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/ms132319(VS.80).aspx&quot;&gt;Generic SortedList class &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/7977ey2c(VS.80).aspx&quot;&gt;Generic Queue class &lt;/a&gt;and &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/7977ey2c(VS.80).aspx&quot;&gt;Generic Queue.Enumerator structure &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/f7fta44c(VS.80).aspx&quot;&gt;Generic SortedDictionary class &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/he2s3bh7(VS.80).aspx&quot;&gt;Generic LinkedList&lt;br /&gt;&lt;/a&gt;&lt;em&gt;•Generic LinkedList class&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/2s4xk11f(VS.80).aspx&quot;&gt;Generic LinkedList.Enumerator structure &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/ahf4c754(VS.80).aspx&quot;&gt;Generic LinkedListNode class&lt;/a&gt;&lt;/em&gt;&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/ahf4c754(VS.80).aspx&quot;&gt; &lt;/a&gt;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/3278tedw(VS.80).aspx&quot;&gt;Generic Stack class &lt;/a&gt;and &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/x2bb46cs(VS.80).aspx&quot;&gt;Generic Stack.Enumerator structure &lt;/a&gt;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt; &lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;&lt;strong&gt;D.Manage data in a .NET Framework application by using specialized collections. (Refer &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.specialized(VS.80).aspx&quot;&gt;System.Collections.Specialized&lt;/a&gt; namespace)&lt;/strong&gt;&lt;br /&gt;•Specialized String classes&lt;br /&gt;&lt;em&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.specialized.stringcollection(VS.80).aspx&quot;&gt;StringCollection class&lt;/a&gt;&lt;/em&gt;&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.specialized.stringcollection(VS.80).aspx&quot;&gt; &lt;/a&gt;&lt;br /&gt;&lt;em&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.specialized.stringdictionary(VS.80).aspx&quot;&gt;StringDictionary class&lt;br /&gt;&lt;/a&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.specialized.stringenumerator(VS.80).aspx&quot;&gt;StringEnumerator class&lt;/a&gt;&lt;/em&gt;&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.specialized.stringenumerator(VS.80).aspx&quot;&gt; &lt;/a&gt;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;&lt;br /&gt;•Specialized Dictionary&lt;br /&gt;&lt;em&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.specialized.hybriddictionary(VS.80).aspx&quot;&gt;HybridDictionary class&lt;br /&gt;&lt;/a&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.specialized.iordereddictionary(VS.80).aspx&quot;&gt;IOrderedDictionary interface&lt;/a&gt; and &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.specialized.ordereddictionary(VS.80).aspx&quot;&gt;OrderedDictionary class &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.specialized.listdictionary(VS.80).aspx&quot;&gt;ListDictionary class&lt;/a&gt;&lt;/em&gt;&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.specialized.listdictionary(VS.80).aspx&quot;&gt; &lt;/a&gt;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;&lt;br /&gt;•Named collections&lt;br /&gt;&lt;em&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.specialized.nameobjectcollectionbase(VS.80).aspx&quot;&gt;NameObjectCollectionBase class &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.specialized.nameobjectcollectionbase.keyscollection(VS.80).aspx&quot;&gt;NameObjectCollectionBase.KeysCollection class &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.specialized.namevaluecollection(VS.80).aspx&quot;&gt;NameValueCollection class&lt;/a&gt;&lt;/em&gt;&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.specialized.namevaluecollection(VS.80).aspx&quot;&gt; &lt;/a&gt;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;&lt;br /&gt;&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.specialized.collectionsutil(VS.80).aspx&quot;&gt;•CollectionsUtil &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.specialized.bitvector32(VS.80).aspx&quot;&gt;BitVector32 structure&lt;/a&gt; and &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.collections.specialized.bitvector32.section(VS.80).aspx&quot;&gt;BitVector32.Section structure &lt;/a&gt;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt; &lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;&lt;strong&gt;E.Implement .NET Framework interfaces to cause components to comply with standard contracts. (Refer &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system(VS.80).aspx&quot;&gt;System &lt;/a&gt;namespace)&lt;/strong&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.icomparable(VS.80).aspx&quot;&gt;IComparable interface &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.idisposable(VS.80).aspx&quot;&gt;IDisposable interface &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.iconvertible(VS.80).aspx&quot;&gt;IConvertible interface &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.icloneable(VS.80).aspx&quot;&gt;ICloneable interface &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/ms131187(VS.80).aspx&quot;&gt;IEquatable interface &lt;/a&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.iformattable(VS.80).aspx&quot;&gt;IFormattable interface &lt;/a&gt;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt; &lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;&lt;strong&gt;F.Control interactions between .NET Framework application components by using events and delegates. (Refer System namespace)&lt;/strong&gt;&lt;br /&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.delegate(VS.80).aspx&quot;&gt;Delegate class&lt;br /&gt;&lt;/a&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.eventargs(VS.80).aspx&quot;&gt;EventArgs class&lt;br /&gt;&lt;/a&gt;•&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.eventhandler(VS.80).aspx&quot;&gt;EventHandler delegates &lt;/a&gt;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt; &lt;/p&gt;</description><link>http://dotnetnitty-gritty.blogspot.com/2008/04/developing-applications-that-use-system.html</link><author>noreply@blogger.com (Priyanks)</author><thr:total>0</thr:total></item></channel></rss>