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,确实能够让我们深化理解基础概念,为以后的学习打下基础。

posted @ 2017-10-17 08:13  cache.yuan  阅读(106)  评论(0编辑  收藏  举报