Zacząłem uczyć się Java EE 7 i często spotykam się z tym terminem „standardowy” i nie rozumiem, co to znaczy.
Oto na przykład cytat z tej książki:
W przeciwieństwie do SOAP i stosu WS- *, które opierają się na standardach W3C, REST nie ma żadnego standardu i jest tylko stylem architektury z zasadami projektowania. Aplikacje REST w dużej mierze opierają się na wielu innych standardach: HTTP, URI, URL ...
Mam pojęcie, co to może znaczyć, ale nie jestem pewien.
Najlepszym wyjaśnieniem, na jakie się natknąłem, jest definicja stąd .
coding-standards
standards
Djole Pi
źródło
źródło
Odpowiedzi:
Termin „standardy” w programowaniu często odnosi się do technologii / dokumentu zarządzanego przez grupę lub społeczność. Członkowie tej grupy często mają wspólne inwestowane cele, są aktywnymi użytkownikami tej technologii i chcą mieć pewność, że technologia będzie kontynuowana.
W programowaniu jest wiele „rzeczy”, które rządzą społecznością. Członkowie ci mogą obejmować programistów lub przedstawicieli korporacyjnych (np. Apple, Microsoft, IBM itp.)
W3C to bardzo duża grupa, która współpracuje w celu zdefiniowania wielu standardów.
Oto lista członków.
http://www.w3.org/Consortium/Member/List
REST jest przykładem technologii, która ze względu na swoją popularność jest używana przez wiele osób, ale nie rządzi nią żadna grupa ani społeczność. Dlatego nie ma jednego miejsca, w którym można by wskazać palcem i powiedzieć „w taki sposób standardy mówią, że należy to zrobić” .
Firmy takie jak IBM, Microsoft i inne opublikowały dokumentację dotyczącą wdrażania REST. Można powiedzieć, że istnieje „wspólny sposób” wdrażania REST. Możesz wybrać wiarygodne źródło, które opisuje implementację REST i twierdzić, że postępujesz zgodnie z tym odniesieniem. Wykorzystanie wiarygodnych źródeł jest jednym ze sposobów radzenia sobie z problemami kompatybilności w przeglądarkach internetowych.
źródło
Standard to dokument techniczny określający zachowanie technologii. (W przypadku niektórych technologii może to być jakiś inny rodzaj standardu technicznego .) To wszystko, czym one są i dlaczego istnieją: są dokumentami i opisują technologię.
Dokumenty te są tworzone przez organ zarządzający, który ma uprawnienia i zaufanie niezbędne do decydowania o tym, jak działa ta technologia, oraz do dbania o ludzi, gdy udostępnią dokument specyfikacji jako standard. Organ zarządzający może opracować wiele standardów dla różnych technologii lub różnych wersji technologii. Organ zarządzający może być również znany jako opiekunów, autorów, opiekunów itp. Standardów.
(W przeciwieństwie do tego, co opisuje Mathew, standardem nie jest organ zarządzający ani sama technologia. To dokument opisujący technologię lub jej konkretną wersję).
Niektóre przykładowe standardy technologii, o których wspomniałeś (i inne):
HTML jest dobrym przykładem tego, że różne wersje języka często mają różne standardy. Różne wersje mają różne dokumenty opisujące, jak należy postępować z różnymi wersjami języka.
Tymczasem HTTP jest jednym z wielu przykładów standardowego przemieszczania się między grupami: najpierw przez Grupę Roboczą ds. Sieci, a następnie do Grupy Roboczej HTTP, chociaż obie grupy były częścią IETF. Inne technologie zostały przeniesione między firmami, takie jak HTML (ponownie), którego wersja 2 została opracowana przez IETF w RFC1866 .
Dlaczego istnieją standardy?
Istnieją, aby dać nam gwarancję, jak wszystko będzie działać.
Specyfikacja HTML5 mówi mi, jak różne przeglądarki będą obsługiwać i wyświetlać napisane przeze mnie znaczniki HTML5, przy założeniu, że poprawnie implementują standard (co w przeszłości było problemem). Standard C ++ 11 powie mi coś o tym, co zrobi lub nie zrobi różny kod C ++ 11, który piszę.
Podobnie, jeśli piszę przeglądarkę, standard HTML5 powie mi, jak mam obsługiwać różne elementy znaczników HTML5, aby ludzie otrzymywali to, czego oczekują. Jeśli piszę kompilator C ++ 11, standard C ++ 11 powie mi, co muszę zrobić, aby poprawnie zaimplementować język i sprawić, by kod ludzi działał tak, jak powinien.
Na przykład autorzy Microsoft C #. Możesz pobrać specyfikację języka C # 5.0 dla siebie. Ten dokument jest obietnicą, że kod C #, który piszesz, powinien zachowywać się tak, jak opisano w specyfikacji, w każdym kompilatorze, który faktycznie implementuje specyfikację poprawnie.
( Jeśli robisz rzeczy niezgodne ze specyfikacją , jesteś na nieokreślonym terytorium i nie ma żadnej gwarancji co do tego, co się wydarzy lub nie.)
Historycznie normy sięgają takich rzeczy jak gwint , więc mogę mieć pewną gwarancję, że jeśli zamówię śrubę typu X, to zmieści się w otworze, który wywierciłem, i będzie wymienna z innymi śrubami typu X.
Co prowadzi nas z powrotem do definicji słowa „standard” :
tzn. rzecz, którą porównujesz, aby upewnić się, że dostaniesz to, czego oczekujesz.
źródło
Standard technologiczny to specyfikacja, w której oczekuje się, że dwie implementacje tego samego standardu będą interoperacyjne lub wymienne. Przykłady: USB, Bluetooth, Java EE7, HTTP.
Są też standardy „de facto”: konwencje, które umożliwiają interoperacyjność, ale bez wyraźnie uzgodnionej specyfikacji. Przykład: format Microsoft DOC historycznie był de facto standardem, ponieważ wiele produktów mogło odczytywać i zapisywać DOC, ale specyfikacje kanoniczne nie były dostępne (aż znacznie później). Dokumenty nadal były powszechnie rozpowszechniane w formacie DOC, z oczekiwaniem, że każdy odbiorca będzie w stanie je odczytać, dlatego stało się to de facto standardem.
Aby odnieść się do twojego konkretnego przykładu, REST nie ma wyraźnie uzgodnionej specyfikacji i dlatego nie jest prawdziwym standardem, a jedynie de facto standardem, ponieważ ma znaczną dwuznaczność co do tego, jak należy to zrobić poprawnie i nie istnieją żadne dominujące implementacje, które rozwiązuje te dwuznaczności. (Nie jestem przeciwny REST. To bardzo dobry sposób na budowanie usług internetowych)
źródło
Norma jest znormalizowaną konwencją - albo przez formalną specyfikację, albo po prostu dlatego, że wspólna konwencja zyskała wystarczającą popularność, aby dominować.
A
de jure standard
jest specyfikacją opublikowaną przez standardowy komitet. Niektóre standardowe komitety to ISO, ECMA, DIN, ANSI i W3C.Niektóre przykłady
de jure standards
to rozmiar papieru A4 (standard ISO 219), język c # (ECMA-334) itp.Termin „de jure” jest rzadko używany, a „standard de jure” jest często nazywany po prostu standardem.
(źródło: wikipedia - sam nie mogłem tego lepiej napisać)
Faktyczny standard niekoniecznie musi być zgodny z żadną formalną specyfikacją.
Jak napisał Gudmundur Orn w tej odpowiedzi , format Microsoft Office DOC był de facto standardem. Miał pozycję dominującą i zwykle zakładano, że ludzie mogą czytać dokumenty MS Word.
JSON jest zabawną bestią, ponieważ początkowo był de facto standardem. Od tego czasu został jednak sformalizowany jako ECMA-404 , dlatego jest teraz „standardem de jure”.
Jest to jednak również dominujący format wymiany danych z interfejsami API opartymi na HTTP (o ile mi wiadomo), co czyni go również „de facto standardem” w tym celu.
źródło
W przypadku prawnej odpowiedzialności za produkt wada jest klasyfikowana jako projekt, produkcja lub dokumentacja. Projekt nie jest wadliwy, jeśli opiera się na normie, niezależnie od tego, czy norma jest wadliwa. Obowiązuje norma obowiązująca w momencie tworzenia produktu. Normą może być opublikowana norma (ISO) lub zaakceptowana norma branżowa, która nie została opublikowana przez stowarzyszenie norm. Tak więc TCP / IP ze wszystkimi nieodłącznymi wadami, takimi jak fałszowanie, jest standardem, a jeśli stworzysz nową technologię, taką jak VOIP, i nie zrobisz nic, aby chronić użytkownika przed znanymi problemami związanymi z podstawową technologią, możesz bezpiecznie kontynuować chaos. Albo mogę się mylić i mieć tutaj wadę dokumentacji ...
źródło