2016-01-08 4 views
0

У меня есть существующий клиент WPF, и я создаю новые автономные WebServices с помощью ASP.NET 5 WebAPI. Я хочу показать некоторые метаданные, например WebApiProxy или .wsdl/Mex, поэтому я могу автоматически генерировать класс Proxy в моем клиенте WPF.Как использовать ASP.NET 5 WebAPI от клиента WPF

ответ

-1

Вам не нужно создавать прокси-классы, такие как Legacy Web Services, вместо этого вы можете напрямую обращаться к веб-API с помощью Endpoints/Url вашего веб-Api (так как вы настроили его маршрут в классе WebApiConfig.cs) Чтобы получить доступ к этим конечным точкам, вы можете используйте объект HttpClient, вам не нужно настраивать в своем клиентском приложении

1

Вам не нужно создавать прокси в вашем клиенте WPF для связи с вашим веб-интерфейсом. В простейшем случае, просто использовать HTTP-клиента для вызова веб-API конечных точек:

Что-то, как это будет делать:

using (var client = new HttpClient()) 
{ 
    //Api Base address 
    client.BaseAddress = new Uri("http://localhost:9000/"); 

    client.DefaultRequestHeaders.Accept.Clear(); 
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

    //Sending a GET request to endpoint api/products/1 
    HttpResponseMessage response = await client.GetAsync("api/person/1"); 
    if (response.IsSuccessStatusCode) 
    { 
     //Getting the result and mapping to a Product object 
     Person person = await response.Content.ReadAsAsync<Person>(); 
    } 
} 
+0

Без метаданных из ServerSide. Откуда появляется «Лицо» в вашем примере? Мне нужны метаданные, поэтому я могу определить свои типы serveride. В противном случае «Лицо» должно поддерживаться на всех клиентах при изменении сервера. Для этого я предпочитаю авто-генетические типы. – jenspo

+0

Ну, это своего рода недостаток. Я не знаю, как вы могли это сделать. Подумайте о публичных API. Я никогда не представлял собой REST API, который каким-либо образом раскрывал бы его сущности. То, что вы ищете, - это документация, раскрывающая ваши DTO, чтобы ваши клиенты знали, чего ожидать. Другим подходом является создание SDK, в котором вы раскрываете классы, используемые вашим API. В любом случае, у вас будет дублирование. – jpgrassi

+0

Если вам интересно увидеть пример, который делает это с помощью REST (kinda), посмотрите https://github.com/faniereynders/WebApiProxy. Он просто не работает с новым ASP.NET 5 WebAPI - все же! Это дублирование сна. Но поскольку клиентский клон автоматически генерируется из метаданных serveride, нет поддержки. – jenspo