Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net [ServiceContract(Namespace=”的含义是什么;http://Microsoft.ServiceModel.Samples"在官方的WCF教程中?_.net_Wcf_Namespaces_Servicecontract - Fatal编程技术网

.net [ServiceContract(Namespace=”的含义是什么;http://Microsoft.ServiceModel.Samples"在官方的WCF教程中?

.net [ServiceContract(Namespace=”的含义是什么;http://Microsoft.ServiceModel.Samples"在官方的WCF教程中?,.net,wcf,namespaces,servicecontract,.net,Wcf,Namespaces,Servicecontract,我正在努力学习WCF的官方基础教程: 在定义服务合同时,本教程将: 使用系统; 使用System.ServiceModel; 命名空间GettingStartedLib { [ServiceContract(命名空间=”http://Microsoft.ServiceModel.Samples")] 公共接口计算器 { [经营合同] 双加(双n1,双n2); [经营合同] 双减法(双n1,双n2); [经营合同] 双乘(双n1,双n2); [经营合同] 双除法(双n1,双n2); } } 我对

我正在努力学习WCF的官方基础教程:

在定义服务合同时,本教程将:

使用系统;
使用System.ServiceModel;
命名空间GettingStartedLib
{
[ServiceContract(命名空间=”http://Microsoft.ServiceModel.Samples")]
公共接口计算器
{
[经营合同]
双加(双n1,双n2);
[经营合同]
双减法(双n1,双n2);
[经营合同]
双乘(双n1,双n2);
[经营合同]
双除法(双n1,双n2);
}
}
我对
ServiceContract
属性感到非常困惑,尤其是奇怪的名称空间:
http://Microsoft.ServiceModel.Samples

这个名称空间是什么

我试图搜索,但我仍然无法理解这里发生了什么:

默认情况下,Name和Namespace属性分别是协定类型和的名称,ProtectionLevel是ProtectionLevel.None。建议服务契约使用这些属性显式设置其名称、名称空间和保护级别。这样做可以实现两个目标。首先,它构建了一个不直接连接到托管类型信息的契约,使您能够重构托管代码和名称空间,而不会破坏WSDL中表示的契约。其次,显式地要求对契约本身进行一定级别的保护,使运行时能够验证绑定配置是否支持该级别的安全性,从而防止不良配置暴露敏感信息。有关保护级别的详细信息,请参见了解保护级别

这个名称空间是什么?我应该将此属性设置为什么?有我喜欢的绳子吗?任何特定格式的字符串?在决定放什么时,我应该考虑什么

两个示例(
http://Microsoft.ServiceModel.Samples
http://tempuri.org
)建议我输入一个HTTP地址。但是什么是HTTP地址?我是否应该在这个地址下操作一台服务器,从而做一些有意义的事情?这个服务器应该做什么?因为,基于这些例子和
http://tempuri.org
是允许的(尽管不建议使用)。我知道不希望将此命名空间设置为我的WCF服务的地址?(否则,我理解,
http://tempuri.org
甚至无法在示例本地托管WCF服务上运行,因为该服务不是托管在tempuri.org上,而是托管在localhost上`

什么是
http://Microsoft.ServiceModel.Samples
???它甚至是一个有效的HTTP地址吗?如果是,格式是什么?(当我看到
http://something
我希望这是一个IP地址或一个可以通过DNS解析为IP地址的域,但是
Microsoft.ServiceModel.Samples
似乎不是这两个)我甚至试着输入
http://Microsoft.ServiceModel.Samples
在我的浏览器中,但不足为奇的是,我刚刚得到了找不到服务器的错误


此名称空间的含义是什么?放在那里的内容是什么?

该属性实际上是为生成的XML设计的。由于SOAP是基于XML的,XML非常喜欢名称空间,所以SOAP使用它们。一般来说,您不必担心名称空间,因为将使用虚拟名称空间。此属性在属性允许您指定实际的XML名称空间而不是默认名称空间。请注意,此特定属性仅影响SOAP定义本身。服务和数据仍将使用默认名称空间(如果您不希望这样做,则还必须为其指定属性)

XML名称空间的用途是在处理大型XML集时分离元素/属性。对于WCF服务来说,这不是问题,但有些人还是喜欢指定特定于公司的名称空间。这只在面向公共的服务中常见。对于关心的私有服务而言

因此,除非你正在构建一个公共服务,并且你希望名称空间清楚地引用你的公司,否则你不需要名称空间信息。虽然它通常是作为URL提供的,但它不是URL。它只是唯一地标识XML中的元素/属性。(引自答案)

@Theobald Du说“这仅在面向公众的服务中常见”。回答得好。下面的另一个链接可能有助于理解命名空间在面向公众的服务合同中使用时的用途,例如远程访问您的服务的在线公共客户端

  <https://stackoverflow.com/questions/3519014/wcf-versioning-update-attribute-namespaces-and-support-previous-namespaces?rq=1>

此链接表示,当公共客户端需要知道“接口”的哪个版本是新版本时(在服务更新或升级之后),服务契约属性的名称空间是必需的

对于希望使用新更新接口的公共客户端,他们将更改其客户端代理以使用由新“名称空间”标识的新版本的服务。如果他们不希望或需要使用新版本的服务,则不需要更改当前使用的客户端中的任何内容


至少我认为这就是服务契约属性的名称空间值的用途。我在[ServiceContract]属性中不使用名称空间,因为我的用户界面、客户端代理和服务应用程序不是“面向公众的”“,但所有这些都是Winforms桌面应用程序解决方案的一部分,该解决方案使用实体框架和WCF服务(http SOAP)访问远程数据库。

对于后续教程,只需按原样使用这些值即可。@Damien_不相信我所做的,但是