WCF客户端和服务器

2023-11-21

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

因此,听起来服务器和客户端都需要内置 WCF 服务器和客户端。

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

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

背景:

  • 我计划在我们网络中的数百台计算机上安装 Windows 服务WCF服务和内置的 WCF 客户端。
  • 我将在一台带有 WCF 服务和内置客户端的服务器上安装一个 Windows 服务。
  • 我会有一个Windows 窗体应用
  • 我将有一个数据库

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

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

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


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

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

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

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


我有点困惑,但我会尽力澄清。

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

  • Address
  • Binding
  • Contract

这些本质上是 WCF 的“ABC”。这些作品的创作描绘了这样一幅画面:

WCF Diagram

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

  • Host
  • Service
  • Client

主机提供客户端将要提供的服务consume因此这些服务方法执行所需的任务。示例表示:

Endpoints

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

Now Client-n正在本地消费服务,因此以谈论(TCP等)为例。

最简单的记住方法是:无论有多少个客户端需要这些方法来执行一项任务,都可以使用一项服务。您可以使用创建非常复杂的模型面向服务的架构 (SOA).

所有 WCF 都是一种将应用程序连接到主机或 您可能无法访问的集中位置。

The client through service to host, to access database.

正如您在上图中看到的,客户端通过Service给主机。它执行一系列任务。 WCF 将讨论一系列协议。希望这能让您更好地理解 WCF 的结构。

有很多教程甚至帖子可以帮助您入门。一些优秀的书籍,例如《WCF 一步一步》.


本质上,您正在寻找异步全双工连接或同步全双工服务。如上所述,您的任务本质上是服务的重点。

问题:这如何运作最好?

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

这些障碍可能是:

  1. 服务器负载
  2. 通讯路径
  3. Security
  4. 多个客户端更改 UI/相同数据
  5. Etc.

这个清单还在继续。我真的会查找有关 WCF 的教程或几本书。以下是一些:

  • WCF 一步一步

  • WCF 多层开发

  • WCF服务开发

他们将帮助您利用服务结构来实现您的预​​期目标。


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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WCF客户端和服务器 的相关文章

  • VB.NET 相当于 C# 属性简写吗?

    是否有与 C 等效的 VB NET public string FirstName get set 我知道你能做到 Public Property name As String Get Return name ToString End Ge
  • 使用Physics.Raycast 和Physics2D.Raycast 检测对象上的点击

    我的场景中有一个空的游戏对象 带有 2D 组件盒碰撞器 我将脚本附加到该游戏对象 void OnMouseDown Debug Log clic 但是当我点击我的游戏对象时 没有任何效果 你有什么想法 如何检测我的盒子碰撞器上的点击 使用光
  • 为 Visual Studio 2013 编译 Tesseract

    我正在尝试使用tesseract在 Visual Studio 2013 中 我在链接器 gt 输入 不是 libtesseract302 static lib 中使用 libtesseract302 lib 一切都正常 并且已编译并运行
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上
  • 单击 form2 上的按钮触发 form 1 中的方法

    我对 Windows 窗体很陌生 我想知道是否可以通过单击表单 2 中的按钮来触发表单 1 中的方法 我的表格 1 有一个组合框 我的 Form 2 有一个 保存 按钮 我想要实现的是 当用户单击表单 2 中的 保存 时 我需要检查表单 1
  • 未经许可更改内存值

    我有一个二维数组 当我第一次打印数组的数据时 日期打印正确 但其他时候 array last i 的数据从 i 0 到 last 1 显然是一个逻辑错误 但我不明白原因 因为我复制并粘贴了 for 语句 那么 C 更改数据吗 I use g
  • 在一个字节中存储 4 个不同的值

    我有一个任务要做 但我不知道从哪里开始 我不期待也绝对不想要代码中的答案 我想要一些关于该怎么做的指导 因为我感到有点失落 将变量打包和解包到一个字节中 您需要在一个字节中存储 4 个不同的值 这些值为 NAME RANGE BITS en
  • PlaySound 可在 Visual Studio 中运行,但不能在独立 exe 中运行

    我正在尝试使用 Visual Studio 在 C 中播放 wav 文件 我将文件 my wav 放入项目目录中并使用代码 PlaySound TEXT my wav NULL SND FILENAME SND SYNC 我按下播放按钮 或
  • 如何使用 watin 中的 FileUploadDialogHandler 访问文件上传对话框

    我正在使用 IE8 和 watin 并尝试通过我的网页测试上传文件 我不能简单地使用 set 方法设置上传文件 例如 ie FileUpload Find ById someId Set C Desktop image jpg 因为上传文本
  • 上下文敏感与歧义

    我对上下文敏感性和歧义如何相互影响感到困惑 我认为正确的是 歧义 歧义语法会导致使用左推导或右推导构建多个解析树 所有可能的语法都是二义性的语言是二义性语言 例如 C 是一种不明确的语言 因为 x y 总是可以表示两个不同的事物 如下所述
  • 等待线程完成

    private void button1 Click object sender EventArgs e for int i 0 i lt 15 i Thread nova new Thread Method nova Start list
  • .NET中的LinkedList是循环链表吗?

    我需要一个循环链表 所以我想知道是否LinkedList是循环链表吗 每当您想要移动列表中的 下一个 块时 以循环方式使用它的快速解决方案 current current Next current List First 电流在哪里Linke
  • gcc 的配置选项如何确定默认枚举大小(短或非短)?

    我尝试了一些 gcc 编译器来查看默认枚举大小是否很短 至少一个字节 强制使用 fshort enums 或无短 至少 4 个字节 强制使用 fno short enums user host echo Static assert 4 si
  • 用于 C# 的 TripleDES IV?

    所以当我说这样的话 TripleDES tripledes TripleDES Create Rfc2898DeriveBytes pdb new Rfc2898DeriveBytes password plain tripledes Ke
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N
  • 使用 GROUP 和 SUM 的 LINQ 查询

    请帮助我了解如何使用带有 GROUP 和 SUM 的 LINQ 进行查询 Query the database IEnumerable
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个
  • 如何使用 Word Automation 获取页面范围

    如何使用办公自动化找到 Microsoft Word 中第 n 页的范围 似乎没有 getPageRange n 函数 并且不清楚它们是如何划分的 这就是您从 VBA 执行此操作的方法 转换为 Matlab COM 调用应该相当简单 Pub

随机推荐