нет особой разницы в написании материалов с поддержкой JSON по сравнению со стандартным WCF.Я предполагаю, что вы хотите REST API (мои службы WCF для Android работали REST), что означает, что ваши вызовы являются запросами GET, а не сообщениями HTTP, с использованием URL в качестве способа передачи параметров:
http://example.rest.com/myservice/categories/en/videos
, где "en" и "videos" - это параметры, которые вы хотите использовать в своем URL.
WCF работает с интерфейсом, интерфейс определяет контракт на обслуживание.Для служб REST вы можете указать формат JSON / URL, как показано ниже:
[ServiceContract()] // Required: this is a WCF endpoint
public interface IMyService
{
[OperationContract()] // Required so the method actually is included
[WebGet(
ResponseFormat = WebMessageFormat.Json, // Return results as JSON
UriTemplate = "/categories/{language}/{category}")]
CategoryResponse Find(string language, string category);
}
Категория шаблона URI формирует вашу структуру URI, говоря, что когда кто-то обращается к вашему сервису, с "категориями", то два значения разделяютсячерез косую черту он вызовет этот метод Find, передав первый параметр в качестве параметра language , а параметр category будет равен второму:
например: http://yourdomain/yourservice.svc/categories/it/bob
будет вызывать этот метод, передавая "it" как язык и "bob" как категорию.
Возвращаемый объект - это просто стандартный datacontract, если вы хотите управлять форматом, просто используйтеАтрибуты DataContract + DataMember (имеют именованные параметры, такие как имя, пространство имен, порядок и т. Д.).
Затем последняя часть заключается в правильной настройке службы, в данном случае
a) определяет поведение службы webHttp.:
<behaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp/>
</behavior>
</endpointBehaviors>
и b) определить вашу конечную точку с помощью webHttpBinding (и с использованием поведения конечной точки, определенного выше: смотрите, мы устанавливаем поведение_конфигурации)= "сеть"):
<services>
<service behaviorConfiguration="standard"
name="Your.Implementing.ClassThatImplementsIMyService">
<endpoint address="" behaviorConfiguration="web" binding="webHttpBinding"
contract="Namespace.To.IMyService" />
</service>
</services>
и это в основном все ...