Вызывались ли когда-либо пространства имен WCF?

#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