Меняет ли контракт обновление службы WCF с .NET 3.5 до 4.0? - PullRequest
4 голосов
/ 07 сентября 2010

Если я обновлю веб-службу 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)

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

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

1 Ответ

2 голосов
/ 07 сентября 2010

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

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

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

...