#wcf #xml-namespaces
#wcf #xml-пространства имен
Вопрос:
Я заметил, что пространства имен WCF обычно являются URL-адресами, но если вы пытаетесь получить к ним доступ в браузере, они обычно возвращают 404.
1) Действительно ли вызываются эти пространства имен?
2) Если нет, то почему это URL-адреса?
3) Обязательно ли это должны быть URL-адреса или подойдет любая строка?
Пример того, что я видел:
[ServiceContract(
Name="ServcieAContract",
Namespace = "http://www.thatindigogirl.com/samples/2006/06")]
public interface IServiceA
Ответ №1:
Использование URI для имен пространств имен WCF — это соглашение, которое в целом выросло вокруг пространств имен XML.
Именем пространства имен может быть любая строка, но мотивация для использования URI вместо этого заключается в том, что более вероятно (при разумном выборе), что оно будет глобально уникальным — часть имени хоста связывает пространство имен с конкретной организацией, и тогда у этой организации должен быть стандарт для построения уникальных имен пространств имен в пределах ее домена.
В некоторых случаях выбранный URI на самом деле является URL: то есть с этого адреса можно получить ресурс — обычно документацию, или копию схемы, или тому подобное. Вы могли бы рассмотреть возможность выполнения этого, если пространство имен относится к какому-либо общедоступному интерфейсу, и вы хотите, чтобы ваши клиенты могли легко находить справку / документацию по его использованию.
Комментарии:
1. @Buh Buh: Любая документация является подходящей / полезной.
Ответ №2:
Пространства имен — это просто пробелы в именах *. Это не URL-адреса.
Сказав, что иногда схемы доступны по URL.
могут ли они быть просто обычными строками? Безусловно. Хотя в этом случае вы обычно добавляете к ним префикс urn:
.
Как прокомментировал Крис, спецификацию URN см. ietf.org/rfc/rfc2141.txt
Комментарии:
1. Имейте в виду, что URNS имеют свой собственный определенный синтаксис ( ietf.org/rfc/rfc2141.txt ). На самом деле вам не следует просто префиксить любую старую строку
urn:
.2. Верно. Это стоит упомянуть.
Ответ №3:
1) Они не должны вызываться (хотя они могут быть, возможно, для показа документации), но используются для идентификации и управления версиями служб и операций.
http://msdn.microsoft.com/en-us/library/ms733832.aspx
2) Проверьте ответ Криса Диксона
3) Подойдет любая строка, но люди в основном придерживаются формата метки с версией пространства имен с датой
http://www.ibm.com/developerworks/xml/library/x-tipnamsp/index.html