WCF发布和本地访问案例

来源:互联网 发布:nodejs 遍历数组 编辑:程序博客网 时间:2024/05/21 19:32


using System;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Runtime.Serialization;


namespace WCFTest
{
    [DataContract]
    public class Student
    {
        private string name;
        [DataMember(Name = "Name")]
        public string MyName
        {
            get
            {
                return name;
            }
            set
            {
                name = value;
            }
        }

        private int? age;
        [DataMember(Name = "MyAge")]
        public int? MyAge
        {
            get
            {
                return age;
            }
            set
            {
                age = value;
            }
        }

        private long? id;
        [DataMember(Name = "ID")]
        public long? MyID
        {
            get
            {
                return id;
            }
            set
            {
                id = value;
            }
        }
        private bool? graduate;
        [DataMember(Name = "Graduate")]
        public bool? MyGraduate
        {
            get
            {
                return graduate;
            }
            set
            {
                graduate = value;
            }
        }

        [OnDeserialized]
        void OnDeserilized(System.Runtime.Serialization.StreamingContext c)
        {
            MyAge = (MyAge == null ? 20 : MyAge);
        }
    }


    [ServiceContract]
    public interface IService
    {
        [OperationContract]
        Student GetStudent(Student student);
    }


    public class Service : IService
    {
      
        public Student GetStudent(Student student)
        {
            return student;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            //发布发服务器
            string URL = "http://localhost:8080";
            Binding binding = new BasicHttpBinding();
            ServiceHost serviceHost = new ServiceHost(typeof(Service));
            serviceHost.AddServiceEndpoint(typeof(IService), binding, URL);
            serviceHost.Open();


            //本地访问
            ChannelFactory<IService> channelFactory = new ChannelFactory<IService>(binding);
            channelFactory.Open();
            EndpointAddress endpointAddress = new EndpointAddress(URL);
            IService proxy = channelFactory.CreateChannel(endpointAddress);
            Student ss = new Student();
            ss.MyName = "11111111";


            Console.WriteLine("Data before calling service " + ("姓名:" + ss.MyName + "年龄:" + (ss.MyAge == null ? " null " : ss.MyAge.Value.ToString())));
            Console.WriteLine(".............");
            Console.WriteLine(".............");
           Student ss1= proxy.GetStudent(ss);

            Console.WriteLine("Data after  calling service " + ("姓名:" + ss1.MyName + "年龄:" + (ss1.MyAge == null ? " null " : ss1.MyAge.Value.ToString())));
            Console.ReadLine();
        }
    }
}

原创粉丝点击