• (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-01805141702Administrator" />
            </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();
            }
        }
  • 相关阅读:
    计算机网络
    二叉树
    队列
    百度脑图-离线版(支持Linux、Mac、Win)
    nested exception is java.lang.NoClassDefFoundError: javax/xml/soap/SOAPElement
    手写注解实现SpringMVC底层原理(虽简单却五脏俱全《注重思路》)
    java异常
    JVM相关
    redis相关总结
    mysql 数据库相关
  • 原文地址:https://www.cnblogs.com/buchizaodian/p/10027055.html
Copyright © 2020-2023  润新知