То, с чем вы сталкиваетесь, относится к основам Silverlight (по крайней мере, в том виде, в каком оно существует сегодня). Ваш вывод верен - «Служба WCF с поддержкой Silverlight», вероятно, является вашим лучшим выбором для быстрого вызова службы из Приложение для телефона, но я бы хотел предложить другое обоснование.
Silverlight поддерживает только подмножество параметров связи, предлагаемых WCF, - он поддерживает только BasicHttpBinding, тогда как WCF предлагает гораздо больше, включая поддержку «улучшений», которые являются частью спецификаций WS- *. В результате вам необходимо установить определенные флаги и сделать определенный выбор в ваших службах WCF, чтобы сделать их пригодными для использования Silverlight. Используя шаблон «Служба WCF с поддержкой Silverlight», эта работа для вас сделана. Это также означает, что если вы хотите обеспечить безопасную связь через веб-сервис с Silverlight, вы должны использовать / настроить HTTPS.
Что касается интерфейсов и т. Д., На самом деле это работает для обеих опций - необходимость в настройке ServiceContract против "подразумевающего" его из определенных операций возникла в .Net 3.5 SP1, если моя память мне правильно служит. Обратите внимание, что хотя «обычный» Silverlight также поддерживает связь со службами WCF на основе TCP, я считаю, что телефон этого не делает.
Теперь для выбора № 3 - Служба данных WCF (или художник, ранее известный как ADO.Net Data Services.) Это делает для вас настройку службы на основе REST для предоставления ваших внутренних данных (где предыдущие 2 варианты больше / обычно основаны на SOAP.) Более подробную информацию и вводную информацию по этому вопросу можно найти здесь - http://msdn.microsoft.com/en-us/data/bb931106.aspx. Теперь эти сервисы обычно используют старый добрый http и определенно могут использоваться Silverlight и телефоном; Кроме того, их полезные нагрузки имеют меньший вес, чем аналоги SOAP.
Независимо от того, использовать ли REST или SOAP или нет - выбор дизайна - подход SOAP более RPC-подобен (определяют методы в сервисе, которые вызываются для выполнения определенных действий с конкретными приоритетами), опция REST более OOP-подобна , с некоторой "авто-магией", добавленной для хорошей меры. Суть "авто-магии" в том, что вам действительно нужно понять магию (и ее ограничения) перед началом, иначе ваш дизайн может не соответствовать вашим требованиям.
Надеюсь, это помогло!
John