Зачем кому-то использовать WCF basicHttp webservice поверх WCF RIA Services в Silverlight?
Итак, я пользуюсь сервисами WCF Ria уже несколько месяцев, и мне интересно, зачем кому-то использовать веб-сервис WCF basicHttp вместо сервисов WCF RIA?
Кто-то сказал мне, что RIA Services не подходит для приложений уровня предприятия, и мне интересно, почему?
Без RIA кажется, что вы должны написать логику проверки в 2 областях: клиент и сервер. Кроме того, RIA справляется с ролями и членством довольно легко.
Сколько дополнительной работы требуется, если вы хотите использовать WCF basicHttp webservice? Какая польза от использования RIA? и... Есть ли у кого-нибудь хорошие примеры приложений уровня Silverlight уровня предприятия, использующих веб-сервис wcf basicHttp?
Спасибо!
2 ответа
Проблемы с поддержкой WCF в Silverlight связаны с ограниченным подмножеством.NET Framework, встроенного в плагин Silverlight, поскольку это, по сути, уменьшенная версия.NET Framework. В результате сокращенного времени выполнения.NET в плагине Silverlight он не имеет той же полной поддержки WCF, которую вы получаете от стандартных проектов.NET. Это было сделано для того, чтобы сделать начальную загрузку SL быстрой с точки зрения клиента и увеличить время выхода SL на рынок в качестве продукта. Имейте в виду, что подключаемый модуль SL не зависит от установленной существующей платформы.NET, поэтому на рынке представлены версии для Linux, Windows Phone 7 и OS X.
Со временем они продолжают добавлять востребованные функции. Например, Silverlight 5 будет поддерживать WS-Trust (полный список новых функций см. Здесь).
Я рекомендую вам прочитать этот ресурс, чтобы узнать, что вы можете упустить, пытаясь вызвать WCF Services с клиента:
http://msdn.microsoft.com/en-us/library/cc896571(v=vs.95).aspx
Имейте в виду, что вы можете очень легко перенаправлять вызовы на более сложные сервисы WCF через конечные точки RIA Services, которые фактически вызывают сервис напрямую со стороны сервера.
Что касается использования стандартного WCF вместо RIA ... есть преимущества, когда ваш средний уровень имеет несколько типов клиентов, хотя с помощью RIA вы можете просто представить свои конечные точки как конечные точки SOAP 1.1 и требовать, чтобы люди подключались с использованием этой парадигмы вместо WCF. Вы не должны использовать RIA или ничего; Вы можете смешивать и сочетать в соответствии с вашими требованиями, как вы считаете нужным. Лично я хорошо использую RIA, если это вообще возможно.
Справедливо сказать, что у RIA Services были проблемы с ростом. Некоторые из моих самых больших ошибок (например, отсутствие возможности возвращать сложные объекты, которые не являются сущностями из методов Invoke, и отсутствие достойной поддержки для использования в MVVM-стиле) в основном были исправлены в RIA Services SP1. У некоторых людей, которых я знаю, используя их в больших корпоративных приложениях, были большие головные боли (по крайней мере, в первые дни). Я не совсем уверен, где сейчас обстоят дела в этом отношении, были ли решены их конкретные проблемы.
Тем не менее, я лично считаю, что это фантастическая технология. Это облегчает задачи, которые являются болезненными со стандартными службами WCF (мое любимое - возможность задавать запросы на клиенте для методов в вашей доменной службе, которые возвращают IQueryable, которые выполняются на сервере - что упрощает сортировку / фильтрацию / группировку / разбиение на страницы), Правильно ли это для вас, зависит от вашего сценария. Он предназначен, прежде всего, для облегчения выполнения операций CRUD над объектами, поэтому, если это в первую очередь то, что вам нужно, то это идеально. Однако службы RIA предназначены для использования только приложением Silverlight (по крайней мере, на данный момент). Вы можете получить к ним доступ от других клиентов, но не получите всех функций, которые делают их такими хорошими. Так что если вам нужно поддерживать другие клиентские платформы, это может не подходить.
Я думаю, что RIA Services - это круто, но в конечном итоге это зависит от вашего сценария того, подходят ли они для вашего проекта. Как технология, она ориентирована на конкретные сценарии и не предназначена для решения всех мировых проблем разработки программного обеспечения. Некоторые люди, которые могут жаловаться на это, возможно, используют его не так, как было задумано, и расширяют его границы (при этом он тоже не идеален и имеет свои проблемы). Если бы вы могли предоставить более подробную информацию (например, масштаб приложения, клиентские платформы, которые он должен поддерживать, и количество разработчиков в проекте), я, вероятно, смогу дать вам несколько полезных советов.
Надеюсь это поможет...
Крис