WCF简单Demo
WCF,光看书的原理,稍微有点枯燥,通过自己动手,会更容易理解契约声明,面向服务,分布式等概念。
1.创建WCF服务。
2.WcfService1.CS中声明新的契约。
namespace WcfService1
{
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService1”。
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData(int value);//声明契约
[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite);
// TODO: 在此添加您的服务操作
[OperationContract]
int GetSum(DateTime time);
[OperationContract]
string GetShopInfo(string address);
[OperationContract(IsOneWay=true)]
void onewaytest();
}
// 使用下面示例中说明的数据约定将复合类型添加到服务操作。
[DataContract]
public class CompositeType
{
bool boolValue = true;
string stringValue = "Hello ";
[DataMember]
public bool BoolValue
{
get { return boolValue; }
set { boolValue = value; }
}
[DataMember]
public string StringValue
{
get { return stringValue; }
set { stringValue = value; }
}
}
}
3.WcfService1.svc.cs中编写相应的方法
public int GetSum(DateTime time)
{
int BreadNum = 10;
int Milk = 5;
int hotdog = 20;
int today = BreadNum + Milk + hotdog;
return today;
}
public string GetShopInfo(string address)
{
if (address == "武汉")
{
return "武汉KFC";
}
else if (address =="上海")
{
return "上海KFC";
}
else if (address == "北京")
{
return "北京KFC";
}
else
{
return "没有该连锁店";
}
}
public void onewaytest()
{
Console.WriteLine("hello world");
}
4.启动服务测试。
5.新建winform窗体和webapplication来测试WCF的跨平台性。
a.分别添加服务引用。
b.编写代码测试
winform
private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
using(
WindowsFormsApplication1.ServiceReference1.Service1Client ser=new WindowsFormsApplication1.ServiceReference1.Service1Client()){
textBox1.Text = ser.GetSum(Convert.ToDateTime(dateTimePicker1.Text)).ToString();
}
}
webapplication
protected void Button1_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(TextBox1.Text))
{
using (WebApplication1.ServiceReference1.Service1Client ser = new WebApplication1.ServiceReference1.Service1Client())
{
TextBox2.Text = ser.GetShopInfo(TextBox1.Text);
}
}
else
{
TextBox2.Text = "无法检索,字符串为空";
}
}
c.最后在解决方案中记得将这三个项目设置为多项目启动。
d.反馈结果:
总结:这是一个简单的demo演示,还有很多复杂的功能,只是通过这么一个简单的demo,确实能够让我们深化理解基础概念,为以后的学习打下基础。
本文来自博客园,作者:cache.yuan,转载请注明原文链接:https://www.cnblogs.com/cache-yuan/p/9042342.html