У меня есть существующий клиент WPF, и я создаю новые автономные WebServices с помощью ASP.NET 5 WebAPI. Я хочу показать некоторые метаданные, например WebApiProxy или .wsdl/Mex, поэтому я могу автоматически генерировать класс Proxy в моем клиенте WPF.Как использовать ASP.NET 5 WebAPI от клиента WPF
0
A
ответ
-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>();
}
}
Без метаданных из ServerSide. Откуда появляется «Лицо» в вашем примере? Мне нужны метаданные, поэтому я могу определить свои типы serveride. В противном случае «Лицо» должно поддерживаться на всех клиентах при изменении сервера. Для этого я предпочитаю авто-генетические типы. – jenspo
Ну, это своего рода недостаток. Я не знаю, как вы могли это сделать. Подумайте о публичных API. Я никогда не представлял собой REST API, который каким-либо образом раскрывал бы его сущности. То, что вы ищете, - это документация, раскрывающая ваши DTO, чтобы ваши клиенты знали, чего ожидать. Другим подходом является создание SDK, в котором вы раскрываете классы, используемые вашим API. В любом случае, у вас будет дублирование. – jpgrassi
Если вам интересно увидеть пример, который делает это с помощью REST (kinda), посмотрите https://github.com/faniereynders/WebApiProxy. Он просто не работает с новым ASP.NET 5 WebAPI - все же! Это дублирование сна. Но поскольку клиентский клон автоматически генерируется из метаданных serveride, нет поддержки. – jenspo