C# .NET远程处理约定

C# .NET远程处理约定,c#,.net,winforms,network-programming,remoting,C#,.net,Winforms,Network Programming,Remoting,我有一个服务器端代码,使用.NET远程处理与客户端建立连接。通常情况下,我理解使用带有在客户端和服务器之间传递的对象的接口是一种规范,也是一种更安全的选择,但是对于我正在建立的简单通信,我认为没有必要费劲定义必要的类和接口 对于下面的代码,因为我只向客户机返回一个字符串,所以我觉得没有必要,但有些人可能会说不需要,所以我在这里发布我的问题。我应该遵循常规还是坚持我现在的做法?下面显示的代码是否也是建立远程服务器的正确方法 (不要问我为什么使用远程处理而不是WCF。我的老板特别要求远程处理,我不知

我有一个服务器端代码,使用.NET远程处理与客户端建立连接。通常情况下,我理解使用带有在客户端和服务器之间传递的对象的接口是一种规范,也是一种更安全的选择,但是对于我正在建立的简单通信,我认为没有必要费劲定义必要的类和接口

对于下面的代码,因为我只向客户机返回一个字符串,所以我觉得没有必要,但有些人可能会说不需要,所以我在这里发布我的问题。我应该遵循常规还是坚持我现在的做法?下面显示的代码是否也是建立远程服务器的正确方法

(不要问我为什么使用远程处理而不是WCF。我的老板特别要求远程处理,我不知道为什么。)


不使用接口的问题是,您需要在客户机上包含服务器代码。这不是像这样简单的问题,但是如果服务器接口变得更复杂或者涉及到服务器实现,这可能是一个真正的问题

这也成了部署问题。每当您在服务器实现中更改某些内容时,都必须将新的服务器实现复制到所有客户端。如果您使用的是接口,那么您唯一需要更新客户端的时间就是更改接口。服务器实现更改不会影响客户端。至少,它们不会影响客户端与服务器交互的方式

这也会导致安全问题。如果服务器代码中有专有信息,则该代码将在每个客户端上公开。但是如果使用接口,则不需要包含服务器代码

避免为服务器定义接口可能看起来更容易。但从长远来看,使用接口更安全、更易于修改和部署——特别是当有多个客户端时


总而言之,你应该问问你的老板为什么要求远程办公。但是,在开始之前,请仔细阅读WCF和远程处理之间的区别。WCF显然是一种更强大的技术。

我想,这么简单也没关系,但你有一个卑鄙的老板。考虑未来的变化,还有什么机会来扩展这一点。那你最好从一开始就做好。
class HttpServer
{

    [STAThread]
    public static Boolean startService()
    {
        HttpChannel channel = new HttpChannel(80);

        ChannelServices.RegisterChannel(channel);
        Type ddcServerType = Type.GetType("DDCEngine.DDCServer");
        RemotingConfiguration.RegisterWellKnownServiceType(ddcServerType, "DDCServer", WellKnownObjectMode.Singleton);
        return true;
    }
}

public class DDCServer : MarshalByRefObject
{
    public string Hello()
    {
        string r = "hello";
        return r;
    }

    [Description("Sets a new IO Point List in the DDC.")]
    public string SetIOPointList(string host, DDCService.pointInformation[] pointList)
    {

        string result;

        DDCService.LGeDDCClient ddc = new DDCService.LGeDDCClient("LGeDDC", host);

        try
        {
            result = ddc.SetIOPoint(pointList);
        }
        catch (Exception ex)
        {
            result = ex.ToString();
        }
        return result;
    }