c# - WCF 客户端和服务器

标签 c# wcf

我需要多个与 WCF 服务对话的客户端。 WCF 服务还必须能够连接到任何一个客户端。

所以 - 听起来服务器和客户端都需要同时内置 WCF 服务器和客户端。

这是正确的还是有什么方法可以做到这一点?

我在看 NetPeerTcpBinding,但那已经过时了。公平地说,我也不确定这是否是一个有效的解决方案。

背景:

  • 我计划在我们网络中的数百台机器上安装 Windows 服务 WCF服务和内置的 WCF 客户端。
  • 我将在一台服务器上安装一个 Windows 服务,其中包含一个 WCF 服务和一个内置的客户端。
  • 我会有一个Windows Forms应用
  • 我要有一个数据库

网络上的客户端将连接到服务器上运行的服务,以便在数据库中插入一些信息。

用户将使用 Windows 窗体应用程序连接到服务器上的 Windows 服务,该 Windows 服务将连接到工厂车间的相关客户端(以允许远程浏览文件和文件夹)。

因此我相信地板上的机器和服务器都需要内置的 WCF 客户端和服务。

最佳答案

人们推荐 wsHttpDualBinding 的原因是因为它本身是一种安全且可互操作的绑定(bind),旨在与允许服务和客户端发送和接收消息的双工服务契约(Contract)一起使用。

p>

提到的“双工”通信类型有多种变体。 Half 和 Full 是最简单的。

  • 半双工:就像对讲机一样工作,一个人可以在任何给定时间讲话。
  • 全双工:就像电话一样,任何人都可以在任何给定时间通话。

每个都会介绍一个好处和一个问题,它们还提供了根据您的需求更有效地建立这种沟通的方法。


我有点困惑,但我会尝试澄清。

此处可能会出现各种方法,Windows Communication Foundation (WCF) 服务需要以下内容:

  • 地址
  • 绑定(bind)
  • 契约(Contract)

这些基本上是 WCF 的“ABC”。那些的创作描绘了这样一幅图画:

WCF Diagram

如您所见,该服务将包含:

  • 主持人
  • 服务
  • 客户

主机包含客户端将使用 的服务,以便这些服务方法执行所需的任务。示例表示:

Endpoints

如您所见,Client-1 通过互联网(HTTP、HTTPS 等)然后访问主机,主机将让服务执行这些任务。

现在 Client-n 正在本地使用服务,因此它正在以(TCP 等)方式进行通信。

最容易记住的方法:无论有多少客户端需要这些方法来执行任务,都可以使用一项服务。您可以使用 service-oriented architecture 创建非常复杂的模型(SOA)。

All WCF is, is a mean to connect your application to a host or centralized location you may not have access to.

The client through service to host, to access database.

如您在上图中所见,客户端通过服务与主机进行通信。其中执行一系列任务。 WCF 将讨论一系列协议(protocol)。希望这能让您更好地理解 WCF 的结构。

有很多教程甚至可以帮助您入门。一些优秀的书籍,例如“WCF Step by Step”


本质上,您正在寻找异步全双工连接或同步全双工服务。正如上面所说,你的任务本质上是一个服务的点。

问题:如何做到最好?

这将归结为您的设计。您需要遵守一些限制和结构才能真正针对您的目标进行优化。

这样的障碍可能是:

  1. 服务器负载
  2. 沟通路径
  3. 安全
  4. 多个客户端更改 UI/相同数据

列表还在继续。我真的会查找有关 WCF 的教程或几本书。这里有一些:

他们将帮助您使用服务结构来实现您期望的目标。


记住使用 WCF 取得最大成功的“ABC”。

关于c# - WCF 客户端和服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15178434/

相关文章:

wcf - Silverlight:在非标准 SSL 端口上访问 SSL WCF 服务

.net - "Could not establish trust relationship for the SSL/TLS secure channel"具有有效证书

wcf - 未调用自定义 UserNamePasswordValidator

c# - 我如何在 c# 或 vb.net 中向图像添加文本

c# - EntityType 'DbGeography' 没有定义键

C#winform绑定(bind)源格式输出字符串到货币,不带$符号

c# - MaxConcurrentCalls,如何告诉客户端其调用已排队? BasicHttp绑定(bind)

javascript - 使用 VS 2013 的自定义自动格式化程序 "Edit->Format Document"

c# - 调用 timer.Stop() 后执行的 System.Timers.Timer Elapsed 事件

c# - 您如何将 WCF WSDL 和 XSD 共享给尚未访问该服务的客户端?