WCF 中的“端点”是啥?

Posted

技术标签:

【中文标题】WCF 中的“端点”是啥?【英文标题】:What is an "endpoint" in WCF?WCF 中的“端点”是什么? 【发布时间】:2010-10-19 05:09:49 【问题描述】:

我的印象是在配置文件中将端点定义为可能的客户端列表,但这没有意义(从某种意义上说,我认为它说的是什么计算机可以连接到服务)现在我正在收集这更像是一个定义,所以有人可以解释一下终点对我来说是什么吗?我理解定义合同接口然后实施合同的概念,但我在这之间的某个地方迷路了,实际上有一些可用的东西。

在这种情况下,地址是什么?主机地址?

绑定是使用正确的通信方法/协议吗?

合同本质上是“被共享的对象”(是的,我知道这在技术上很不正确,但在这里与我合作)

【问题讨论】:

【参考方案1】:

终结点是服务公开的内容,在 WCF 术语中,它由三部分组成:

地址 绑定 合同

地址是可以到达端点的 URL。

绑定规定了应用的转换以及发送到地址处合同实施的消息的形状(在某种程度上)。

合同规定了在该地址公开的操作。这正是它所说的,它是一个合同,表明允许哪些调用。

大多数时候,人们将其记为 A B C。

注意事项:

绑定通常是通道与应用行为的组合;通道是通道堆栈上的元素,它们在到达服务实现之前修改消息并执行操作。

虽然在 .NET 中通常由接口表示,但并不要求以这种方式表示合同。一些以设计为先的倡导者会首先为将要发送的请求和响应的消息定义架构,这就是 WCF 将 .NET Contract 接口转换成的内容。

【讨论】:

这很有帮助...如果我想编写双向通信服务,我将如何构建它?假设我有一个带有应用程序 A 和 B 的系统,如果 A 发送“ping”,B 等待 1 秒并发送回 pong,然后提示 A 等待 1 秒并再次发送 ping。 @firoso:这是三向握手,在这种情况下,我将 B 定义为服务器。 A 将调用 B 上的 Ping 方法。您将为 Ping 操作定义一个回调合约,该合约将公开 Pong。然后,当在 A 上调用 Pong 时,它会在 B 上再次调用 Ping。 这很有道理,但我想我需要一些时间来吸收更多信息...谢谢您的快速回复。【参考方案2】:

我将在这里引用 Juval Lowy 的Programming WCF Services

每个服务都与一个地址相关联,该地址定义了 service 是一个绑定,它定义了如何与 服务,以及定义服务功能的合同。这 管理服务的三驾马车很容易记住,因为 ABC 服务。

WCF 以端点的形式形式化了这种关系。这 端点是地址、合约、绑定的融合体。

每个端点都必须包含所有三个元素,并且主机公开 端点。

【讨论】:

【参考方案3】:

WCF 中的端点 WCF 服务是一个公开端点集合的程序。每个端点都是与世界交流的门户。 端点由三个部分组成。 1) 地址 : 定义服务的位置 前 - http://www.test.com:8001/MyService 2) 绑定 : 指定客户端如何与端点通信的绑定。 ex - BasicHttpBinding、WSHttpBinding、WSDualHttpBinding 等 3) 合同 : 识别可用操作的合同

端点将在所创建服务的 web.config 文件中提及。

【讨论】:

【参考方案4】:

服务端点具有地址、绑定和合同。 端点的地址是端点所在的网络地址。 EndpointAddress 类表示 WCF 端点地址。 Endpoint 的 Binding 指定 Endpoint 如何与世界通信,包括传输协议(例如 TCP、HTTP)、编码(例如文本、二进制)和安全要求(例如 SSL、SOAP 消息安全)。 Binding 类表示 WCF 绑定。 Endpoint 的 Contract 指定 Endpoint 通信的内容,本质上是一组消息,这些消息组织在具有基本消息交换模式 (MEP) 的操作中,例如单向、双工和请求/回复。 ContractDescription 类表示 WCF 合同。

【讨论】:

【参考方案5】:

见here: 服务端点指定用于通信的地址、绑定和合同。

【讨论】:

【参考方案6】:

服务端点具有地址、绑定和合同。端点的地址是端点所在的网络地址。 EndpointAddress 类表示 WCF 端点地址。 Endpoint 的 Binding 指定 Endpoint 如何与世界通信,包括传输协议(例如 TCP、HTTP)、编码(例如文本、二进制)和安全要求(例如 SSL、SOAP 消息安全)。 Binding 类表示 WCF 绑定。 Endpoint 的 Contract 指定 Endpoint 通信的内容,本质上是一组消息,这些消息组织在具有基本消息交换模式 (MEP) 的操作中,例如单向、双工和请求/回复。 ContractDescription 类表示 WCF 合同。

【讨论】:

【参考方案7】:

Web 服务端点可以隐藏部分或全部这些。并且根据request可以在内部决定Request的处理。

SRJTester 工具(在 Github 上提供)非常适合在发出服务请求时指定端点、操作、协议等。

【讨论】:

【参考方案8】:

Endpoint 用于配置客户端应用程序和 WCF 服务之间的通信通道

终点样本

<endpoint address="http://localhost:3901/Service1.svc"
           binding="basicHttpBinding"  
          contract="ServiceReference.IService1" bindingConfiguration="BasicHttpBinding_IService1"  
              name="BasicHttpBinding_IService1" /> 

【讨论】:

以上是关于WCF 中的“端点”是啥?的主要内容,如果未能解决你的问题,请参考以下文章

WCF 服务端点无法从本地访问

Kubernetes 中的“端点”是啥?

Flask 中的“端点”是啥?

asp .net 核心 wcf 端点

Silverlight 应用程序的 Azure WorkerRole 中的 WCF 服务

如何获取 WCF 远程端点的 IP 地址?