WCF Контракты и пространства имен?
Привет,
Пространство имен по умолчанию для контрактов data/servce в WCF: "http://tempuri.org/"
, Установив ServiceContract.Namespace
а также ServiceBehavior.Namespace
мы можем получить собственное пространство имен. Я, однако, получил несколько вопросов по этому поводу:
- Должен ли я использовать
http://
пространство имен или я мог бы назвать его в том же пространстве имен CLS? - Если мне нужно установить все мои контракты данных в MyApp.IO для использования пространства имен CLS, есть ли простой способ сделать это, не устанавливая их все вручную?
- Есть ли простой способ установить пространство имен CLS в качестве пространства имен контракта для всей службы и ее контрактов на передачу данных?
1 ответ
Решение
Вопрос 1. Пространство имен может быть любым. Люди обычно используют URI некоторой формы, но он не обязательно должен указывать на реальную веб-страницу. Часто люди используют идентификатор версии в пространстве имен, но нет никаких правил относительно того, что вы должны делать.
Вопрос 2. Смотри выше.
Вопрос 3. Вы можете установить пространство имен для всех контрактов следующим образом:
// This overrides the standard namespace mapping for all contracts
// in Contoso.CRM.
[assembly: ContractNamespace("http://schemas.example.com/crm",
ClrNamespace = "Contoso.CRM")]
namespace Contoso.CRM
{
// The namespace is overridden to become:
// http://schemas.example.com/crm.
// But the name is the default "Customer".
[DataContract]
public class Customer
{
// Code not shown.
}
}
Вы можете проверить эту статью MSDN для получения дополнительной информации