Question Arises: What is Instance Management? We can say it is a type of rules governed to manage the services with clients. It provides high end in scalability, durability and effective transaction management. Question Arises: What is Per-Session Based Instance Management? The Sessions are well managed between client and service, when the client creates a new proxy pointing towards a particular service instance the independent service is allocated for the client. So, let's try to implement this concept so that we can get much better idea on this: So, firstly we will create simple method in IService1, Where the Complete Code of IService1.cs looks like this: using System.ServiceModel; namespace SimpleInstanceManagement { // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together. [ServiceContract(SessionMode = SessionMode.Required)] public interface IService1 { [OperationContract] int SimpleMethod(int a); } } The Complete Code of Service1.svc looks like this: using System; using System.ServiceModel; namespace SimpleInstanceManagement { // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in code, svc and config file together. [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] public class Service1 : IService1, IDisposable { public int Heighter = 0; public int SimpleMethod(int a) { a = (Heighter = Heighter + 1); return a; } public void Dispose() { Heighter = Heighter " 1; } } } The Complete Code of Web.Config looks like this: <?xml version="1.0"?> <configuration> <system.web> <compilation debug="true" targetFramework="4.0" />" </system.web> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="Application"> <!" To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment "> <serviceMetadata httpGetEnabled="true"/> <!" To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information "> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </serviceBehaviors> </behaviors> <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> <services> <service name="SimpleInstanceManagement.Service1"" behaviorConfiguration="Application"> <endpoint address="/SimpleAddress" binding="wsHttpBinding" contract="SimpleInstanceManagement.IService1">"</endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"> </endpoint> <host> <baseAddresses> <add baseAddress="http://localhost:49257/Service1.svc"/> </baseAddresses> </host> </service> </services> </system.serviceModel> <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> </system.webServer> </configuration> I have created New Web Application where I have added it to existing solution files. I have specified service reference with a link as given below: http://localhost:49257/Service1.svc The Complete Code of WebForm1.aspx looks like this: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Instance.WebForm1"" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title></title> </head> <body> <form id="form1"" runat="server"> <div> <center> <table> <tr> <td> <asp:Label ID="Label1"" runat="server" Text="Please Enter Some Value" ForeColor="Brown" Font-Bold=" true" Font-Italic="true"></asp:Label> </td> <td> <asp:TextBox ID="TextBox1"" runat="server"></asp:TextBox> </td> </tr> <tr> <td> </td> <td> <asp:Button ID="Button1"" runat="server" Text="Click Here" OnClick="Button1Click" Style="margin-left: 0px" Width="118px" /> </td> </tr> </table> </center> </div> </form> </body> </html> The Complete Code of WebForm1.aspx.cs looks like this: using System; using Instance.ServiceReference1; namespace Instance { public partial class WebForm1 : System.Web.UI.Page { protected void PageLoad(object sender, EventArgs e) { } protected void Button1Click(object sender, EventArgs e) { if (TextBox1.Text != null) if ((TextBox1.Text)=="1") { var ab = new Service1Client(); Response.Write("<center>The Value is: <b>" + ab.SimpleMethod((Convert.ToInt32(TextBox1.Text))) + "</br></b></center>"); Response.Write("<center>The Value is: <b>" + ab.SimpleMethod((Convert.ToInt32(TextBox1.Text))) + "</br></b></center>"); Response.Write("<center>The Value is: <b>" + ab.SimpleMethod((Convert.ToInt32(TextBox1.Text))) + "</br></b></center>"); Response.Write("<center><i>Second Instance Created for Service</i></center>"); var bc = new Service1Client(); Response.Write("<center>The Value is: <b>" + bc.SimpleMethod(Convert.ToInt32(TextBox1.Text)) + "</br></b></center>"); Response.Write("<center>The Value is: <b>" + bc.SimpleMethod(Convert.ToInt32(TextBox1.Text)) + "</br></b></center>"); Response.Write("<center>The Value is: <b>" + bc.SimpleMethod((Convert.ToInt32(TextBox1.Text))) + "</br></b></center>"); Response.Write("<center>The Value is: <b>" + bc.SimpleMethod((Convert.ToInt32(TextBox1.Text))) + "</br></b></center>"); } else { Response.Write("<center><b><i>Please Enter Some Values or Enter Correct Values</i></b></center>"); } } } } } The Output of the Application looks like this: The Output of the Application for incorrect results looks like this:I hope this article is useful for you. I look forward for your comments and feedback.
You need to be a premium member to use this feature. To access it, you'll have to upgrade your membership.
Become a sharper developer and jumpstart your career.
$0
$
. 00
monthly
For Basic members:
$20
For Premium members:
$45
For Elite members: