zoukankan      html  css  js  c++  java
  • 替换WCF默认序列化方式

    创建类 :

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.ServiceModel.Description;

    using System.Xml;

    using System.Runtime.Serialization;

    namespace Kingge.Mini.Network

    {

    public class NetDataContractSerializerOperationBehavior:DataContractSerializerOperationBehavior

    {

            public NetDataContractSerializerOperationBehavior(OperationDescription operationDescription)

                : base(operationDescription)

            {

            }

            public override XmlObjectSerializer CreateSerializer(Type type, string name, string ns, IList<Type> knownTypes)

            {

                return new NetDataContractSerializer(name,ns);

            }

            public override XmlObjectSerializer CreateSerializer(Type type, XmlDictionaryString name, XmlDictionaryString ns, IList<Type> knownTypes)

            {

                return new NetDataContractSerializer(name, ns);

            }

        }

    }

    客户端:

                using (ChannelFactory<T> factory = new ChannelFactory<T>(binding,adress))

                {

                    foreach (OperationDescription op in factory.Endpoint.Contract.Operations)

                    {

                        op.Behaviors.Remove<DataContractSerializerOperationBehavior>();

                        op.Behaviors.Add(new NetDataContractSerializerOperationBehavior(op));

                    }

                    ...... // do something

                }

    服务端:

                using (ServiceHost host = new ServiceHost(obj))

                {

                    foreach (ServiceEndpoint ep in host.Description.Endpoints)

                    {

                        foreach (OperationDescription op in ep.Contract.Operations)

                        {

                            op.Behaviors.Remove<DataContractSerializerOperationBehavior>();

                            op.Behaviors.Add(new NetDataContractSerializerOperationBehavior(op));

                        }

                    }

                    host.Open();

                    Console.Read();

                }

    好处提高了序列化能力(例如如此可以序列化Type类型),缺点降低了数据接口的松耦合性.

  • 相关阅读:
    初识Ubuntu 18.04(更换系统头像,截图,sy)
    HDU
    HDU
    进度1
    开课博客
    返回一个整数数组中最大子数组的和
    开学第一节课测试感受
    网页记账本开发四(基本完成)
    网页记账本开发三
    网页记账本开发二
  • 原文地址:https://www.cnblogs.com/kingge/p/1983573.html
Copyright © 2011-2022 走看看