【问题标题】:Need WCF Clarification on client/server operations需要对客户端/服务器操作进行 WCF 说明
【发布时间】:2011-03-08 11:37:18
【问题描述】:

我需要一个 C# NET 服务器应用程序和 C# NET 客户端应用程序。使用服务器的 ASP Web 界面,我需要能够告诉特定的客户端应用程序执行诸如 DownloadFile(string url)、CreateWindowsService() 等功能。

我会在服务器上执行以下操作并将它们公开给客户端应用程序吗?

[ServiceContract]
public interface IFunctions
{
  [OperationContract]
  void DownloadFile(string url);
  void CreateWindowsService();
  void OtherFunctions();
}

根据我的阅读,听起来我在服务器上定义/编码函数,然后客户端应用程序实际上运行这些函数,就好像它被编码到它们中一样?

另一方面,在阅读了绑定的描述之后,听起来我应该在这个项目中使用 Tcp 吗?每个客户端应用程序将位于单独的计算机上。

【问题讨论】:

    标签: c# .net wcf wcf-client


    【解决方案1】:

    不,操作在服务器上运行,操作的结果(如果不是 void)以序列化格式发送到客户端。

    编辑
    当您向客户端添加 WCF 引用时,将使用与服务器协定具有相同签名的方法生成代理。每个代理方法都以序列化的形式对其输入参数进行编码,并将它们发送到服务器。服务器解码请求,在服务器上执行方法并返回答案。客户端将答案解码为常规的 c# 类型,最后从代理方法返回。

    【讨论】:

    • 那么我该如何做我上面描述的事情呢?我需要下载到客户端机器的文件,或者在客户端上创建的服务。我是否必须倒退并让所有客户端成为服务器,并在 WCF 中将实际的“服务器”应用程序功能作为客户端?
    • @Brett, DownloadFile 会将文件内容作为字符串返回给客户端。 CreateWindowsService 是不可能的,因为 Web 应用程序没有创建服务的权限。
    • @Brett,至少对于服务创建部分,您需要创建一个可以完全信任运行的客户端应用程序。它可以使用 WinForms、WPF 或类似工具创建。
    • 抱歉,我想我忘了提到我的服务器和客户端都是控制台应用程序。当你提到我无法做到这一点时,我感到很困惑。
    • @Brett,那么您需要澄清“ASP Web 界面”的含义,嗯,您是否尝试创建一堆客户端来监听配置服务器并且该服务器是通过网络控制的界面?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多