2013-12-16 86 views
0

我有我的第一份工作/责任,即从头开始设计和实现一个由外部系统(其他公司)使用的web服务(java,spring)。我很高兴有机会,但同时,因为这是我的第一次尝试,我想确保我给我最好的... 我相信我必须考虑以下因为我与设计进化: 1.伸缩性&最小延迟 2. SLA附着(例如为2秒端对端) 3.支持不同的媒体类型(SOAP,POX,JSON)SOAP/REST Web服务 - 基础架构和最佳实践

我们目前在限定所述合同的相位和在我们这样做的时候,我想确保除了我可以照顾自己的应用程序级别细节之外,我还应该能够考虑基础架构方面的挑战(服务器,可伸缩性等)。

我期待在这方面得到一些帮助,如果你可以根据你过去的经验做出回答,或者指出一些能帮助我前进的资源。

P.S. : - 我已经意识到与安全相关的因素,定义wsdl中的策略以及其他应用程序级别考虑因素。我主要关心的是基础设施层面的选择和决策。

谢谢!

回答

1

恭喜您的新任务!他们必须想你很多,给你这么大的责任。

至于你的问题,我看着一个Web服务API就像一个传统的Web应用程序。唯一的区别是你的客户很可能是代码而不是人。因此,您已经知道的所有相同的Web应用程序可伸缩性原则 - 对Web服务器进行负载均衡,在数据库上构建索引和视图,缓存 - 在这里也适用。你不应该这样想。同样,请确保使用JMeter或商业产品进行性能测试是您的持续集成基础架构的一部分。

至于支持不同的媒体类型,我不知道你的意思。既然你提到过春天,春天和Spring Web Services将涵盖你需要快速发展的一切。有许多API级别的事情,如身份验证,授权,日志记录,审计,错误处理等,您将需要解决。有很多资源可以回答你的具体问题。

我还可以说一件事。请注意耦合。你的WSDL和REST API肯定会发展很多。确保以这些更改不会影响其他代码库的方式进行编码。或者你将在很多周末工作,在一个小小的改变之后解决所有问题。

祝您的项目顺利!

+0

谢谢你,Vidya。这有助于。通过说“支持不同的媒体类型”,我的意思是支持SOAP,POX,JSON等不同类型消息格式的相同Web服务。这在Web服务领域更为正式地称为“媒体类型谈判”。 – rbhojan

+0

另外,您是否能够对Application Server的选择有所了解?我们选择哪个应用服务器真的很重要吗?作为我们现在的小公司,我们主要依靠开源软件。因此,我们一直在使用JBOSS,ActiveMQ等。我想知道当我们最终变得更大并且我们的Web服务的容量更大时,是否会有相同的解决方案存在任何限制,或者我们是否应该考虑使用授权的应用程序服务器以及来自IBM,Oracle等的消息传递框架 – rbhojan

+0

我已经做了很多工作来支持不同的媒体类型,但我从来没有听说过“媒体类型谈判”这个词。这很花哨。这也很简单。通过REST,可以将服务配置为根据“Content-Type”和“Accept”标头自动区分。 – Vidya