服务器端和客户端的应用程序:如何将数据从服务器端重定向到客户端?

时间:2012-06-24 15:52:48

标签: c# .net wcf

我应该实现一个为某些客户端提供服务的应用程序,同时与其他远程服务进行通信。换句话说,此应用程序应该是其客户端的服务器,但它也应该是远程服务的客户端。我应该使用NetTcpBinding和回调来进行远程服务的通信以及与客户的通信:

  • 它应该向远程服务发送请求并通过回调接收来自它们的响应;
  • 它应该接收来自客户端的请求,并使用回调向他们发送响应。

这两种类型的通信应该在不同的线程上开发,但需要同时访问(读取和写入)共享数据:例如,当应用程序从客户端接收数据时,它应该“重定向”其中一些数据一些远程服务。

我可以在两个独立的线程中实现应用程序的两个方面,并使用一个或多个单例对象来共享从客户端或远程服务接收的公共数据。我可以使用共享Queue<T>作为单例对象(其中T是从远程服务或客户端接收的数据类型):这样,当我的服务应用程序从客户端接收数据时,它将将收到的数据排入队列;类似地,当它从远程服务接收数据时,将它们放在同一队列中;最后,读取排队的数据:一些数据被发送到远程服务,而其他数据被发送到客户端。

  1. 我想我需要一个Queue<T>共享对象。
  2. 然后我需要一个为客户端实例化ServiceHost的线程。
  3. 另一个线程,用于实例化远程服务ServiceHost的代理。

    • 这是对的吗?或者是更简单,更有效或更多的OOP解决方案?
    • 如何处理队列中数据的重定向?从理论上讲,收到的任何数据(来自远程服务或客户端)都可以立即处理并重定向,但问题是服务器端(从客户端接收数据)可能会使用客户端来重定向某些数据远程服务,但客户端可能忙于从其他远程服务接收数据。
  4. 你能告诉我互联网上有哪些完整的例子吗?

0 个答案:

没有答案