我有一个做很多事情的网络服务。它可以做的事情的一个简单示例(请注意示例):
- 退货产品清单
- 更新产品价格
- 添加新产品
- 更新现有产品
- 退货商品价格
- 返回产品手册+图片
- 添加产品手册+图片
前 5 个服务非常简单,因为向 SOAP Web 服务发送了一个请求,它要么返回一个列表,要么更新数据库中的现有行或创建一个新行。
最后两个有点棘手,因为它们涉及将二进制文件发送到服务并从服务接收二进制文件。
在服务端实现 SOAP 服务是没有问题的。我已经有了一个框架,我现在只需要实现这些服务。我遇到的问题是如何实现将使用这些服务的客户端。
我一直在阅读有关 SOAP 客户端的信息,并且知道我可以将文件作为 SOAP 附件发送,但我不太明白如何将其转换为 HTTP 请求。
问题:
- 我希望客户端成为 Web 门户,但我不太确定如何从 Web 浏览器调用 Web 服务。这可能吗?
- 浏览器中的 Web 服务调用如何工作?这是一个正常的 HTTP 调用吗?
- 最重要的是,二进制文件的上传/下载如何工作?
- 在保护请求方面,哪个更安全?基于 Web 门户的客户端还是基于胖客户端的客户端?
- 使用 Java Web Start/JNLP 代替 Web 门户或胖客户端有什么优势吗?
- 是否可以在 Web 门户和 Web 启动之间混合和匹配以进行二进制数据传输?
- 从 Web 门户(即从 Web 浏览器)调用 Web 服务是常见的做法吗?
我认为另一种选择是将客户端实现为胖客户端(桌面应用程序)。问题是我在基于 GUI Swing 的应用程序方面经验不足。
该解决方案的一个重要方面是它必须是安全的,因此无论我使用哪种方法都需要使用证书进行保护。大多数服务将使用 Spring 技术实现。我正在为 Web 服务使用 Spring-WS,如果它可以用作 Web 门户,我可能会使用 Spring-MVC。
Web 服务和 Web 应用程序都将在同一个应用程序服务器中运行。