Добавление метода к WCF ServiceContract повреждают существующие клиенты?

Попробуйте добавить

protected void Application_Error(object sender, EventArgs e)
{
    var exception = Server.GetLastError(); //<-- here put a breakpoint
}

, чтобы отловить все ошибки, которые выдает приложение.

Вы также можете попробовать

ConnectionString="<%= ConnectionStrings:Primary %>"
12
задан Nick 10 March 2009 в 22:20
поделиться

4 ответа

Я думаю, что Ваши существующие клиенты продолжат работать. В конце концов, это очень похоже на SOAP и веб-сервисы, в которых клиент соединится с данным URL и запросит определенный сервис. При взятии методов далеко, Вы рискнете поломкой (только если метод используется, я верю), но добавление должно быть свободной болью.

Я только баловался WCF, но привык веб-сервисы ASP.NET таким образом для большого успеха.

8
ответ дан 2 December 2019 в 20:41
поделиться

Нет, я не ожидал бы, что - добавление новой функциональности / новые сервисные методы, который НЕ изменяет ни одного из существующих методов / вызовы функции, не будут влиять на "старые" клиенты. Конечно, они не будут знать о новых методах, пока их прокси не были воссозданы от метаданных или адаптированы вручную.

Но существующие вызовы должны быть незатронутыми, пока их подпись (данные, которыми они обмениваются), остается таким же.

Marc

4
ответ дан 2 December 2019 в 20:41
поделиться

Я получаю более экстремальное представление на этом. Почему когда-нибудь изменяют что-нибудь? Вместо этого почему бы не создать новый контракт, наследовавшийся старому, и добавляющий новую операцию? Новый контракт может быть выставлен в отдельной конечной точке в том же сервисе.

Это может быть паранойя, неинформированная формальным доказательством, но мне кажется, что, если возможно создать клиент, который может сказать различие, затем возможно, что некоторый клиент "повредится", когда Вы внесете изменение. Полагайте, что при изменении контракта на обслуживание, Вы только изменяете служебный код - Вы изменяете код прокси в любом клиенте, который, оказывается, обновляет его сервисную ссылку. Некоторые, более консервативные клиенты, могли бы полагать, что причина повторно протестировать их клиентский код - в конце концов, у них могут быть правила, в которых говорится, что они должны повторно протестировать свой код каждый раз, когда любое изменение внесено в него.

Существующий клиент будет обращаться к исходной конечной точке, так не будет затронут путем добавления новой конечной точки - никакой код не изменился бы, если бы "Сервисная Ссылка Обновления" была выполнена.

Кроме того, почему даже думают об этом, если Вы не имеете к?

1
ответ дан 2 December 2019 в 20:41
поделиться

В целом добавление к сообщению в решениях SOA не нарушает условия контракта. Я полагаю, что, пока Вы не используете протокол двоичной синхронной передачи данных (net.tcp), Вы поддержите обратную совместимость.

Я не уверен в том, повредит ли это Ваши клиенты, использующие двоичную привязку, хотя?

1
ответ дан 2 December 2019 в 20:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: