1、代码改造,变化主要在哪里?或者说把哪部分切到服务端的问题。
2、如果不是长连接,怎样确认当前用户的操作员身份(每次访问不能都传用户名密码吧)
3、全局变量保存在客户端的话,访问服务端都传过去?肯定不行,保存在服务端?怎样把每个客户端的全局变量隔离开?
全局变量传过去的形式可能更符合模块化,但是有些全局变量非常普及,每个功能都传过去?
这些都是设计思想问题,能不能推荐些书籍或资料。
------解决方案--------------------
你可以试试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()