Когда вы говорите «Remote UI», я думаю, что вы на самом деле имеете в виду, что у вас есть некоторые операции, которые выполняются на удаленном сервере, но вызываются удаленно через API.
Удаленный пользовательский интерфейс будет означать, что пользовательский интерфейс работает на сервисном компьютере, а пользователи взаимодействуют с сервисом через спроектированный пользовательский интерфейс, например, что-то вроде терминальных служб.
Представление работы, выполняемой службой в API SOA, вероятно, является наилучшим путем, который вы хотите выбрать. Затем вы можете реализовать пользовательский интерфейс в Winforms, Silverlight, ASP.Net или любом другом в будущем. SOA - это очень много для многих людей, но мне нравится думать о нем как о граничной точке в системе, где каждая сторона не знает деталей реализации другой стороны.
Решение о гранулярности сервисов не всегда очевидно, но если вы попытаетесь задуматься о функциональности, которую вы предоставляете потребителям сервиса, а не только о приложении UI, которое вам поручено реализовать в настоящий момент. Эти вещи, конечно, не в камне, и вы можете рефакторинг по мере развития событий. Одно приложение может использовать несколько сервисов, поэтому проблем в этом нет.
В том месте, где я работаю, мы обычно сначала реализуем функциональность, а потом отвечаем на вопросы безопасности. Ваши требования безопасности, конечно, будут конкретными, но вам необходимо учитывать такие вещи, как чувствительность данных, к которым осуществляется доступ, или функции, которые пользователь может вызывать через службу. если служба используется внутри вашей сети или обнародована через Интернет, и вероятность того, что пользователи будут пытаться действовать злонамеренно. например, маловероятно, что бизнес-пользователь скачает копию Visual studio и создаст свой собственный клиент WCF, чтобы вызвать хаос, но все возможно.