Подтвердить что ты не робот

Как выбрать между службами WCF, REST, POX и RIA для нового приложения Silverlight

Там лот отличается тем, что приложение Silverlight может подключаться к нему на сервере. В том числе

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

(Проблема заключается в разработке вашего первого приложения Silverlight, зная, что использовать, когда у вас нет времени, чтобы узнать все из них.)

Если бы я должен был заменить Silverlight WPF в этом вопросе, какой эффект он повлиял бы на ваши ответы? (Я предполагаю с WPF, что из-за брандмауэров и политик администратора прямое подключение к базе данных не является вариантом.)

4b9b3361

Ответ 1

Мои два (евро) цента:

WCF лучше всего подходит, когда услугу можно рассматривать как бизнес-уровень приложения, то есть когда ваша служба имеет "интеллектуальные" операции, такие как "CalculateDiscountForClient".

ADO.NET Data Services (действительно, просто реализация REST) ​​представляется подходящим, когда ваше приложение в основном ориентировано на данные, а служба просто является интерфейсом для базы данных. То есть все ваши методы обслуживания имеют тип GetCustomers, CreateInvoice и т.д.

Услуги RIA - это очень новая технология, с которой я еще не экспериментировал, но, похоже, полезно создавать приложения, в которых часть Silverlight и служба очень тесно связаны: вы определяете ваши классы обслуживания и методы в проекте службы, и они автоматически реплицируются в проект Silverlight во время разработки. Кроме того, вы можете определить методы "действия" в стиле WCF и методы данных "Data" в стиле ADO.NET. Выглядит многообещающе.

Используйте POX, если есть вероятность, что вы измените клиентскую часть от Silverlight на любую другую технологию (например, HTML + AJAX) в будущем, так как это самый интероперабельный вариант.

О различиях в WPF, о которых я только могу думать, заключается в том, что для доступа к данным, когда это возможно, я бы использовал прямые соединения данных ADO.NET(правильно встроенные в уровень доступа к данным, LINQ to SQL или тому подобное) вместо ADO.NET Data Services, поскольку он более гибкий. В любом случае, я должен сказать, что в WPF ничего не было.

Ответ 2

Мы используем RIA, и это единственный из вариантов, которые я знаю, но я это знаю, поэтому некоторые из моих мыслей.

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

Сказав это, я думаю, что не будет много изменений в том, как работает июльский предварительный просмотр RIA и способ работы готовой версии. Также уровень поддержки, похоже, предполагает, что это станет "Путем", чтобы поговорить с сервером в Silverlight.

Просто стоит упомянуть, есть некоторые ссылки:

http://blogs.msdn.com/brada/ У Брэда Абрамса есть пример, что он постоянно обновляется.

http://forums.silverlight.net/forums/53.aspx, здесь вы задаете вопросы.

http://www.riaservicesblog.com/Blog/ Колин Блэр знает свои вещи, и он очень полезен.

Ответ 3

Думаю, я больше не поеду POX. Если вы пишете WCF, чтобы сама служба не зависела от привязки, а привязка выполняется в файлах конфигурации, WCF в значительной степени не зависит от транспорта и протокола. Он может выполнять SOAP, JSON, REST или собственную форму двоичной сериализации. Все это связано с привязкой. Внутри WCF определяет только то, что становится доступным с точки зрения операций и контрактов данных (все они определяются атрибутами класса, метода и свойств). WCF дает вам огромную гибкость в этом отношении, а еще больше в 2010 году.

Со стороны Silverlight WCF требует, чтобы вы написали какой-нибудь сантехнический код. В .NET frameowrk есть инструменты для создания прокси-сервера в вашем проекте Silverlight, но вы должны быть готовы обрабатывать все ответы WCF асинхронно, а прокси-сервер не может улавливать исключения, вызванные службой.

.NET RIA Services скрывает все это. Он использует WCF под обложками, но это полностью скрыто. Вам не нужно писать асинхронный код. Вы определяете проверку один раз, в основном декларативно, и он работает как на стороне сервера, так и на стороне клиента. Релиз 1 будет нацелен на Silverlight, поэтому вы не сможете использовать эту услугу в другом месте. Предполагается, что этот охват будет расширен в последующих выпусках.

Я не знаю достаточно о данных служб данных ADO.NET для сравнения. Я подозреваю, что ответ будет зависеть от того, хотите ли вы предоставить свои данные больше, чем просто использование Silverlight.

Службы .NET RIA выглядят так, как мне хотелось бы идти (глядя на эти проблемы самостоятельно, имея в виду большое приложение). Большие проблемы для меня будут реализовывать очень большой набор функциональных возможностей на уровне сервиса и не смогут напрямую кодировать уровень доступа к данным (мы должны иметь возможность запускать SQL Server или Oracle).

Использование WPF вместо Silverlight изменяет все, в зависимости от того, где находятся ваши данные. Это похоже на старый вопрос Winforms против ASP.NET. С WPF вы создаете клиентское приложение Windows, и вам не нужно вообще использовать какой-либо интерфейс данных на основе сервисов, если только ваш доступ к данным не заставит вас его использовать. Вы по-прежнему хотите отделить данные и бизнес от кода презентации, используя MVVM, MVC или MVP. Кроме этого, у вас есть возможность рассматривать доступ к данным как слой, а не отдельный независимый уровень.

Ответ 4

WCF - это стандарт Microsoft для служебной связи. Я бы настоятельно советовал кому-либо создать уровень сервиса с использованием веб-API WCF (использует WCF, но специально для REST), который выходит в апреле 2012 года. Веб-API WCF в настоящее время находится в режиме предварительного просмотра.

Помните эти эмпирические правила: - ваш пользовательский интерфейс изменится быстрее, чем ваш сервисный уровень. Услуги RESTful будут в течение нескольких лет, Silverlight, вероятно, не будет - будут ли ваши службы когда-либо API-интерфейсами? Ну... WCF REST - это путь - Вы примете код JavaScript и Silverlight? WCF REST облегчит вам жизнь - у вас есть мобильный компонент (поскольку Silverlight не будет работать на iOS или андроиде)... REST является предпочтительным.

Не адаптируйте технологию, но приложение в целом.

Ответ 5

Если вы хотите создать приложение Silverlight и вам не нужны другие клиенты, я бы выбрал RIA Services. Это довольно безболезненно, и вам не нужно беспокоиться о том, как делается соединение с клиентом (т.е. Не требуется настройка на стороне клиента). RIA также генерирует классы для всех ваших объектов на клиенте, и вы даже можете поделиться своим собственным "серверным" кодом с клиентом, если это необходимо (полезно для перечислений или методов расширения).

Примечания:

  • Я никогда не пробовал это, но если вам действительно нужно, вы можете получить доступ к службе RIA и другим клиентам, ведь службы RIA построены поверх служб WCF.
  • Я не совсем понимаю проблемы безопасности Акаша Кавы. Вы можете (и должны) контролировать безопасность на стороне сервера, как и с любой другой услугой.