Я работаю над мобильным приложением для iOS / Android / windows и ищу способ реализации службы HTTP в этом приложении.
Основные вопросы рабочего процесса:
- Служба HTTP будет использоваться в веб-просмотре в том же приложении.
- Веб-просмотр будет загружать ресурсы с назначенного веб-сайта, а также загружать дополнительные ресурсы из локальной службы HTTP.
- Если возможно, веб-просмотр сможет загрузить дополнительные ресурсы из нелокальной службы HTTP, то есть службы, которая находится на другом телефоне, возможно, на другом NAT.Таким образом, служба HTTP должна быть в состоянии выполнить NAT-обход.
Я новичок в нативной разработке приложений, поэтому я не уверен в своих предположениях и осуществимости моих целей.В частности, на ум приходят следующие общие вопросы:
- Можно ли вообще запустить такой веб-сервис в фоновом режиме, который не будет автоматически останавливаться (например, в iOS) после выхода из приложения?
- Возможно ли сделать это в Xamarin, или я должен приложить свои усилия к разработке индивидуальных решений для каждой платформы независимо.
- Как насчет песочницы?Чего следует ожидать с точки зрения ограничений, накладываемых каждой платформой?
Несколько замечаний о шифровании.Если, скажем, веб-просмотр обращается к веб-сайту с использованием HTTPS, и я хочу, чтобы он также загружал ресурсы из локального веб-сервиса
- Должен ли локальный веб-сервис обслуживать ресурсы по HTTPS?в противном случае у меня будет страница со смешанным содержимым, которая будет заблокирована различными браузерами, если не будет работать с использованием обратной связи 127.0.0.1 (т.е. при попытке доступа к этой службе с других устройств ..)?
- И в любом случае это будетзаблокирован iOS даже с обратной связью?
- Так что HTTPS в основном необходим для моего использования?Если это действительно необходимо, могу ли я использовать самозаверяющий сертификат для каждого клиента и, возможно, каким-то образом настроить веб-просмотр для принятия самозаверяющих сертификатов или мне нужен доверенный сертификат?
- Если мне нужен доверенный сертификат, могу ли яЯ использую такой сервис, как letsencrypt, чтобы выдавать сертификаты своим клиентам?даже если клиенты просто простые приложения и у них нет зарегистрированных доменных имен и т. д.?
Что я сделал до сих пор:
- Я проверил это библиотека, но кажется они не поддерживают HTTPS
- Я проверил библиотеку EmbedIO , но кажется они не поддерживают HTTPS
- Я подумал, что мог бы использовать WebApi с OWIN и ядром ASP.NET, но, насколько я понимаю, это не совместимо с iOS
- Я пытался использовать .Net HttpListener.Насколько я понимаю, он должен поддерживаться на всех соответствующих платформах в стандарте .Net 2. Я использовал пример из здесь для встраивания слушателя в приложение форм xamarin, но не смог заставить его работать(пробовал как на droid, так и на UWP, я настроил соответствующие разрешения, но по какой-то причине мне не удалось получить никаких соединений).Если я встраиваю тот же код в стандартное консольное приложение, оно работает.
- Если это работает, и я просто что-то делаю неправильно, или есть какие-то ограничения, которые я упустил из виду
- Если такой подход должен работать, будет ли возможна поддержка HTTPS и NAT traversalа также?
- Я обнаружил эту предварительно выпущенную библиотеку, но еще не пробовал экспериментировать с ней, интересовался, можно ли ее использовать для установки сертификата для каждого клиента ииспользуйте его в HttpListener.
- Я нашел эту библиотеку для обхода Nat, но еще не пробовал экспериментировать с ней.