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类型),缺点降低了数据接口的松耦合性.

  • 相关阅读:
    Mininet 搭建自定义网络
    struts 2 三目运算
    shell 变量自增(转)
    Java DES 加密和解密源码(转)
    java调用shell脚本
    shell 学习
    debian安装jdk6
    linux(debian) 安装jdk
    利用SecureCRT上传、下载文件(使用sz与rz命令)
    oracle之报错:ORA-00054: 资源正忙,要求指定 NOWAIT
  • 原文地址:https://www.cnblogs.com/kingge/p/1983573.html
Copyright © 2011-2022 走看看