Может ли приложение Winforms / WPF выступать в роли HTTP-сервера? - PullRequest
2 голосов
/ 13 марта 2010

У меня рабочий стол написан с помощью Winforms. Теперь у меня есть просьбы, чтобы люди хотели получить доступ к данным с других машин. Сначала я подумал об обычном приложении клиент / сервер, но теперь думаю, что лучше всего было бы, если бы приложение могло выступать в роли HTTP-сервера и отправлять HTML в подключенные браузеры.

Кто-нибудь знает, есть ли библиотека для добавления функциональности HTTP-сервера в приложение? В идеале он мог бы обслуживать содержимое ASP.NET.

Ответы [ 5 ]

4 голосов
/ 13 марта 2010

Для размещения содержимого ASP.NET (например, страниц ASPX) из собственного приложения (без IIS) используйте классы в пространстве имен System.Web.Hosting.

Каноническим примером использования этого является автономный тестовый веб-сервер, который поставляется с Visual Studio (на основе «Cassini»). Исходный код "Кассини" доступен здесь: http://blogs.msdn.com/dmitryr/archive/2008/10/03/cassini-for-framework-3-5.aspx

Вот (несколько устаревшая) статья MSDN на эту тему: http://msdn.microsoft.com/en-us/magazine/cc188791.aspx

Ожидание того, что ваш сервер будет таким же надежным, как IIS, - это долгий путь. Так что не забудьте тщательно оценить свои потребности и управлять своими ожиданиями:)

2 голосов
/ 13 марта 2010

Как сказал Джон, вы можете использовать HttpListener для реализации HTTP-сервера. Сведения о доставке содержимого ASP.NET см. В пространстве имен System.Web.Hosting .

При проектировании следует помнить, что ваш HTTP-сервер будет доступен только во время работы приложения. Поэтому, когда пользователь настольного приложения закрывает его или выходит из системы, другие люди больше не смогут получить доступ к данным через ваш веб-интерфейс. Поэтому вы можете пересмотреть свой подход и вместо этого выделить функции доступа к данным в отдельную библиотеку DLL, которую затем можно вызвать из приложения ASP.NET, размещенного на IIS.

1 голос
/ 13 марта 2010

Вы можете сделать это абсолютно. Посмотрите на HttpListener. Я не думаю, что он может легко разместить полноценный ASP.NET, хотя я уверен, что есть способы сделать это. Отправка простого HTML не сложна.

Сказав это, я не уверен, что клиент / сервер не будет лучшей моделью:

  • Как другие люди узнают, к какой машине подключаться?
  • Что если вы случайно закроете приложение, когда его используют другие люди?
  • Что если вы хотите выключить или перезагрузить компьютер?
  • Вероятно, его будет сложнее запустить, чем обычное приложение ASP.NET.

Практически все инструменты настроены так, чтобы облегчить размещение ASP.NET на сервере. Где преимущество в объединении клиента и сервера здесь?

0 голосов
/ 13 марта 2010

Я бы порекомендовал пойти другим путем: измените приложение для настольного компьютера, чтобы общаться с коммерческим сервером базы данных, таким как sql server express, а затем создайте свой веб-сайт, чтобы также общаться с этой базой данных.

0 голосов
/ 13 марта 2010

Вы можете рассмотреть возможность выделения кода HttpListener и разработки службы Windows, которая работает, пока ваша машина работает. Это позволит вам обслуживать HTML долгое время без необходимости постоянного запуска вашего настольного приложения и без необходимости приобретать веб-сервер, такой как IIS.

Если вы хотите разрешить общение с более широкой гетерогенностью клиентов, чем просто браузеры, загляните в WCF. Используя WCF, сервис может быть размещен любым приложением .NET; beit Winforms, WPF, Windows Service, ASP.NET, Console и т. д., позволяющие осуществлять связь через различные среды HTTP, TCP, именованные каналы и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...