java - 制作网络服务,采用哪种方法?

标签 java iphone ios jakarta-ee soap

我制作了一个 Java EE 6 应用程序,用户可以在其中浏览一组问题、添加新问题等。用户可以选择登录,以便他/她因添加问题或报告问题而获得“荣誉”。

现在我想制作一个 iPhone 应用程序,用户可以在其中执行几乎相同的操作。所以我认为答案是网络服务。我以前没有使用过 Web 服务,但我发现至少有替代方案:SOAP 和 REST。

我应该选择哪一个?我希望用户能够从应用程序登录并浏览数据库中的问题...几乎可以在网站上执行许多操作。

我不太了解它们带来的安全性和开销。

此外,我希望用户能够通过网络服务器检索问题列表并可以选择保存它,因此他/她不需要互联网,除非他/她想要更新它。我可以使用这两种网络服务来实现这一目标吗?

最佳答案

REST 的开销比 SOAP(WSDL 契约、XML 消息、支持框架)更少,因此当客户端是移动设备时,REST 似乎更合适。您可以使用 JAX-RS ( Jersey ) 在服务器端轻松创建 REST 服务。客户端请求由 url 结构和/或参数组成,如 http://yourserver/questions/view/342 (查看问题 342)或 http://yourserver/questions/search?q=REST+vs+SOAP (搜索有关 REST 与 SOAP 的问题)。响应可以是您想要的任何内容,但 XML 或 JSON 非常常见。

选择 REST 意味着您将严重依赖 HTTP 协议(protocol)。为了安全起见,常见的方法是使用 HTTP Basic authentication与 https 结合使用。基本身份验证意味着您将“身份验证:” header 添加到包含 Base64 编码的用户名:密码对的 HTTP 请求中。请注意,Base64 不会加密任何内容,它只是进行混淆。为了避免窃听,您至少需要使用 https这意味着请求是使用服务器的公钥加密的。这些请求只能用服务器的私钥解密。要使用 https,您需要 set up the server with a certificate .如果您想避免有关证书“不受信任”的警告,则需要由 recognized SSL certificate provider 颁发该证书。 .为了进行测试,您可以自己生成它。

最后,您询问了有关保存问题列表以供离线使用的问题。这是应用程序的问题,而不是服务的问题。为此,您需要将检索到的数据存储在设备上,并在设备离线时访问该数据。我不是 iPhone 开发人员,但我可以想象您可以使用平面文件或一些轻量级数据库来存储数据。当设备离线时,检索数据的应用程序组件应从网络访问切换到本地存储访问。此外,某些应用程序功能(例如添加问题)可能需要禁用。如果您不禁用这些功能,则需要临时存储用户输入的所有数据,并在设备再次上线时将其发送到服务器。这可能有点棘手,所以我的建议是稍后再做。

关于java - 制作网络服务,采用哪种方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9031112/

相关文章:

java - BufferedImage 字节数组操作影响相邻像素

iphone - Xcode 4. 3's ' 估计的应用程序商店大小与 .ipa 文件有很大不同,为什么?

ios - Skype iPhone 应用程序 URL 方案

ios - 获取我附近的清真餐厅的列表FourSquare API

java - JAXB 重命名属性

java - Spring-boot + Apache Camel + 嵌入式 tomcat 显示 SQS 删除时收据句柄已过期。在外部 tomcat 中工作正常

ios - 如何给 UITableView 底部空白区域染色?

ios - 多线程联系人同步

ios - Swift - 滚动 Collection View 时标签移动到单元格的左上角

java - 使用 SSL 的 JAX-WS Web 服务