Web services SOAP/REST Web服务-基础架构和;最佳做法

Web services SOAP/REST Web服务-基础架构和;最佳做法,web-services,jax-ws,jax-rs,spring-ws,infrastructure,Web Services,Jax Ws,Jax Rs,Spring Ws,Infrastructure,我的第一份工作/职责是从头开始设计和实现web服务(java、spring),供外部系统(其他公司)使用。我对这个机会感到兴奋,但同时,由于这是我的第一次尝试,我想确保我能做到最好。。。 我确信我必须考虑以下内容:随着设计的发展: 1.可扩展性和最小延迟 2.SLA遵守情况(例如,端到端为2秒) 3.支持不同的媒体类型(SOAP、POX、JSON) 我们目前处于定义合同的阶段,而我们这样做的时候,我想确保除了我能照顾自己的应用程序级别的细节之外,我也应该能够考虑基础设施方面的挑战(服务器、可扩展

我的第一份工作/职责是从头开始设计和实现web服务(java、spring),供外部系统(其他公司)使用。我对这个机会感到兴奋,但同时,由于这是我的第一次尝试,我想确保我能做到最好。。。 我确信我必须考虑以下内容:随着设计的发展: 1.可扩展性和最小延迟 2.SLA遵守情况(例如,端到端为2秒) 3.支持不同的媒体类型(SOAP、POX、JSON)

我们目前处于定义合同的阶段,而我们这样做的时候,我想确保除了我能照顾自己的应用程序级别的细节之外,我也应该能够考虑基础设施方面的挑战(服务器、可扩展性等)。p> 我期待着在这方面得到一些帮助,如果你能根据你过去的经验回答,或者指出一些有助于我前进的资源

附言:我已经知道与安全相关的因素,在wsdl中定义策略,以及其他应用程序级别的注意事项。我主要关心的是基础设施层面的选择和决策


谢谢

祝贺你获得新的任务!他们一定很看重你,给了你这么大的责任

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

至于支持不同的媒体类型,我不知道你的确切意思。既然你提到了Spring,Spring和Spring将涵盖所有你需要的东西,让你快速前进。有许多API级别的东西,如身份验证、授权、日志记录、审核、错误处理等,您需要解决这些问题。有很多资源可以回答您的具体问题

有一件事我也可以说。请小心接头。您的WSDL和RESTAPI肯定会有很大的发展。确保您的编码方式确保这些更改不会影响代码库的其余部分。或者你会在周末工作很多,在一个小小的改变后,去修复一切


祝你的项目好运

谢谢你,维迪亚。这很有帮助。我所说的“支持不同的媒体类型”,是指相同的web服务支持不同类型的消息格式,如SOAP、POX、JSON。在Web服务的世界中,这更正式地称为“媒体类型协商”。另外,您能否对应用程序服务器的选择提供一些帮助?我们选择哪个应用服务器真的很重要吗?作为我们现在的小公司,我们主要依靠开源的东西。因此,我们一直在使用JBOSS、ActudiMQ等。我想知道,当我们最终变得更大并拥有更多的Web服务量时,使用相同的解决方案是否有任何限制,或者我们应该考虑使用IBM的授权应用服务器和消息框架。Oracle等。我已经做了很多工作来支持不同的媒体类型,但我从来没有听说过“媒体类型协商”这个词哈哈。那太好了。这也很简单。使用REST,服务可以配置为根据
内容类型
接受
标题自动区分。开源就可以了。事实上,我会选择JBoss等作为我的堆栈,同时根据需要向RedHat支付支持费用。我不认为您可以将SOAP和REST结合在一个内容协商应用程序中。根据我的经验,肥皂和休息(很遗憾)是两件不同的事情。。您可以使用SpringMVC和内容协商视图解析器(对于REST)在JSON、XML和任何您喜欢的内容之间切换。例如,基于URL中的文件扩展名。对于SOAP,您可以使用SpringWS。