Вот недавно столкнулся с проблемой, нужно было вызвать .NET WCF сервис из Javа. Нашел несколько примеров, реализации, одним из них и хочу поделиться, вдруг пригодиться кому. Прогулявшись по просторам интернета, нашел готовое решение для SOAP сервисов. Разбираться с ним не стал и продолжил поиск. Затем, было найдено решение с использованием WCF RESTful сервиса, который возвращал данные в формате JSON. Решил разобраться подробнее и попробовать как это работает.
Итак, для начала нам надо написать WCF RESTful [EN] сервис. Для начала определим дата-контракт:
Message.cs
using System.Runtime.Serialization;
namespace TestService
{
[DataContract]
public class Message
{
[DataMember(Order = 1)]
public string Header { get; set; }
[DataMember(Order =2)]
public string Body { get; set; }
}
}
Задаем порядок элементов, которые будет возвращать веб-сервис посредством Order = x.
Потом определим сервис-контракт:
ITestService.cs
using System.ServiceModel;
using System.ServiceModel.Web;
namespace TestService
{
[ServiceContract]
public interface ITestService
{
[OperationContract]
[WebGet(UriTemplate = "/GetMessage/?header={header}&?body={body}", ResponseFormat = WebMessageFormat.Json)]
Message ComposeMessage(string header, string body);
}
}
Подробнее о UriTemplate можете почитать тут.
Реализуем сервис:
TestService.svc.cs
using System.ServiceModel.Activation;
namespace TestService
{
public class TestService : ITestService
{
#region ITestService Members
public Message ComposeMessage(string header, string body)
{
Message message = new Message() { Header = header, Body = body };
return message;
}