GAC - Global Assembly cache
The global assembly cache stores assemblies specifically designated to be shared by several applications on the computer.
Dotnet, DotnetCore, Azure, C#,VB.net, Sql Server, WCF, MVC ,Linq, Javascript and Jquery
18 August 2013
Worker Process and Application Pool in asp.net
Worker Process and Application Pool in asp.net
Worker Process:
Worker Process (w3wp.exe) runs the ASP.Net application in IIS. This process is responsible to manage all the request and response that are coming from client system. All the ASP.Net functionality runs under the scope of worker process. When a request comes to the server from a client worker process is responsible to generate the request and response. In a single word we can say worker process is the heart of ASP.NET Web Application which runs on IIS.
Application Pool:
Application pool is the container of worker process. Application pools is used to separate sets of IIS worker processes that share the same configuration. Application pools enables a better security, reliability, and availability for any web application. The worker process serves as the process boundary that separates each application pool so that when one worker process or application is having an issue or recycles, other applications or worker processes are not affected. This makes sure that a particular web application doesn't not impact other web application as they they are configured into different application pools.
Worker Process:
Worker Process (w3wp.exe) runs the ASP.Net application in IIS. This process is responsible to manage all the request and response that are coming from client system. All the ASP.Net functionality runs under the scope of worker process. When a request comes to the server from a client worker process is responsible to generate the request and response. In a single word we can say worker process is the heart of ASP.NET Web Application which runs on IIS.
Application Pool:
Application pool is the container of worker process. Application pools is used to separate sets of IIS worker processes that share the same configuration. Application pools enables a better security, reliability, and availability for any web application. The worker process serves as the process boundary that separates each application pool so that when one worker process or application is having an issue or recycles, other applications or worker processes are not affected. This makes sure that a particular web application doesn't not impact other web application as they they are configured into different application pools.
15 August 2013
Serialization and DeSerialization in C#
Serialization and DeSerialization in C#
Serialization is the process of converting an object into a stream of bytes in order to persist it to memory, a database, or a file. Its main purpose is to save the state of an object in order to be able to recreate it when needed. The reverse process is called deserialization.
The object is serialized to a stream, which carries not just the data, but information about the object's type, such as its version, culture, and assembly name. From that stream, it can be stored in a database, a file, or memory.
Serialization allows the developer to save the state of an object and recreate it as needed, providing storage of objects as well as data exchange. Through serialization, a developer can perform actions like sending the object to a remote application by means of a Web Service, passing an object from one domain to another, passing an object through a firewall as an XML string, or maintaining security or user-specific information across applications.
Serialization is the process of converting an object into a stream of bytes in order to persist it to memory, a database, or a file. Its main purpose is to save the state of an object in order to be able to recreate it when needed. The reverse process is called deserialization.
The object is serialized to a stream, which carries not just the data, but information about the object's type, such as its version, culture, and assembly name. From that stream, it can be stored in a database, a file, or memory.
Serialization allows the developer to save the state of an object and recreate it as needed, providing storage of objects as well as data exchange. Through serialization, a developer can perform actions like sending the object to a remote application by means of a Web Service, passing an object from one domain to another, passing an object through a firewall as an XML string, or maintaining security or user-specific information across applications.
Binary Serialization
Binary serialization uses binary encoding to produce compact serialization for uses such as storage or socket-based network streams.
XML Serialization
XML serialization serializes the public fields and properties of an object, or the parameters and return values of methods, into an XML stream that conforms to a specific XML Schema definition language (XSD) document. XML serialization results in strongly typed classes with public properties and fields that are converted to XML.System.Xml.Serialization contains the classes necessary for serializing and deserializing XML.
SOAP Serialization
XML serialization can also be used to serialize objects into XML streams that conform to the SOAP specification. SOAP is a protocol based on XML, designed specifically to transport procedure calls using XML. As with regular XML serialization, attributes can be used to control the literal-style SOAP messages generated by an XML Web service.
Basic Serialization
The only requirement in basic serialization is that the object has the SerializableAttribute attribute applied. The NonSerializedAttribute can be used to keep specific fields from being serialized.
When you use basic serialization, the versioning of objects may create problems, in which case custom serialization may be preferable. Basic serialization is the easiest way to perform serialization, but it does not provide much control over the process.
Custom Serialization
In custom serialization, you can specify exactly which objects will be serialized and how it will be done. The class must be marked SerializableAttribute and implement theISerializable interface.
12 August 2013
Html.TextBox vs Html.TextBoxFor in MVC
Html.TextBox vs Html.TextBoxFor in MVC
Html.TextBox and Html.DropDownList are not strongly typed and hence they doen't require a
strongly typed view. This means that we can hardcore whatever name we want.
On the other hand, Html.TextFor and Html.DropDownListFor are strongly typed and requires
a strongly typed view, and the name is inferred from the Lambda expression.
Whether we use Html.TextBox and Html.DropDownlist or Html.TextBoxFor and Html.DropDownListFor,
the end result is the same. they produce the same Html.
Html.TextBox and Html.DropDownList are not strongly typed and hence they doen't require a
strongly typed view. This means that we can hardcore whatever name we want.
On the other hand, Html.TextFor and Html.DropDownListFor are strongly typed and requires
a strongly typed view, and the name is inferred from the Lambda expression.
Whether we use Html.TextBox and Html.DropDownlist or Html.TextBoxFor and Html.DropDownListFor,
the end result is the same. they produce the same Html.
Nested List in C#
Nested List in C#
Consider there are two Class
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public List< Addresses > { get; set; }
}
public class Address
{
public string Line1 { get; set; }
public string Line2 { get; set; }
public string ZipCode { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Country { get; set; }
}
Procedure used to add multiple class in the List
var personDetails = new List< Person >
{
new Person
{
Id = 1, FirstName = "Arun",
LastName = "Prakash",
Addresses = new List< Address >
{
new Address{Line1 = "Hope College",Line2 = "Coimbatore"}
}
},
new Person{
Id = 2, FirstName = "Sanjay",
LastName = "Ramasamy",
Addresses = new List< Address >
{
new Address{Line1 = "Anna Salai",Line2= "Chennai"}
}
}
};
Consider there are two Class
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public List< Addresses > { get; set; }
}
public class Address
{
public string Line1 { get; set; }
public string Line2 { get; set; }
public string ZipCode { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Country { get; set; }
}
Procedure used to add multiple class in the List
var personDetails = new List< Person >
{
new Person
{
Id = 1, FirstName = "Arun",
LastName = "Prakash",
Addresses = new List< Address >
{
new Address{Line1 = "Hope College",Line2 = "Coimbatore"}
}
},
new Person{
Id = 2, FirstName = "Sanjay",
LastName = "Ramasamy",
Addresses = new List< Address >
{
new Address{Line1 = "Anna Salai",Line2= "Chennai"}
}
}
};
5 August 2013
Html.RenderPartial vs Html.Partial, Html.RenderAction vs Html.Action
Html.RenderPartial vs Html.Partial, Html.RenderAction vs Html.Action
@Html.Partial("Details")
@Html.Action("Index", "Home")
and
@{ Html.RenderPartial("Details"); }
@{ Html.RenderAction("Index", "Home"); }
Html.Partial returns a string, Html.RenderPartial calls Write internally, and returns void.
You can store the output of Html.Partial in a variable, or return it from a function. You cannot do this with Html.RenderPartial.
Html.RenderPartial -The result will be written to the Response stream during the execution.
The same is true for Html.Action and Html.RenderAction.
@Html.Partial("Details")
@Html.Action("Index", "Home")
and
@{ Html.RenderPartial("Details"); }
@{ Html.RenderAction("Index", "Home"); }
Html.Partial returns a string, Html.RenderPartial calls Write internally, and returns void.
You can store the output of Html.Partial in a variable, or return it from a function. You cannot do this with Html.RenderPartial.
Html.RenderPartial -The result will be written to the Response stream during the execution.
The same is true for Html.Action and Html.RenderAction.
MVC 3 Ajax Json Sample
MVC 3 Ajax Json Sample
Create model name PersonDetails.cs
using System.Collections.Generic;
namespace MVCJsonAjax.Models
{
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public List< Address > Addresses { get; set; }
}
public class Address
{
public string Line1 { get; set; }
public string Line2 { get; set; }
public string ZipCode { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Country { get; set; }
}
}
Create Controller - SaveController.cs
using System.Web.Mvc;
using MVCJsonAjax.Models;
namespace MVCJsonAjax.Controllers
{
public class SaveController : Controller
{
//
// GET: /Save/
[ActionName("SaveData"),HttpGet]
public ActionResult SaveData()
{
return View();
}
[ActionName("SaveData"), HttpPost]
public JsonResult SaveData(Person objPerson,Address objAddress)
{
JsonResult result = new JsonResult();
// Save logic - save person and address details
result.Data = "Saved Successfully";
return result;
}
}
}
Create View for ActionResult SaveData()
@using MVCJsonAjax.Models
@{
ViewBag.Title = "SaveData";
}
< h2 >
Save Data< /h2 >
< div>
< div id="message" >
< /div>
< /div >
< script type =" text/javascript ">
$(document).ready(function () {
$('#btnSubmit').click(function () {
var Person =
{
FirstName: $('#Item1_FirstName').val(),
LastName: $('#Item1_LastName').val()
};
var Address =
{
Line1: $('#Item2_Line1').val(),
Line2: $('#Item2_Line2').val(),
ZipCode: $('#Item2_ZipCode').val(),
City: $('#Item2_City').val(),
State: $('#Item2_State').val(),
Country: $('#Item2_Country').val()
};
var obj = { "Per": Person, "Add": Address};
$.ajax({
url: '/Save/SaveData',
type: "POST",
data:JSON.stringify({objPerson: Person ,objAddress: Address }),
cache: false,
dataType: "json",
contentType: "application/json;charset=utf-8",
success: function (result) {
$('#message').html(result).fadeIn();
}
});
return false;
});
});
@model Tuple< Person, Address >
@using ( Html.BeginForm() )
{
< table >
< tr >
< td >
@Html.LabelFor(m => m.Item1.FirstName)
@Html.TextBoxFor(m => m.Item1.FirstName)
< /td >
< /tr >
< tr >
< td >
@Html.LabelFor(m => m.Item1.LastName)
@Html.TextBoxFor(m => m.Item1.LastName)
< /td >
< /tr >
< tr >
< td >
@Html.LabelFor(m => m.Item2.Line1)
@Html.TextBoxFor(m => m.Item2.Line1)
< /td >
< /tr >
< tr >
< td >
@Html.LabelFor(m => m.Item2.Line2)
@Html.TextBoxFor(m => m.Item2.Line2)
< /td >
< /tr >
< tr >
< td >
@Html.LabelFor(m => m.Item2.ZipCode)
@Html.TextBoxFor(m => m.Item2.ZipCode)
< /td >
< /tr >
< tr >
< td >
@Html.LabelFor(m => m.Item2.City)
@Html.TextBoxFor(m => m.Item2.City)
< /td >
< /tr >
< tr >
< td >
@Html.LabelFor(m => m.Item2.State)
@Html.TextBoxFor(m => m.Item2.State)
< /td >
< /tr >
< tr >
< td >
@Html.LabelFor(m => m.Item2.Country)
@Html.TextBoxFor(m => m.Item2.Country)
< /td >
< /tr >
< tr >
< td >
< input type="submit" value="Submit" id="btnSubmit" / >
< /td >
< /tr >
< /table >
}
Create model name PersonDetails.cs
using System.Collections.Generic;
namespace MVCJsonAjax.Models
{
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public List< Address > Addresses { get; set; }
}
public class Address
{
public string Line1 { get; set; }
public string Line2 { get; set; }
public string ZipCode { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Country { get; set; }
}
}
Create Controller - SaveController.cs
using System.Web.Mvc;
using MVCJsonAjax.Models;
namespace MVCJsonAjax.Controllers
{
public class SaveController : Controller
{
//
// GET: /Save/
[ActionName("SaveData"),HttpGet]
public ActionResult SaveData()
{
return View();
}
[ActionName("SaveData"), HttpPost]
public JsonResult SaveData(Person objPerson,Address objAddress)
{
JsonResult result = new JsonResult();
// Save logic - save person and address details
result.Data = "Saved Successfully";
return result;
}
}
}
Create View for ActionResult SaveData()
@using MVCJsonAjax.Models
@{
ViewBag.Title = "SaveData";
}
< h2 >
Save Data< /h2 >
< div>
< div id="message" >
< /div>
< /div >
< script type =" text/javascript ">
$(document).ready(function () {
$('#btnSubmit').click(function () {
var Person =
{
FirstName: $('#Item1_FirstName').val(),
LastName: $('#Item1_LastName').val()
};
var Address =
{
Line1: $('#Item2_Line1').val(),
Line2: $('#Item2_Line2').val(),
ZipCode: $('#Item2_ZipCode').val(),
City: $('#Item2_City').val(),
State: $('#Item2_State').val(),
Country: $('#Item2_Country').val()
};
var obj = { "Per": Person, "Add": Address};
$.ajax({
url: '/Save/SaveData',
type: "POST",
data:JSON.stringify({objPerson: Person ,objAddress: Address }),
cache: false,
dataType: "json",
contentType: "application/json;charset=utf-8",
success: function (result) {
$('#message').html(result).fadeIn();
}
});
return false;
});
});
@model Tuple< Person, Address >
@using ( Html.BeginForm() )
{
< table >
< tr >
< td >
@Html.LabelFor(m => m.Item1.FirstName)
@Html.TextBoxFor(m => m.Item1.FirstName)
< /td >
< /tr >
< tr >
< td >
@Html.LabelFor(m => m.Item1.LastName)
@Html.TextBoxFor(m => m.Item1.LastName)
< /td >
< /tr >
< tr >
< td >
@Html.LabelFor(m => m.Item2.Line1)
@Html.TextBoxFor(m => m.Item2.Line1)
< /td >
< /tr >
< tr >
< td >
@Html.LabelFor(m => m.Item2.Line2)
@Html.TextBoxFor(m => m.Item2.Line2)
< /td >
< /tr >
< tr >
< td >
@Html.LabelFor(m => m.Item2.ZipCode)
@Html.TextBoxFor(m => m.Item2.ZipCode)
< /td >
< /tr >
< tr >
< td >
@Html.LabelFor(m => m.Item2.City)
@Html.TextBoxFor(m => m.Item2.City)
< /td >
< /tr >
< tr >
< td >
@Html.LabelFor(m => m.Item2.State)
@Html.TextBoxFor(m => m.Item2.State)
< /td >
< /tr >
< tr >
< td >
@Html.LabelFor(m => m.Item2.Country)
@Html.TextBoxFor(m => m.Item2.Country)
< /td >
< /tr >
< tr >
< td >
< input type="submit" value="Submit" id="btnSubmit" / >
< /td >
< /tr >
< /table >
}
Subscribe to:
Posts (Atom)
Implementing OAuth validation in a Web API
I mplementing OAuth validation in a Web API Implementing OAuth validation in a Web API using C# typically involves several key steps to sec...
-
ViewBag, ViewData, TempData and View State in MVC ASP.NET MVC offers us three options ViewData, ViewBag and TempData for passing data from...
-
· Azure Service Fabric is Microsoft’s Platform-as-a-Service (PaaS) and is used to build and deploy microservices-based cloud applicat...
-
// Export Datatable to Excel in C# Windows application using System; using System.Data; using System.IO; using System.Windows.Forms; ...