Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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
为什么XML中的命名空间指定http:?_Xml_Wcf - Fatal编程技术网

为什么XML中的命名空间指定http:?

为什么XML中的命名空间指定http:?,xml,wcf,Xml,Wcf,请帮我整理一下。我正在学习WCF,并看到一个用Namespace=参数化的ServiceContractAttribute“http://www.mywebsite.com/andsoforth" 我在另一个问题中读到,名称空间是唯一的不透明键。它们通常是URL,而不是使用GUID,因为合法的URL保证是唯一的 为什么用名称空间URL指定“http:”方案?为什么不仅仅是URL 感谢您澄清这一点。您是正确的,名称空间名称(或URI)只是定义名称空间的唯一标识符。例如,它实际上并不包含XHTML的

请帮我整理一下。我正在学习WCF,并看到一个用Namespace=参数化的ServiceContractAttribute“http://www.mywebsite.com/andsoforth"

我在另一个问题中读到,名称空间是唯一的不透明键。它们通常是URL,而不是使用GUID,因为合法的URL保证是唯一的

为什么用名称空间URL指定“http:”方案?为什么不仅仅是URL


感谢您澄清这一点。

您是正确的,名称空间名称(或URI)只是定义名称空间的唯一标识符。例如,它实际上并不包含XHTML的模式,而是一个人类可读的文档。标识符只是一个URI

协议是URI定义的一部分。例如,如果我创建一个文件夹并将其命名为“directory.com”,我可以file://directory.com/file 在我的本地机器上完全解析。但是,它将是一个与托管在完全不同的资源。计算机需要协议才能知道我想要哪一个

换句话说,我们选择URI来唯一地定义名称空间。协议是URI中分离资源的重要部分


理论上,两个名称空间和两个单独的协议表示两种不同的东西是有效的。像许多事情一样,这可能是一个坏主意,因为它会导致混乱,但这是可能的。

指定协议,实际上总是
http://
,作为名称空间URI的一部分,这只是一个约定,而且是一个坏约定。(查看以查看有关XML名称空间在各种帐户上如何被严重破坏的讨论,包括使用URL(而不是URN)作为URI的(可修复的)约定。关键XML人员自己也承认XML名称空间被严重破坏,但你能做些什么?他们会留下来。)

为什么HTTP URL是如此糟糕的选择?协议冒号双斜杠很多字母斜杠目录更多斜杠和目录现在是最后一个斜杠还是不是?因为一个尾随的斜杠确实会产生影响

那应该是什么样子?嗯,DNS或Java名称空间。在不让人困惑的情况下完成工作


这里有一个实用的建议。通过选择简单的名称空间,让您的生活更轻松,它们与DNS和Java非常接近。

我认为在名称空间名称中使用http://的原因之一是,社区中一直有一部分人认为有一天可以在web浏览器中键入名称空间名称,并获取名称空间含义的定义。甚至有一个标准,称为RDDL,一些人遵循它。其他内容是URL应解析为有关命名空间的一些人类可读信息的内容。例如,尝试在浏览器中键入


然而,确实不要求名称空间URI解析为任何内容,软件尝试取消对URL的引用(如果它确实是一个URL)在今天也没有任何用处,我怀疑永远不会有。一些好的答案已经存在。这里有一个额外的视角。XML名称空间实际上是一个URI,不限于URL。有时,人们使用URL作为指示元数据可能在哪里可用的一种方式,但通常情况并非如此。通常使用的一个方面是,公司拥有一个Internet域,并且通常在URL中表示该域,因此。。。是创建特定于公司的URI的一种方法


在大多数情况下,我更愿意说明我使用的是URN,它是一个URI,而不是URL。我甚至在值中添加了一个前缀,以明确我正在做的事情。类似这样的“urn:mycompany.com/schemas/services/foo/bar/20111119.

这是一个打字错误吗?“我正在学习WCP”-你是说WCF吗?很酷,Michael。我已经好几年没有看到任何提到RDDL的内容了。感谢您提供的urn参考。我无法阅读它,因为它写得太差了,但维基百科的文章为我澄清了这一点。