我正在开发适用于iOS / Android / windows的移动应用程序,我正在寻找一种在该应用程序中实现HTTP服务的方法。
基本工作流程注意事项:
- HTTP服务将在同一应用程序的Web视图中使用。
- 该Web视图将从指定的网站加载资源,另外还将从本地HTTP服务加载其他资源。
- 如果可能的话,网络视图将能够从非本地HTTP服务(即驻留在另一部电话(可能位于其他NAT)上的服务)中加载其他资源。因此,HTTP服务应该能够执行NAT遍历。
我是本机应用程序开发人员的新手,所以我不确定我的假设和目标的可行性。具体来说,这些一般性问题浮现在脑海:
- 是否有可能在后台运行这样的Web服务,一旦退出该应用程序就不会自动停止(例如在iOS中)?
- 是否可以在Xamarin中做到这一点,还是应该为每个平台独立地为自己量身定制解决方案?
- 沙箱怎么样?就每个平台施加的限制而言,我应该期待什么?
关于加密的一些注意事项。如果说Web视图正在使用HTTPS访问网站,并且我希望它也从本地Web服务加载资源
- 本地Web服务是否必须在HTTPS下提供资源?否则,我将有一个内容混合的页面,如果不使用回送127.0.0.1进行服务(即,当尝试从其他设备访问该服务时,该页面)将被不同的浏览器阻止。
- 而且无论如何,即使有环回,它也会被iOS阻止?
- 所以对于我的用例来说,HTTPS基本上是必须的吗?如果确实是必须的,是否可以为每个客户端使用自签名证书,并可能以某种方式将Webview配置为接受自签名证书?还是需要受信任的证书?
- 如果我需要受信任的证书,我可以使用letencrypt之类的服务向我的客户颁发证书吗?即使客户端只是简单的应用,而他们却没有任何注册域名等?
我到目前为止所做的:
- 我检查了this库,但似乎they don't support HTTPS
- 我检查了EmbedIO库,但似乎they don't support HTTPS
- 我以为我可以将WebApi与OWIN和ASP.NET核心一起使用,但是据我所知,这与iOS不兼容
- 我尝试使用.Net的HttpListener。据我了解,.Net标准2下的所有相关平台均应支持它。我使用了here中的示例将侦听器嵌入到xamarin表单应用程序中,但无法正常工作(尝试在droid和UWP上,我都配置了相关权限,但由于某种原因,我没有设法接收任何连接)。如果我在标准控制台应用程序中嵌入相同的代码,则它确实可以工作。
- 这是否应该起作用,我是在做错什么,还是我忽略了任何限制
- 如果这种方法行得通,是否还可以支持HTTPS和NAT遍历?
- 我发现了this个预发布的库,但尚未尝试对其进行试验,想知道该库是否可用于为每个客户端安装证书并在HttpListener中使用它。
- 我发现了this个用于Nat遍历的库,但是还没有尝试进行实验。