【问题标题】:Passing data to server for computation [closed]将数据传递到服务器进行计算[关闭]
【发布时间】:2014-03-01 23:41:12
【问题描述】:

如何在 c# 中创建一个在桌面上运行但在某些情况下能够将变量和对象传递给服务器的程序。然后服务器将处理变量,然后将结果返回到桌面上的程序以进行进一步处理。

例如,我想将双打 3.5 和 4.5 传递给服务器。然后服务器将添加 3.5 和 4.5 以将 8 返回到桌面上的程序。然后 8 将被桌面上的程序进一步使用。

我必须编写两个单独的程序吗?一个在服务器上,一个在桌面上。如果是这样,我该如何链接它们。即如何将数据从桌面上的程序传递到服务器上的程序,反之亦然?

非常感谢您的帮助。

【问题讨论】:

  • .NET 对此有单独的技术。它被称为WCF
  • 你可以使用 WCF 或 WebAPI

标签: c# sockets communication


【解决方案1】:

是的,您确实需要两个程序。如前所述,WCF 和 ASP.NET WEB API 是最常用的两种 Microsoft 技术,尽管您可以使用任何您想要的技术。基本上,您需要在 WCF 或 ASP.NET 中构建服务器端应用程序,然后将服务引用添加到客户端应用程序。创建该服务引用时,您将指定服务的 URL,Visual Studio 将构建应用程序之间通信所需的类。完成后,您可以像使用任何普通方法一样调用服务器应用程序。

【讨论】:

    【解决方案2】:

    您不需要两个不同的程序。虽然这样更容易,但您可以坚持使用以不同模式运行的模式。

    WCFWebApiServiceStackMessageBus 可以用于此。

    但是你正在实现一次难以实现的跳跃。

    您有一个同步的本地应用程序(所有内容都在一个应用程序中运行),并且您想要访问一个异步远程应用程序(所有内容都并行化并在不同的机器上执行)。 WCF 等为您提供了一个简单的开始,但我建议您采取更小的步骤,因为它并不能缓解所有问题。

    首先保持您的同步应用程序并使其异步。所以它在多线程环境中向自己发出一些消息(比如两个双精度数)并等待它而不阻塞。

    这引入了它自己的一系列问题(线程、等待、锁定)。

    完成后,您应该将功能外部化到单独的应用程序或以“服务器”模式运行的同一应用程序,从而生成异步本地应用程序。 在这一步中,您跨越了应用程序边界,同时已经实现了线程化并且仍然是本地的。

    完成之后,开始考虑将服务器应用程序放在远程机器上并处理这些问题(通信、资源可用性、协议等)

    每一步都很复杂。通过一次完成所有操作,您将需要同时处理多线程、阻塞应用程序、WCF 的复杂性、连接处理(超时、代理、不可用资源、连接中断等)和外包处理。

    【讨论】:

      猜你喜欢
      • 2014-12-12
      • 2011-10-29
      • 2020-09-01
      • 2020-08-15
      • 2013-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多