更好的做法是在端点中指定相对地址,例如
<endpoint address="json" ... />
或在UriTemplates:
[WebGet(UriTemplate="json/....")]
这里有什么更好的做法?有关系吗?我知道如果我决定稍后将json更改为js,我将不得不在所有UriTemplates中更改它,但在端点中只有一次,但是如果我有多个端点会怎样。我不能使用相同的地址。
答案 0 :(得分:2)
这是不同的事情。让我们看看每一个。
' EndpointAddress 提供客户端用来与服务端点进行通信的唯一网络地址。端点地址属于服务端点,该端点还包含端点的绑定,合同和行为。 可以使用代码强制指定服务的端点地址,也可以通过配置以声明方式指定服务的端点地址。 在代码中定义端点通常是不实际的,因为已部署服务的绑定和地址通常与开发服务时使用的绑定和地址不同。使用配置定义服务端点更实用。 如果您需要在配置中定义多个端点 - 您可以使用endpoint Name attribute而不是端点地址手动实例化客户端。
' WebGetAttribute 表示服务操作在逻辑上是一个检索操作,并且可以由 REST 编程模型调用。 除了WebGetAttribute之外,OperationContractAttribute属性还应用于服务操作,并将操作与UriTemplate以及HTTP协议Get动词相关联。
以下是关于REST / SOAP endpoints for a WCF service的精彩文章,您可以在其中了解如何为这两种技术配置端点以及如何使用WebGetAttribute。
答案 1 :(得分:0)
我认为这归结为粒度问题。端点定义您要公开的整个合同,URI模板用于定位/操作特定资源。如果您尝试改变消费者的输出格式,WCF管道会为您处理(通过将格式附加到uri,无法调用特定的字符串)。