Step 1: Download and follow the Steps
To create a Durable Service from my last blog and Run it.
Step 2: Create the console client
application and name it as DurableServiceClient
Step 3: Add following reference
to client application
System.ServiceModel
System.WorkflowService
Step 4: Run the WCF service and Add
Service Reference to the project and name it as SimpleCalculatorService
Step 5: Create the Helper class called
it as Helper.cs. This helper class is used to Store, Retrieve and set the
context at the client side. Context information will be saved in 'token_context.bin'
file. Copy and paste the below code to your helper file.
Helper.cs
using
System.ServiceModel.Channels;
using
System.ServiceModel;
using
System.Net;
using
System.IO;
using
System.Runtime.Serialization.Formatters.Binary;
public
class
Helper
{
static readonly String
TokenContextFileName = "token_context.bin";
public static IDictionary<String, String>
LoadContext()
{
IDictionary<String,
String> ctx = null;
try
{
using (FileStream
fs = new
FileStream(TokenContextFileName,
FileMode.Open,
FileAccess.Read))
{
BinaryFormatter bf =
new BinaryFormatter();
ctx =
bf.Deserialize(fs) as IDictionary<String,
String>;
fs.Close();
}
}
catch (Exception ex)
{
}
return ctx;
}
public static
void SaveContext(IClientChannel
channel)
{
IDictionary<String,
String> ctx = null;
IContextManager cm = channel.GetProperty<IContextManager>();
if (cm != null)
{
ctx =
cm.GetContext() as IDictionary<String, String>;
try
{
using (FileStream
fs
=
new FileStream(TokenContextFileName,
FileMode.CreateNew))
{
BinaryFormatter bf =
new BinaryFormatter();
bf.Serialize(fs, ctx);
fs.Close();
}
}
catch (Exception ex)
{
}
}
}
public static
void DeleteContext()
{
try
{
File.Delete(TokenContextFileName);
}
catch (Exception ex)
{
}
}
public static
void SetContext(IClientChannel
channel,
IDictionary<String,
String> ctx)
{
IContextManager cm = channel.GetProperty<IContextManager>();
if (cm != null)
{
cm.SetContext(ctx);
}
}
}
Step 6: On Programm.cs page write this code.
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
namespace
DurableServiceclient
{
class Program
{
static void
Main(string[] args)
{
SimpleCalculatorService.SimpleCalculatorClient client
=
new
SimpleCalculatorService.SimpleCalculatorClient();
int currentValue = 0;
currentValue =
client.Add(200);
Console.WriteLine("The
current value is {0}", currentValue);
Helper.SaveContext(client.InnerChannel);
client.Close();
client =
new
SimpleCalculatorService.SimpleCalculatorClient();
IDictionary<string,
string> cntx = Helper.LoadContext();
Helper.SetContext(client.InnerChannel, cntx);
currentValue =
client.Subtract(23);
Console.WriteLine("The
current value is {0}", currentValue);
currentValue =
client.Multiply(2);
Console.WriteLine("The
current value is {0}", currentValue);
Helper.DeleteContext();
client.EndPersistence();
Console.WriteLine("Press
<ENTER> to shut down the client.");
Console.ReadLine();
client.Close();
}
}
}
Step 7: Run and See The Result. For more find the attached code.