当前位置: 代码迷 >> .NET分析设计 >> CS方式转换为WCF模式,有三个难点哦
  详细解决方案

CS方式转换为WCF模式,有三个难点哦

热度:231   发布时间:2016-05-01 22:33:43.0
CS模式转换为WCF模式,有三个难点哦
1、代码改造,变化主要在哪里?或者说把哪部分切到服务端的问题。
2、如果不是长连接,怎样确认当前用户的操作员身份(每次访问不能都传用户名密码吧)
3、全局变量保存在客户端的话,访问服务端都传过去?肯定不行,保存在服务端?怎样把每个客户端的全局变量隔离开?
    全局变量传过去的形式可能更符合模块化,但是有些全局变量非常普及,每个功能都传过去?

这些都是设计思想问题,能不能推荐些书籍或资料。
------解决方案--------------------
引用:
感谢楼上
问下SessionID的处理需要自己用代码处理吗(每个调用把SessionID当作其中一个参数传递)?
还是系统已经自动实现了,而不用关心?
你可以试试fastCSharp的TCP调用。
1.提供TCP客户端验证函数支持,客户端必须成功调用指定函数才能调用其他函数。这个函数的调用对于客户端来说是透明的,创建客户端的时候会自动调用该函数。
2.对于TCP长连接模式或者HTTP模式,提供客户端标识参数,不需要客户端手动传参处理。
using System;
using System.IO;
using System.Collections.Generic;

namespace fastCSharp.testCase
{
    [fastCSharp.setup.cSharp.tcpServer(IsIdentityCommand = true, Host = "127.0.0.1", Port = 12345)]
    internal partial class tcpSession
    {
        [fastCSharp.setup.cSharp.tcpServer(IsVerifyMethod = true, InputParameterMaxLength = 1 << 10)]
        private unsafe bool login(fastCSharp.setup.cSharp.tcpBase.client client, string user, string password)
        {
            switch (user)
            {
                case "userA":
                    if (password == "A")
                    {
                        client.UserInfo = user;
                        return true;
                    }
                    break;
                case "userB":
                    if (password == "B")
                    {
                        client.UserInfo = user;
                        return true;
                    }
                    break;
            }
            return false;
        }
        [fastCSharp.setup.cSharp.tcpServer]
        private unsafe string myName(fastCSharp.setup.cSharp.tcpBase.client client)
        {
            return (string)client.UserInfo;
        }

        private class veify : fastCSharp.setup.cSharp.tcpBase.ITcpClientVerifyMethod<fastCSharp.testCase.tcpClient.tcpSession>
        {
            private string user;
            private string password;
            public veify(string user, string password)
            {
                this.user = user;
                this.password = password;
            }
            public bool Verify(fastCSharp.testCase.tcpClient.tcpSession client)
            {
                return client.login(user, password);
            }
        }
        [fastCSharp.setup.testCase]
        private static bool testCase()
  相关解决方案