解决方案 »

  1.   

    比Remoting更复杂、更沉重、同样有效的RPC机制,在10年前有很多。但是你要问最近5年流行什么,对不起,他们全都被打上了“过时了”的记号。因为要适应这些年形势的因素很多。比如说服务器群中各个服务器的“无状态”通讯机制,比如说高速、轻量级握手协议,比如说支持json/xml数据对象适配,比如说脱离“拥有者公司”的官僚主义,等等。
      

  2.   

    就具体这一点东西而言,其实“支持泛型”不算什么。因为在Remoting中你必须在两端都预先部署目标类型代码,然后才能泛型中的所谓T参数反射成功。而既然需要这样,其实你可以定义一个不带泛型参数的参数的类型,它从带泛型参数最终类型来继承,这样你传送的对象的类型也就不带有泛型参数了。比如说你用json字符串来表示一个对象,然后用一个string来表示这个对象的类型,然后你自己写两句话来反序列化出这个json字符串对应的内存对象,如果你这样写过几行代码,你就不觉得泛型反射在这里算是什么重要论据。
      

  3.   


    不知wcf中是否有类似的解决办法实现 这种泛型方法? 我现在急需在service中加入泛型方法,传递的参数只会是int decimal double之类的基本类型,返回值类型也是如此。 谢谢!
      

  4.   

    如果是自定义格式的TCP服务,可以试试fastCSharpusing System;
    using System.Collections.Generic;namespace fastCSharp.testCase
    {
        [fastCSharp.setup.cSharp.tcpServer(IsIdentityCommand = true, Host = "127.0.0.1", Port = 12345)]
        internal partial class tcpServerGeneric
        {
            [fastCSharp.setup.cSharp.tcpServer(CommandIentity = 0)]
            private valueType get<valueType>()
            {
                object value;
                return values.TryGetValue(typeof(valueType), out value) ? (valueType)value : default(valueType);
            }
            private static readonly Dictionary<Type, object> values = new Dictionary<Type, object>();        [fastCSharp.setup.testCase]
            private static bool testCase()
            {
                using (fastCSharp.testCase.tcpServer.tcpServerGeneric server = new fastCSharp.testCase.tcpServer.tcpServerGeneric())
                {
                    if (server.Start())
                    {
                        using (fastCSharp.testCase.tcpClient.tcpServerGeneric client = new fastCSharp.testCase.tcpClient.tcpServerGeneric())
                        {
                            values[typeof(int)] = 1;
                            if (client.get<int>() != 1) return false;                        values[typeof(string)] = "a";
                            if (client.get<string>() != "a") return false;                        return true;
                        }
                    }
                }
                return false;
            }
        }
    }
      

  5.   

    总是见你回答问题,肯定是个大神。我想问一下,
       [OperationContract]
     public dynamic hello()
            {
                dynamic obj = 3;
                return obj;
            }
    像这样一个wcf方法如何才能公开呢?如果不介意可以给出代码,多谢
      

  6.   

    我以前也想用泛型+WCF 搞了2月 。。别想用这个了。。坑