(5)数据契约

 wcf传递类和结构

一、使用 [Serializable] 特性 序列化 

服务端

 IService1.cs

    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
         Animal GetData(Animal value);
    }

 Service1.cs

    public class Service1 : IService1
    {
        public Animal GetData()
        {
            Animal A = new Animal();
            A.name = "cat";
            return A;
        }
    }

 

 公用的类库

Animal.cs

    [Serializable]
    class Animal
    {
        string name;
    }

Program.cs

    class Program
    {
        static void Main(string[] args)
        {
            Uri httpBaseAddress = new Uri("http://localhost:9001/");
            Uri tcpBaseAddress = new Uri("net.tcp://localhost:9002/");

            //ServiceHost host = new ServiceHost(typeof(Service1), httpBaseAddress, tcpBaseAddress);
            ServiceHost host = new ServiceHost(typeof(Service1), httpBaseAddress, tcpBaseAddress);
            ////启动行为
            ServiceMetadataBehavior smb = host.Description.Behaviors.Find<ServiceMetadataBehavior>();
            if (smb == null)
            {
                smb = new ServiceMetadataBehavior();
            }
            smb.HttpGetEnabled = true;
            host.Description.Behaviors.Add(smb);
            host.Open();
            Console.WriteLine("Service已经启动,按任意键终止服务!");
            Console.Read();
            host.Close();
        }
    }

 

客户端

proxy.cs

使用工具生成代理类

Animal.cs

和服务端共享

App.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_IService1" />
      </basicHttpBinding>
      <netTcpBinding>
        <binding name="NetTcpBinding_IService1" />
      </netTcpBinding>
    </bindings>
    <client>
      <endpoint address="http://localhost:9001/" binding="basicHttpBinding"
          bindingConfiguration="BasicHttpBinding_IService1" contract="IService1"
          name="BasicHttpBinding_IService1" />
      <endpoint address="net.tcp://localhost:9002/" binding="netTcpBinding"
          bindingConfiguration="NetTcpBinding_IService1" contract="IService1"
          name="NetTcpBinding_IService1">
        <identity>
          <userPrincipalName value="XTZ-01805141702\Administrator" />
        </identity>
      </endpoint>
    </client>
  </system.serviceModel>
</configuration>

 

Program.cs

    class Program
    {
        static void Main(string[] args)
        {      
            Service1Client proxy = new Service1Client("BasicHttpBinding_IService1");//传入客户端终结点名称
            Animal b = proxy.GetData();
            Console.Write(b.name);
            Console.ReadKey();
        }
    }

 

转载于:https://www.cnblogs.com/buchizaodian/p/10027055.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值