<分区>
Possible Duplicate:
Can C# be piped?
有没有一种方法可以通过网络连接两个程序,这样来自一个程序的所有调用都可以通过管道传输到另一台计算机,然后交给接收程序。我在下面提供了一种我可以执行此操作的方法,但应该有更好的方法,因为这将是大量(而且看似毫无意义)的代码来保持最新。我正在使用的程序是 Ascom,它使用了很多与 COM 的进程间通信。这只是一个例子,还有很多接口(interface)需要保持更新。
class SwitchConverter : ASCOM.Interface.ISwitch
{
private Client client = new Client();
private string query(string query){ return client.query(query); }
private void send(string command) { client.send(command); }
public bool Connected { get { return bool.Parse(query("SWITCHGETCONN")); } set { send("SWITCHSETCONN:" + value); } }
public string Description { get { return query("SWITCHGETDESC"); } }
public string DriverInfo { get { return query("SWITCHGETDRVI"); } }
public string DriverVersion { get { return query("SWITCHGETDRVV"); } }
public bool GetSwitch(short ID) { return bool.Parse(query("SWITCHGETSTAT:" + ID)); }
public string GetSwitchName(short ID) { return query("SWITCHGETNAME:" + ID); }
public short InterfaceVersion { get { return short.Parse(query("SWITCHGETINTV")); } }
public short MaxSwitch { get { return short.Parse(query("SWITCHGETMAXS")); } }
public string Name { get { return query("SWITCHGETNAME"); } }
public void SetSwitch(short ID, bool State) { send("SWITCHSETSTAT:" + ID + "-" + State); }
public void SetSwitchName(short ID, string Name) { send("SWITCHSETNAME:" + ID + "-" + Name); }
public void SetupDialog() { throw new NotImplementedException(); }
}
如您所见,它看起来像这样:
/== Encoder ==\ /== Decoder ==\
/=== Encoder ===\ /=== Decoder ===\
/==== Encoder ====\ /==== Decoder ====\
Client ==<===== Encoder =====>== Pipe ==<===== Decoder =====>== Server
\==== Encoder ====/ \==== Decoder ====/
\=== Encoder ===/ \=== Decoder ===/
\== Encoder ==/ \== Decoder ==/
现在,有没有一种方法可以简单地获取服务器接口(interface)并将其通过管道传输到客户端,然后获取客户端接口(interface)并将其通过管道传输到服务器,如下图所示?这样服务器会调用管道,管道会将其转发给客户端。如果客户端要调用服务器,它只会将其转发给服务器。由于我们正在处理不同的程序,所以我认为这应该非常简单。我正在阅读有关 .NET Remoting 的内容,但这显然已被弃用。我之前问过这个问题,但没有人回答,所以我想我会//确切地//说明我正在尝试做什么。
Client ====(<Server) Pipe (Client>)==== Server
当我说管道时,我指的是通过网络将数据从一个程序发送到另一个程序的连接。此外,我正在寻找示例实现或示例实现的链接。不仅仅是“尝试 x 或 y”。这必须是可能的!
简而言之,我想做的是让客户端和服务器可以像在同一台计算机上一样进行通信,他们正在使用 COM,而无需“中间人”翻译任何内容,只是连接它们。