Wcf 我可以指定一份合同吗';app.config中的名称和命名空间?

Wcf 我可以指定一份合同吗';app.config中的名称和命名空间?,wcf,Wcf,我对WCF和SOA还很陌生,所以如果问题不好,我很抱歉 在我看来,如果我可以在app.config中指定契约的名称和命名空间,我就可以更改客户端契约在运行时而不是编译时使用的服务。由于无法在app.config中指定名称和命名空间,我的客户端合约仅限于使用具有相同名称和命名空间的合约连接到服务。是这样吗 那么,有没有办法在app.config中为给定的契约选择名称和命名空间呢?如果没有,为什么不呢?你所要求的没有意义。名称和命名空间标识合同。如果不改变客户,合同就不能改变。这就是为什么服务版本控

我对WCF和SOA还很陌生,所以如果问题不好,我很抱歉

在我看来,如果我可以在app.config中指定契约的名称和命名空间,我就可以更改客户端契约在运行时而不是编译时使用的服务。由于无法在app.config中指定名称和命名空间,我的客户端合约仅限于使用具有相同名称和命名空间的合约连接到服务。是这样吗


那么,有没有办法在app.config中为给定的契约选择名称和命名空间呢?如果没有,为什么不呢?

你所要求的没有意义。名称和命名空间标识合同。如果不改变客户,合同就不能改变。这就是为什么服务版本控制通常通过添加新契约(使用新名称/命名空间组合)而不是通过更改现有契约来执行

您应该将合同视为客户和服务之间牢不可破的协议——您将始终提供这套操作


另一方面,如果您决定希望您的客户使用不同的合同实现,您可以更改客户机引用的端点。您还可以更改用于实现的绑定。但是你必须始终保持同样的合同,除非你想开始对你的客户撒谎。

你所要求的没有意义。名称和命名空间标识合同。如果不改变客户,合同就不能改变。这就是为什么服务版本控制通常通过添加新契约(使用新名称/命名空间组合)而不是通过更改现有契约来执行

您应该将合同视为客户和服务之间牢不可破的协议——您将始终提供这套操作


另一方面,如果您决定希望您的客户使用不同的合同实现,您可以更改客户机引用的端点。您还可以更改用于实现的绑定。但你必须始终保持相同的合同,除非你想开始对客户撒谎。

嗨,约翰,谢谢你的快速回复!假设我有一个客户机需要一个或两个来自服务的操作。我仅使用这些操作创建服务契约的客户端版本。我使用服务合同的名称空间和名称。如果我想使用具有不同名称和/或命名空间的服务,但定义的操作与我需要的操作具有相同的签名,那么我需要在我的客户机中创建另一个契约,该契约与除名称和命名空间之外的第一个契约相匹配。这对服务合同来说是有意义的,但对客户合同来说是有意义的吗?@Sam:你不会这样做的。如果客户机只需要一个更大的合同中的几个操作,那么它就不应该使用其余的操作。如果您有许多客户机只需要这些操作,那么您可能希望创建自己的服务,该服务只提供这些操作的契约。然后,您的服务可以调用“真正的”服务来实现它们。顺便说一句,你所说的“客户合同”是什么意思?我试着按照下面的例子:。所谓客户合同,我指的是仅在app.config的
部分使用的合同,而不是在
中使用的合同。我认为我的困惑源于这样一种想法:单个操作本身就像细粒度服务,而它们不是(对吗?)。@Sam:不,这些操作是合同的一部分。它们本身并不是一个契约。不要把有单独的
部分这一事实当作玩类似游戏的邀请。@Sam:你看到了吗:“代码和场景不一定代表最佳实践”?除非你有特殊的需要,否则不要这样做。如果这是您在Google搜索中遇到的问题,那么我建议您忽略它,直到您有更多的SOA经验并能够判断这是否是一个好主意。嗨,John,谢谢您的快速回复!假设我有一个客户机需要一个或两个来自服务的操作。我仅使用这些操作创建服务契约的客户端版本。我使用服务合同的名称空间和名称。如果我想使用具有不同名称和/或命名空间的服务,但定义的操作与我需要的操作具有相同的签名,那么我需要在我的客户机中创建另一个契约,该契约与除名称和命名空间之外的第一个契约相匹配。这对服务合同来说是有意义的,但对客户合同来说是有意义的吗?@Sam:你不会这样做的。如果客户机只需要一个更大的合同中的几个操作,那么它就不应该使用其余的操作。如果您有许多客户机只需要这些操作,那么您可能希望创建自己的服务,该服务只提供这些操作的契约。然后,您的服务可以调用“真正的”服务来实现它们。顺便说一句,你所说的“客户合同”是什么意思?我试着按照下面的例子:。所谓客户合同,我指的是仅在app.config的
部分使用的合同,而不是在
中使用的合同。我认为我的困惑源于这样一种想法:单个操作本身就像细粒度服务,而它们不是(对吗?)。@Sam:不,这些操作是合同的一部分。它们本身并不是一个契约。不要把有单独的
部分这一事实当作玩类似游戏的邀请。@Sam:你看到了吗:“代码和场景不一定代表最佳实践”?除非你有特殊的需要,否则不要这样做。如果这是您在Google搜索中遇到的问题,那么我建议您忽略它,直到您有更多的SOA经验并能够判断这是否是一个好主意。