2010-10-01 55 views
1

它是更好的做法,在例如在端点或UriTemplate中指定相对地址是否更好?

<endpoint address="json" ... /> 

或UriTemplates端点指定相对地址:

[WebGet(UriTemplate="json/....")] 

什么是更好的做法吗?有关系吗?我知道如果我决定稍后将json更改为js,我将不得不在所有UriTemplates中更改它,但只有一次在端点中,但如果我有多个端点会怎么样。我不能使用相同的地址。

回答

2

这是不同的事情。让我们看看它的每一个。

EndpointAddress提供唯一的网络地址一个客户端使用与服务端点通信”。端点地址属于服务端点,该服务端点还包含端点的绑定,契约和行为。 服务的端点地址既可以通过代码强制指定,也可以通过配置声明指定。 在代码中定义端点通常是不切实际的,因为部署服务的绑定和地址通常与服务开发时使用的绑定和地址不同。使用配置来定义服务端点更实用。 在您何时需要在您的配置中定义多个端点的情况下 - 您可以使用endpoint Name attribute而不是端点地址手动实例化客户端。

WebGetAttribute指示服务操作在逻辑上是一个检索操作,并且它可以由REST编程模型被称为”。 WebGetAttribute属性应用于除OperationContractAttribute之外的服务操作,并将操作与UriTemplate以及HTTP协议Get动词相关联。


这里是关于REST/SOAP endpoints for a WCF service伟大的职位,你可以看到如何配置端点两种技术以及如何使用WebGetAttribute。

0

我认为这归结为粒度问题。端点定义您要公开的整个合同,并使用URI模板来定位/操作特定资源。如果您试图改变消费者的输出格式,WCF管道会为您处理此问题(通过将格式附加到uri,无法调出特定的字符串)。