我开始学习Java EE 7,经常遇到“标准”一词,但我不明白它的含义。
因此,例如,这是这本书的引文:
与依赖于W3C标准的SOAP和WS- *堆栈相反,REST没有标准,只是一种具有设计原则的体系结构样式。REST应用程序严重依赖于许多其他标准:HTTP,URI,URL ...
我对这可能意味着什么有所了解,但不确定。
我遇到的最好的解释是这里的定义。
我开始学习Java EE 7,经常遇到“标准”一词,但我不明白它的含义。
因此,例如,这是这本书的引文:
与依赖于W3C标准的SOAP和WS- *堆栈相反,REST没有标准,只是一种具有设计原则的体系结构样式。REST应用程序严重依赖于许多其他标准:HTTP,URI,URL ...
我对这可能意味着什么有所了解,但不确定。
我遇到的最好的解释是这里的定义。
Answers:
编程中的“标准”一词通常是指由团体或社区管理的技术/文档。该小组的成员通常具有共同的投资目标,是该技术的活跃用户,并希望确保该技术继续发展。
编程中有许多“事物”,它们都有一个社区来管理它们。这些成员的范围从程序员到公司代表(例如Apple,Microsoft,IBM等)。
W3C是一个非常庞大的团队,它们共同努力以定义许多标准。
这是成员列表。
http://www.w3.org/Consortium/Member/List
REST是一种技术的示例,其流行度被许多人使用,但是没有团体或社区来管理它。因此,没有人可以指责说“这就是标准应该做到的”。
像IBM,Microsoft和其他公司这样的公司已经发布了有关如何实现REST的文档。可以说有一种实现REST的“通用方法”。您可以选择描述REST实现的权威资源,并声称可以遵循该参考。使用权威资源是我们处理Web浏览器兼容性问题的一种方式。
标准是指定技术行为的技术文档。(对于某些技术,可能是其他某种技术标准。)它们就是它们以及它们为什么存在:它们是文档,并且描述了该技术。
这些文件由理事机构编写,理事机构具有必要的权限和信任,使他们能够决定技术的工作方式,并在人们发布规范文件作为标准时予以照顾。理事机构可以针对不同的技术或技术的不同版本制定许多标准。理事机构也可以称为标准的维护者,作者,保管人等。
(与Mathew所描述的相反,标准既不是管理机构也不是技术本身。它是描述该技术或其特定版本的文档。)
您提到的(和其他)技术的一些示例标准:
HTML是不同语言版本通常具有不同标准的一个很好的例子。各种版本都有不同的文档,描述了应如何处理该语言的各种版本。
同时,HTTP是在组之间移动的标准的众多示例之一:首先是网络工作组,然后是HTTP工作组,尽管这两个组都是IETF的一部分。其他技术也在公司之间转移,例如HTML(再次),其版本2 由IETF在RFC1866中编写。
它们的存在为我们提供了工作方式的保证。
HTML5规范告诉我各种浏览器将如何处理和显示我编写的HTML5标记,前提是它们正确地实现了标准(历史上一直是个问题)。C ++ 11标准将告诉我有关我编写的各种C ++ 11代码可以做什么或不可以做什么的事情。
同样,如果我正在编写浏览器,则HTML5标准将告诉我如何处理各种HTML5标记,以便人们得到他们所期望的东西。如果我正在编写C ++ 11编译器,则C ++ 11标准将告诉我为正确实现该语言并使人们的代码以预期的方式工作需要做些什么。
例如,Microsoft编写C#。您可以自己下载C#语言规范5.0。本文档保证您编写的C#代码应在实际上正确实现该规范的任何编译器中都按照规范中所描述的方式运行。
(如果您执行超出规范的操作,那么您将处于未定义的领域,并且无法保证会发生或将不会发生的任何事情。)
从历史上看,标准可以追溯到诸如螺纹之类的东西,因此我可以保证,如果我订购X型螺钉,它将适合我所钻的孔,并且可以与其他X型螺钉互换。
这使我们回到“标准”一词的定义:
他人判断或衡量的事物的公认或认可示例— 柯林斯词典
公认的定量或定性比较方法;一个标准。— 美国文化传承·斯特德曼医学词典
也就是说,您将自己的东西进行比较以确保您将获得期望的东西。
技术标准是一种规范,要求同一标准的两个实现可以互操作或可互换。例如:USB,蓝牙,Java EE7,HTTP。
然后是“事实上的”标准:实现互操作性的约定,但没有明确的约定规范。示例:Microsoft DOC格式历来是事实上的标准,因为许多产品都可以读取和写入DOC,但是尚无规范规范(直到以后)。文档仍然通常以DOC格式分发,期望任何接收者都能够读取它,因此它已成为事实上的标准。
为了解决您的特定示例,REST没有明确的一致同意的规范,因此不是真正的标准,并且几乎不是事实上的标准,因为它在如何正确完成操作方面存在很大的歧义,并且不存在任何主流的实现解决了这些歧义。(我不反对REST。这是构建Web服务的一种很好的方法)
标准是标准化的约定-通过正式的规范,或者仅仅是因为通用约定已获得足够的流行以成为主导。
A de jure standard
是由标准委员会发布的规范。一些标准委员会是ISO,ECMA,DIN,ANSI和W3C。
例如 de jure standards
A4纸张尺寸(ISO标准219),c#语言(ECMA-334)等。
很少使用术语“法律上的”,而“法律上的标准”通常仅称为标准。
事实标准是一种习惯,约定,产品或系统,已通过公众接受或市场力量取得了主导地位。”
(来源:维基百科 -我自己写的更好)
事实标准不一定遵循任何正式规范。
正如Gudmundur Orn在此答案中所写,Microsoft Office DOC格式是事实上的标准。它具有主导地位,通常认为人们可以阅读MS Word文档。
JSON是一个有趣的野兽,因为它最初是事实上的标准。但是,此后已正式定为ECMA-404,因此现在已成为“法律上的标准”。
但是,它也是与基于HTTP的API交换数据的主要格式(据我所知),因此也使其成为“事实上的标准”。
对于合法产品责任,缺陷归类为设计,制造或文档。如果设计基于标准,则该设计无缺陷,无论该标准是否有缺陷。适用的标准是创建产品时所采用的标准。标准可以是标准协会未发布的已发布标准(ISO)或公认的行业标准。因此,TCP / IP具有欺骗性的所有固有缺陷,这是一个标准,如果您创建了像VOIP这样的新技术并且不采取任何措施保护用户免受基础技术的已知问题的影响,那么可以放心地继续这一混乱。否则我可能错了,并且这里存在文档缺陷...