Introduction
I will examine how to create and consume a WCF service. WCF is a next-generation programming platform and runtime system for building, configuring and deploying service-oriented applications. For more details, please see here.
Creating a WCF Service
I will create a stock service to demonstrate a WCF service. To create a WCF service, please follow these steps:
- Launch Visual Studio 2008.
- Click on File -> new -> project, then select WCF service application.
- It will create a WCF service application template.
I will delete the default contract and then create an
IStock
contract as shown below.Using the Code
[ServiceContract]
public interface IStock
{
[OperationContract]
Stock GetStock(string Symbol);
}
The above contract has one method that returns a
stock
object for a given symbol. Here is our Stock
class that has Symbol
, Date
, Company
and Close
properties respectively.[DataContract]
public class Stock
{
[DataMember]
public string Symbol { get; set; }
[DataMember]
public DateTime Date { get; set; }
[DataMember]
public string Company { get; set; }
[DataMember]
public decimal Close { get; set; }
}
Next, I will delete the default service and create a
Stock
service that will implement the Istock
contract as shown below: public class Stocks : IStock
{
#region IStock Members
public Stock GetStock(string Symbol)
{
Stock st = null;
switch (Symbol.ToUpper())
{
case "GOOG":
st = new Stock { Symbol = Symbol, Date = DateTime.Now,
Company = "Google Inc.", Close = 495 };
break;
case "MSFT":
st = new Stock { Symbol = Symbol, Date = DateTime.Now,
Company = "Microsoft Corporation", Close = 25 };
break;
case "YHOO":
st = new Stock { Symbol = Symbol, Date = DateTime.Now,
Company = "Yahoo! Inc.", Close = 17 };
break;
case "AMZN":
st = new Stock { Symbol = Symbol, Date = DateTime.Now,
Company = "Amazon.com, Inc.", Close = 92 };
break;
}
return st;
}
#endregion
}
In the above service, I implemented
IStock
contract that has a GetStock
method which returns stock
object for a given Symbol
.
Now, I will have the following endpoints in my web.config:
<service behaviorConfiguration="WcfSample.Service1Behavior" name="WcfSample.Stocks">
<endpoint address="" binding="wsHttpBinding" contract="WcfSample.IStock">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
In the above configuration, we have
address=""
which is localhost, binding="wsHttpBinding"
andcontract="WcfSample.IStock"
.
Now I will compile the service and build a client to consume the service.
Creating a Client to Consume Service
To create a client, I will create a web application. Please follow these steps.
- Right Click on Solution -> Add -> new project, then select ASP.NET web application.
- It will create a web application template.
- Now, I will add the service reference. To add a service reference, select client application, then add a service reference. Since our client is in a same solution, I will click discover and service in the solution as shown below:
- In default.aspx, I will create a simple UI, a
textbox
to enter the stock symbol and a button to call the service to get stock information. Here is our code behind:
ServiceReference2.StockClient sc = new ServiceReference2.StockClient(); ServiceReference2.Stock st = sc.GetStock(TextBox1.Text.Trim()); StringBuilder sb = new StringBuilder(); sb.AppendFormat("<B>Company:</B> {0}<br />", st.Company); sb.AppendFormat("<B>Date: </B>{0}<br />", st.Date); sb.AppendFormat("<B>Close: </B>{0}<br />", st.Close); sb.AppendFormat("<B>Symbol: </B>{0}<br />", st.Symbol); Label1.Text = sb.ToString();
- Here are a few screenshots from our final application:
No comments:
Post a Comment