DLL及其更新(c#)(客户端/服务器)

DLL及其更新(c#)(客户端/服务器),c#,dll,client,C#,Dll,Client,我是一名软件工程师,我在c#development工作 我正在使用的软件具有服务器和客户端布局。服务器更像是一个数据库层,只有它可以直接“访问”数据库。客户机只是根据请求以字符串的形式发送请求和接收数据,而不是数据集或数据表。数据库层通过dll文件与数据库交互 例如: 客户端请求执行操作144。 服务器接收操作编号,并将其发送到dll主例程: Client: string command = "144"; buffer = asci.GetBytes(command);

我是一名软件工程师,我在c#development工作

我正在使用的软件具有服务器和客户端布局。服务器更像是一个数据库层,只有它可以直接“访问”数据库。客户机只是根据请求以字符串的形式发送请求和接收数据,而不是数据集或数据表。数据库层通过dll文件与数据库交互

例如:

客户端请求执行操作144。 服务器接收操作编号,并将其发送到dll主例程:

Client:
    string command = "144";
    buffer = asci.GetBytes(command);
    socket.send(buffer);

Server:
    socket.receive(buffer);
    str = asci.GetString(buffer);
    op = Int32.Parse(str);
    Dll.MainRoutine(op);

Dll main routine:
    switch (op) 
    {
       case 0: blah blah blah ; break;
       case ..........................
       case 144: i++ ; break ;
       default : ;
    }
假设软件正在实际服务器上运行。我现在只想对客户端和dll文件进行更改(添加功能)。但是我不想再次编译服务器。如果我在客户端添加一个名为200的新命令,并向dll主例程添加一个case:case200,它会工作吗?或者我也需要重新编译服务器

Client:
    string command = "200";
    buffer = asci.GetBytes(command);
    socket.send(buffer);

Server:
    socket.receive(buffer);
    str = asci.GetString(buffer);
    op = Int32.Parse(str);
    Dll.MainRoutine(op);

Dll main routine:
    switch (op) 
    {
       case 0: blah blah blah ; break;
       case ..........................
       case 144: i++ ; break ;
       case 200: i+=10 ; break ;
       default : ;
    }
我想说的是,我只想通过更新dll和客户端来添加功能。服务器必须始终运行。这可以通过DLL实现,还是有其他方法


谢谢…

如果服务器只是将命令号传递给DLL,则无需重新编译服务器。只需重新编译DLL并将其部署到服务器上就完全足够了。

顺便说一句——在WCF和webservices的今天,您为什么选择以这种方式实现它?客户端和服务器将位于同一办公室。但是在不同的机器上。员工无权访问服务器,只能访问客户端。我需要控制访问服务器的次数,以及谁访问服务器。我将研究WFC,至于webservice,我甚至怀疑这是否可能,因为该软件将为会计师而构建,这涉及到大量往回和往回的数据。因此,就效率和速度而言,我不确定一个Web服务是否会降低它。但我可能错了。我仍然没有建造任何东西。我只是在设计阶段。你对效率和速度的看法是错误的。WCF是一种最新的技术,应该使用它来代替一种自主开发的协议。我看到两票赞成WFC,我会研究它。非常感谢。非常感谢。