Има ли такова нещо, наречено виртуален URL за пространство от имена?

Една от уеб услугите, които наследих в текущата си работа, съдържа WSDL схема със следната дефиниция на пространство от имена:

<xs:schema 
  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" 
  xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" 
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
  xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
  xmlns:mns="http://my.example.com/sumproj/msgs.xsd" 
  xmlns:tns="http://my.example.com/sumproj" 
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
  targetNamespace="http://my.example.com/sumproj/msgs.xsd" 
  elementFormDefault="qualified">

Всички външни URL адреси, изброени по-горе, могат да бъдат достъпни чрез уеб браузър, но вътрешните (домейн my.example.com) генерират само грешка Not Found:

Не е намерен

Исканият URL адрес /sumproj/msgs.xsd не беше намерен на този сървър.

Тъй като човекът, който да попита защо определени неща са внедрени по начина, по който са си тръгна, се чудя дали това е грешка или функция:

  • Възнамерявал ли е авторският разработчик да постави пространството от имена XSD на този http://my.example.com сървър и просто не успяхте да го приложите?

  • Или това е някакъв тип защитна функция, при която URL адресът е достъпен само от уеб услугата чрез конфигурационен XML, което ефективно дефинира този URL като виртуален, когато действително има достъп до localhost или подобен?

Ако е второто, как работи това и къде мога да науча повече за него?

(Забележка: example.com по-горе се използва само за илюстрация, не мога да разкрия вътрешния URL адрес на моя работодател)


person Withheld    schedule 19.07.2013    source източник


Отговори (2)


Има ли намерение авторският разработчик да постави XSD пространството от имена на този http://my.example.com сървър и просто не успяхте да го внедрите?

Това е възможно, но не е сигурно; без четене на мислите на разработчика не е възможен твърд отговор. Един рационален разработчик може да го направи и по двата начина -- дори ако много хора, включително мен, биха казали, че е по-добра практика и по-рационално да се постави документация за пространството на имената (възможно под формата на документ на схема, вероятно под формата на RDDL документ, вероятно в друг форма) в URI на пространството от имена.

Или това е някакъв вид защитна функция, при която URL адресът е достъпен само от уеб услугата чрез конфигурационен XML, което ефективно дефинира този URL адрес като виртуален, когато действително осъществява достъп до локален хост или подобен?

Не е невъзможно, но това не е дизайнерска техника, която изглежда широко документирана. (Поне има поне един маниак на XML, който никога не е чувал да се предлага.) Така че предполагам, че отговорът е: вероятно не е намерението на първоначалния автор.

Можете ли да ме насочите към достоверен източник, където мога да прочета за това?

Доверителният източник за пространства от имена на XML са документите „Пространства от имена в XML 1.0 (трето издание)“ и „Пространства от имена в XML 1.1 (второ издание)“, редактирани от Тим Брей и др. и публикувани от World Wide Web Consortium съответно през 2009 г. и 2006 г.

Трудно е да се докаже отрицателно накратко, но изследването на спецификацията трябва да изясни, че не налага изискване URI, използвани като имена на пространство от имена, да могат да се преименуват. В раздел 2.1 се казва „Пространство от имена на XML се идентифицира чрез препратка към URI [RFC3986]“, но нищо в спецификацията не изисква имената на пространствата от имена да бъдат дереферирани. Раздел 2.3 дефинира процеса на съпоставяне на пространство от имена като тест за идентичност на низове и посочва, че това означава, че еквивалентни форми на един и същ URI (напр. http://www.example.org/wine и http://www.Example.org/wine) не се считат за равни за целите на съвпадението на пространство от имена. Това изобщо няма да има смисъл, ако от процесорите на пространството от имена се изисква да дереферират имена на пространство от имена.

W3C Technical Architecture Group (TAG) обсъжда този комплекс от въпроси от гледна точка на по-високо ниво в своя документ Архитектура на световната мрежа, първи том. Вижте по-специално

  • раздел 3.5 (който формулира принципа, че „Препратката не предполага дереференция“: „Разработчик на приложение или автор на спецификация НЕ ТРЯБВА да изисква мрежово извличане на представяния всеки път, когато се препраща.“
  • раздел 4.5.3 за XML пространства от имена
  • раздел 4.5.4 за документи за пространство от имена (което TAG препоръчва)

Вижте също този свързан въпрос (и моя отговор на то).

ако URL адрес на пространство от имена сочи към ресурс, означава ли това непременно, че WSDL схемата трябва да се консултира с него по време на изпълнение?

Не. WSDL може да наложи допълнителни правила за използването на имена на пространства от имена в WSDL документи, но фрагментът от документа, който цитирате, е от документ на XSD схема. XSD спецификацията не изисква имената на пространството от имена да бъдат дереферирани (въпреки че го предлага като една възможна стратегия за локализиране на документи на XSD схема за използване в епизод на валидиране).

Ако отговорът е не, може ли да се консултира с него по време на изпълнение? или е само за четене от хора?

Не е забранено на процесорите да дереферират името на пространството от имена, но някои власти не го препоръчват. Когато широко разпространеният софтуер дереферира имена на пространства от имена всеки път, когато се изпълнява или всеки път, когато чете XML документ, резултатът може да бъде прекомерен и ненужен мрежов трафик. W3C страда от такъв ненужен трафик от няколко години и сега обслужва всички схеми с изкуствено бавни скорости, за да убеди потребителите да се оплачат на своите доставчици на софтуер. (Вижте публикацията в блог на Ted Guild от 2008 г. за подробности. )

person C. M. Sperberg-McQueen    schedule 23.07.2013
comment
Не бих могъл да поискам по-подробен отговор от този, отнасящ се до всеки мой въпрос. Благодаря! - person Withheld; 24.07.2013

XML пространствата от имена са URI (Uniform Resource Identifier), които имат за цел да разграничат значението на автора на елемента „книга“, да речем, от значението на елемента „книга“, както може да се появи във всеки друг XML документ.

Ако избера пространство от имена за моята схема, трябва да съм абсолютно сигурен, че то няма да е същото като пространство от имена, което някой друг може да избере. За да са сигурни, че този сблъсък няма да се случи, авторите обикновено карат техните пространства от имена да започват с име на домейн, което те притежават. Това ги прави да изглеждат като URL адреси, но всъщност няма изискване URI пространството от имена действително да сочи към полезен ресурс или изобщо към нещо друго. Полезни организации, като w3c, всъщност публикуват ресурси на тези URI, поради което външните пространства от имена в документа по-горе работеха.

person Polly Shaw    schedule 22.07.2013
comment
Най-важната част от информацията, която прочетох във вашия отговор, е, че всъщност няма изискване URI адресът на пространството от имена действително да сочи към полезен ресурс или изобщо към нещо друго. Можете ли да ме насочите към авторитетен източник къде мога да прочета за това? (Опитах се да намеря това в w3.org, но не можах) Освен това, ако URL адресът на пространството от имена сочи към ресурс, означава ли това задължително, че WSDL схемата трябва да се консултира с него по време на изпълнение? Ако отговорът е не, може ли да се консултира с него по време на изпълнение? или е само за човешко четене? Благодаря +1 за сега. - person Withheld; 22.07.2013
comment
На тази страница на w3schools се казва „URI пространството от имена не се използва от анализатора за потърсете информация.' Както и да е, тъй като няма стандарт за това какво трябва да има в URL адреса, той няма да знае какво да прави с ресурса, ако трябва да изтегли нещо. записът в wiki по въпроса препраща към този 12-годишен документ, който предлага стандарт, който не е приет. - person Polly Shaw; 23.07.2013