Почему прокси-сервер службы WCF содержит http://tempuri.org?

Я учусь делать базовый сервис WCF. Служба работает внутри консольного приложения. Клиент также является консольным приложением на том же компьютере. Я использую привязку netTCP.

Я использовал SvcUtil.exe для генерации файла прокси-класса, и, хотя все работает нормально и работает, как я ожидаю, я озадачен разделом файла класса прокси:

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
[System.ServiceModel.ServiceContractAttribute(ConfigurationName="IService1")]
public interface IService1
{

    [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IService1/myFunction", ReplyAction="http://tempuri.org/IService1/myFunctionResponse")]
    string[] myFunction();

}

Что такое http://tempuri.org/IService1/myFunction? Для новичка, как я, это похоже на веб-адрес. Я не понимаю, что делает эта часть программы и почему это необходимо. Размещал ли svcutil.exe информацию, необходимую для моей программы, в Интернете? Я потерялся.

1 ответ

Решение

это похоже на веб-адрес.

Это не совсем веб-адрес. Это пространство имен. Все, что вам нужно сделать, это убедиться, что он уникален.

Я не понимаю, что делает эта часть программы и почему это необходимо.

Пространство имен обязательно. Он является частью договора на ваши сервисные действия.

Размещал ли svcutil.exe информацию, необходимую для моей программы, в Интернете?

Нет, в вашей программе нет ничего, кроме вашего собственного кода. Ваша программа может работать полностью в автономном режиме.

Фон

Каждому веб-сервису требуется уникальное пространство имен, чтобы отличать его от других сервисов. Консорциум World Wide Web рекомендовал использовать URI для пространства имен, потому что URI гарантированно будет глобально уникальным, и у вас, вероятно, будет домен для вашей веб-службы.

Microsoft использует tempuri.org в качестве значения по умолчанию для веб-служб, созданных с помощью Visual Studio. Он обозначает Временный унифицированный идентификатор ресурса, и Microsoft владеет этим доменом. Он предназначен только для обеспечения местозаполнителя и должен быть заменен, особенно для служб в открытой сети.

В вашем случае, поскольку у вас, вероятно, нет домена для службы, вы можете использовать поддельный домен, просто убедитесь, что он уникален. Технически это может быть что угодно, не обязательно URI, но для согласованности рекомендуется использовать URI. Кроме того, он должен быть уникальным только в вашей сети, поэтому даже стандартный файл tempuri.org работал для вас просто отлично, но лучше попытаться создать поддельный домен, который уникален во всем мире.

Другие вопросы по тегам