WCF简单Demo

时间:2023-03-09 15:07:16
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.启动服务测试。

WCF简单Demo

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.最后在解决方案中记得将这三个项目设置为多项目启动。

WCF简单Demo

d.反馈结果:

WCF简单Demo

总结:这是一个简单的demo演示,还有很多复杂的功能,只是通过这么一个简单的demo,确实能够让我们深化理解基础概念,为以后的学习打下基础。