Как предоставить RESTful веб-сервис (ы) из приложения WPF? - PullRequest
1 голос
/ 04 июня 2019

Как правило, приложение WPF - это потребитель / клиент службы RESTful на веб-сервере. Я хотел бы, чтобы это было наоборот - приложение WPF должно иметь возможность выставлять веб-API. Это будет использовано веб-приложением.

Поток:

web app ---sends a command to--> WPF app
** WPF app makes a 'long running job' until its user decides to stop **
WPF app ---passes data back to--> web app

Сообщение должно быть в формате Json. Я подготовил для нее схему OpenAPI YAML ) на http://editor.swagger.io/. В будущем ее можно будет использовать для внесения изменений в веб-API приложения WPF.

Позволяет генерировать заглушку кода C # сервера ASP.NET Core. Каковы будут требования для запуска сервера ASP.NET Core в WPF, и будет ли он достаточно легким для использования?

public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>()
        .Build();

// somewhere in the WPF app: BuildWebHost(args).Run();

Код автоматически генерируется https://github.com/swagger-api/swagger-codegen.

В post не удалось интегрировать ASP.NET Core 2.x в приложение WPF. К сожалению, ASP.NET Core 3.0 и новее будет работать только на .NET Core.

У меня есть кое-что, но не рабочая концепция. Мои варианты могут быть:

  • Используйте сторонние фреймворки или библиотеки. Должен иметь возможность использовать схему OpenAPI / YAML или сгенерированный Swagger код заглушки сервера и т. Д.
    • Может ли ServiceStack быть недостающим элементом?
  • Интеграция ASP.NET Core в WPF. Это вообще возможно?
  • Запустите отдельный веб-сервер (не являющийся хостингом) с веб-сервисами из приложения WPF. Звучит плохо.
  • Реализация веб-служб и запросов WCF.
  • ...

Как реализовать веб-сервер / службы на стороне WPF? Может быть, существует сторонний фреймворк, который может спасти меня от изобретения колеса?

PS. Есть похожий вопрос , как предоставить спокойный сервис внутри проекта WPF , но он устарел.

1 Ответ

1 голос
/ 04 июня 2019

Это звучит как ваше требование:

Приложение WPF должно иметь возможность предоставлять веб-API.Это может быть использовано веб-приложением.

Но тогда вы против единственного решения, которое сделает это возможным:

Запустите веб-сервер с веб-службами изприложение WPF.Звучит плохо.

Я не уверен, как еще вы ожидаете, что сможете представить веб-API без запуска веб-сервера?Внутри приложения пользовательского интерфейса вы захотите запустить Службу с собственным хостом.

Самостоятельный хостинг

В ServiceStack вы можете просто запустить Службу с собственным хостом в своем WPFПриложение, которое может быть автономным слушателем .NET Framework HTTP или ASP.NET Core в .NET Framework .Microsoft заявляет, что оба варианта будут поддерживаться на неопределенный срок, но .NET Framework постепенно прекращается, поскольку ASP.NET Core 3.0 будет работать только на .NET Core и .NET Framework, останавливая разработку на v4.x как .NET5 будет следующей версией .NET Core .

Но это не должно изменить то, какие решения доступны вам сейчас, если вам нужно запустить веб-сервис в WPF .NETFramework Framework. Вам потребуется запустить собственный сервер HTTP .NET Framework, который может быть автономным слушателем HTTP или приложением ASP.NET Core (в .NET FX).

...