Web Service接口设计
鉴于WS接口的调用方式和普通的API调用方式不一样,因此在设计WS接口时应该有一些其他的考量。以下是我的一些想法,做砖抛了。
1 接口命名的自描述性必须好。有时候查看一个WS会通过wsdl的方式查看,尤其是在跨平台的时候,一个自描述性好的API可以清楚的描述一个Service的功能,便于客户使用。
2 提供一些粗粒度的接口。在一个WS的调用周期中,SOAP中除去有效负载,光是SOAP头也是占用一定网络开销的,尤其是在有security的情况下。另外,client有可能网络带宽很小,比如只有几k【不是玩笑】。这个时候,让珍贵的网络去传输本质上没有意义的各种协议头就是极大的浪费。因此,可以在一个WS调用时多返回一些数据。
3 不要使用互通性不好的类做为接口的参数,比如List,Collection,当然数组是通用的。有些类在同一平台当然互通互联的非常好,但是WS的设计是要跨平台的使用,即使现在client和server在同一平台,并不代表以后在同一平台。需求总是变化的。
4 一个接口在语义上就是一个完整的service,不存在说调用Service A之前必须调用Service B。当应用security时比较特殊,但是security应该做为一种底层框架存在。对于服务编排,我的理解是小服务组合成大服务,而不是几个不完整的服务组合成一个完整的服务。
5 仔细定义服务的fault。和一般的Exception设计不太一样,边界上fault不宜设计的过于复杂。
6 当性能有问题时,可以考虑在SOAP上压缩。SOAP消息有时候是会很大的,几M,甚至10M+都是有可能的。而SOAP上一般为字符,字符的压缩比可是很高的。当有二进制文件传输时,可以考虑先转成字符串,比如Base64,然后压缩。
7 仔细考虑WS上的事务。全局性的事务在技术上相对是比较复杂的,有时只能通过自定义特定的rollback接口实现,增加了server和client的编程复杂性。
8 永远记着服务只有被调用才有价值,有时候是要用client的需求来驱动一下服务中接口定义的修改。一般先提供服务的一套最小接口集合,在理论上可以完成该服务的任何操作。后期根据client的需求,可以做一些接口级的修改,主要是加一些粗粒度的接口。虽然有可能破坏接口定义的整洁。但是还是那句话,服务只有被调用才有价值,client调用的舒服则更有价值。一般系统的client不会特别多的,这样做是值得的。当然,如果是开发通用的service平台,则更应该考虑service的设计,毕竟,不能为了讨一个客户的欢心,丢到其他所有人。
WS的接口设计就是一个多方面的考量后的妥协。好的程序员就是在种种考量后作出一个大家觉得都还不错的方案。
程序就是一门平衡的艺术。
分享到:
相关推荐
综上所述,T100 Web Service接口开发v1.5版是一个全面的解决方案,涵盖了接口设计、开发、测试和应用等多个环节。通过深入学习提供的文档、示例和库文件,开发者能够有效地利用这个接口实现T100PDA与其他系统的数据...
- **开发阶段**:快速验证Web Service接口设计,确保其符合预期的功能和性能要求。 - **测试阶段**:模拟不同场景下的调用,检查服务的稳定性和容错性。 - **维护阶段**:当服务出现故障时,通过历史记录和预览功能...
- **SOAP或RESTful API**:选择合适的Web Service接口设计风格,根据项目需求来决定是使用更传统的SOAP还是更现代的RESTful。 - **安全性策略**:如使用OAuth或JWT(JSON Web Tokens)进行身份验证,防止未授权访问...
商品混凝土实时生产调度系统的Web Service接口设计考虑到了这一需求,使得现场操作人员可以通过安装在手机或平板电脑上的应用程序,实时查看生产进度,接收调度指令,或者反馈设备状态,极大地提高了工作效率和响应...
2. Web Service接口设计:定义一个公共方法,如`GetPhoneLocation(string phoneNumber)`,该方法接收一个手机号码作为输入,返回归属地信息。这个方法会被客户端调用以获取所需信息。 3. 业务逻辑实现:在服务端,`...
5. **Web Service接口设计**:Web Service端应有一个接受图片数据的接口,通常是一个ASMX或WCF服务。接口设计需要考虑如何接收和存储二进制图片数据。可以定义一个接受Base64字符串的POST方法,然后在服务器端解码并...
3. **Web Service**:Web Service是一种通过网络提供服务的应用程序接口,允许不同系统间的互操作性。李维在书中深入讲解了Web Service的基本概念、架构和实现方法,包括WSDL(Web服务描述语言)和UDDI(统一描述、...
2. **Web Service定义**: Web Service的接口通常使用WSDL(Web Services Description Language)来定义,这是一种XML格式的文档,描述了服务的接口、消息格式、操作和地址。Delphi 6中的Soap Toolkit可以自动生成...
《实战Delphi6.Kylix2.SOAP.Web Service程序设计篇》是一本专注于利用Delphi6和Kylix2开发SOAP(简单对象访问协议)及Web Service应用的专业书籍。该书由李维撰写,旨在帮助读者深入理解并掌握如何在Delphi和Kylix...
文件"D6 SOAP_WEB SERVICE程序设计下.pdf"很可能是关于这个主题的详细教程或参考资料,可能涵盖上述步骤的深入讲解,包括代码示例、调试技巧和常见问题解决方案。 总的来说,Delphi结合SOAP协议,为开发者提供了一...
Web Service接口设计的核心在于定义服务的接口,包括输入、输出参数以及操作方法,这些信息都会在WSDL文件中详细描述。 使用**WebService Studio**,开发者可以执行以下操作: 1. **创建和编辑SOAP请求**:工具...
在本项目中,我们主要探讨如何使用SpringBoot、MyBatis和CXF框架来开发Web Service接口,并且数据库选用MySQL。这是一个完整的后端服务开发流程,涵盖了从数据存储到服务暴露的所有关键步骤。 首先,SpringBoot是...
* 文档优先(schema first):先设计或得到一个 XML schema/WSDL,然后再进行编码,发布 Web Service。 Binding Binding 是指 XML 文档和 POJO 对象的映射方式。通过绑定,可以实现将自定义类型的对象映射成 XML ...
H3 BPM(Business Process Management)标准Web Service接口V1.0是一套为支持业务流程管理而设计的Web服务接口规范。该版本旨在通过提供一系列标准化的服务接口来实现流程管理、组织管理及单点登录等功能,从而简化...
1. **Web Service接口设计**: - WSDL文件:定义了服务的接口、消息格式、操作和地址。这是服务提供者和消费者之间的合同,消费者可以根据WSDL来调用服务。 - SOAP协议:定义了消息结构和传输机制。消息通常包含...
在设计Web Service应用时,需要考虑到服务的接口、服务的实现、服务的注册和查询等问题。服务的接口需要使用标准的、规范的XML描述,服务的实现需要独立于软、硬件平台和编写服务所用的编程语言。服务的注册和查询...
在Web Service的技术栈中,WSDL(Web Service Description Language)是用于定义服务接口的规范,它描述了服务的地址、操作和输入/输出消息的结构。SOAP(Simple Object Access Protocol)则是一个轻量级的消息协议...
"PB11 開發Web Service 應用.pdf"文档很可能会包含具体的实例,指导开发者如何从头开始创建一个简单的Web Service,包括定义服务接口、实现业务逻辑、发布服务以及在PB11中创建客户端进行调用等步骤。 五、学习资源...
在"Delphi/Kylix SOAP/WEB SERVICE程序设计配书代码"这个压缩包中,包含的D6 SOAP/WEB SERVICE程序设计配书代码很可能是书本《Delphi/Kylix SOAP/WEB SERVICE程序设计》的示例源码。这些代码实例会涵盖如何创建SOAP...
《实战Delphi6/Kylix2/SOAP/Web Service程序设计篇》是一本专注于使用Delphi 6和Kylix 2开发SOAP(简单对象访问协议)和Web Service应用的实战指南。这本书的源码提供了丰富的实例,帮助读者深入理解如何在这些编程...