Изменяет ли контракт при обновлении службы WCF с .NET 3.5 до 4.0?

Если я обновляю веб-службу WCF с .NET 3.5 до 4.0, не внося никаких других изменений, существует ли риск изменения контракта, открытого для внешнего мира? т.е. Потребуется ли моим потребителям повторно использовать WSDL?

Если да, могу ли я что-нибудь сделать, чтобы этого не произошло?

РЕДАКТИРОВАТЬ: пример того, о чем я говорю.

Некоторое время мы использовали что-то подобное http://www.codeproject.com/KB/aspnet/WSSecurityProvider.aspx

Возможно, я ошибаюсь, но когда я обновил сервер и восстановил данные с клиента, Reference.cs изменился так, что

public MyNamespace.MembershipUser RemoteMembershipProvider_CreateUser(out System.Web.Security.MembershipCreateStatus status, string providerName, string applicationName, string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey) {
    return base.Channel.RemoteMembershipProvider_CreateUser(out status, providerName, applicationName, username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey);
}

изменился на

public MyNamespace.MembershipUser RemoteMembershipProvider_CreateUser(out MyNamespace.MembershipCreateStatus status, string providerName, string applicationName, string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey) {
    return base.Channel.RemoteMembershipProvider_CreateUser(out status, providerName, applicationName, username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey);
}

Обратите внимание на изменение пространства имен для MembershipCreateStatus.

(и нет, у меня действительно нет пространства имен MyNamespace)

Я ошибаюсь, думая, что если бы я не перезарядился, он бы перестал работать?

А если нет, то что конкретно изменилось и на сколько других случаев это повлияет? Просто фреймворк перечисляет? Или более того?


person pdr    schedule 07.09.2010    source источник


Ответы (1)


Нет, проблем быть не должно - в конце концов, все, что проходит между клиентом и сервером, - это сериализованное сообщение.

Клиенту действительно все равно, на какой версии ОС или .NET находится сервер - до тех пор, пока сообщение можно понять и интерпретировать.

Пока вы ничего не меняете, все будет в порядке!

person marc_s    schedule 07.09.2010
comment
Сериализованное сообщение основывается на именах классов и пространствах имен, некоторые из которых автоматически создаются платформой. Это меня беспокоит. Не для того, чтобы предположить, что вы ошибаетесь, я просто говорю, что это нечто большее, чем я могу контролировать. - person pdr; 07.09.2010
comment
Пространства имен Xml не изменятся, поэтому сериализация не будет нарушена. - person Ladislav Mrnka; 07.09.2010
comment
@ Ладислав - Похоже, ты прав. Изменилась клиентская сторона фреймворка. Спасибо вам обоим - person pdr; 07.09.2010