- Open WCF service host project that you created OR create one based on instructions here.
- Add a new project to the current solution: Right click Solution on Solution Explorer > Add > Add New Project
- Select Console Application template under Visual C# > Windows templates
- Change the project name to ConsoleClient and click OK
- In Solution Explorer, under ConsoleClient project, right click References and select Add Service Reference...
- In the Add Service Reference dialog, click Discover button. This should bring you the Mex address of the service. If not, you may have to copy the endpoint address from the ConsoleHost's App.config file and click go.
- Now you should see the ProductService in Services section.
- Change the default name in Namespace textbox to ProductReference and click OK.
- Doing the above will update the references and also App.config file.
- In the Program.cs file, add using System.ServiceModel; and using ConsoleClient.ProductReference;
- Add the following code
static void Main(string[] args)
{
ProductServiceClient client = new ProductServiceClient("BasicHttpBinding_IProductService");
Console.WriteLine("Press 1 to Add | 2 to List All | 3 to List by Product | 0 to Exit");
Console.Write("Select an option : ");
string opt = Console.ReadLine();
while (!opt.Equals("0"))
{
switch (opt)
{
case "1":
Console.Write("Id:");
string id = Console.ReadLine();
Console.Write("Product Code:");
string code = Console.ReadLine();
Console.Write("Product Name:");
string name = Console.ReadLine();
Console.Write("Your Review:");
string review = Console.ReadLine();
ProductReview pr = new ProductReview();
pr.Id = id;
pr.ProductCode = code;
pr.ProductName = name;
pr.Review = review;
client.SubmitReview(pr);
Console.WriteLine("Thank you for your product review.");
break;
case "2":
ProductReview[] allPrs = client.ListAllReview();
foreach (var item in allPrs)
{
Console.WriteLine(" Review Id:{0} \n Product Code:{1} \n Product Name:{2} \n Product Review: ", item.Id, item.ProductCode, item.ProductName, item.Review);
}
break;
case "3":
Console.Write("Product Code:");
string pCode = Console.ReadLine();
ProductReview[] prsByProduct = client.ListReviewByProduct(pCode);
foreach (var item in prsByProduct)
{
Console.WriteLine("Review Id:{0} \n Product Code:{1} \n Product Name:{2} \n Product Review: ", item.Id, item.ProductCode, item.ProductName, item.Review);
}
break;
default:
Console.WriteLine("Invalid option");
break;
}
Console.WriteLine();
Console.WriteLine("Press 1 to Add | 2 to List All | 3 to List by Product | 0 to Exit");
Console.Write("Select an option : ");
opt = Console.ReadLine();
}
}
Emabling Multiple StartUp projects
- In solution explorer, right click on the solution and select Properties
- Select Multiple Startup Projects option in Common Properties > Startup Project
- For ConsoleHost project change the action to Start and for ConsoleClient project change the action to Start.
- Reorder ConsoleHost so that it is above ConsoleClient, therefore starts before ConsoleClient.