如何评估 Web 服务框架
How to evaluate a web service framework
我正在尝试评估不同的 Web 服务框架,以便在 .Net 中进行 API 开发。到目前为止,我一直在关注的框架是:
- 服务堆栈
- MVC
- 网络API
- 南希福克斯
我试图找到框架之间的一些共同话题,以便我知道在选择框架时要寻找什么。到目前为止,我的谈话要点是:
- 框架的信念和原则
- 框架的架构(客户端和服务端)
- 框架为您提供的Stack
- 堆栈内的开发简易性(插件等)
- 端到端性能基准测试
- 可扩展性基准
- 框架文档可用性
- 框架支持(跨平台等)
- 定价
- 总体结论
有人能想到我应该考虑的其他事情吗?在研究结束时,我希望详细介绍每个框架并进行比较为特定目的选择的框架。任何帮助将不胜感激。
端到端生产力 - 服务的核心本质是提供服务,最终为消费者带来一些价值。因此,消费服务的端到端生产力也应该被强烈地考虑为可以从客户那里消费服务的容易程度和消费它们的最少努力,最终为客户提供更多价值,这通常比开发生产力更有价值服务本身,因为价值在其多个消费者中成倍增加。随着许多服务的不断发展,更新服务的开发工作流程以及确定更改内容的难易程度(即它们是否具有静态 API)也会影响客户端的工作效率。
互操作性 - 服务的另一个目标是互操作性以及从异构环境中使用服务的程度,大多数 Web 服务框架只执行 HTTP,但在许多情况下,在 Intranet 环境中发送API 通过 MQ 请求更合适,因为它提供比 HTTP 更大的弹性、时间解耦、自然负载平衡、解耦端点、改进的消息传递工作流和错误恢复等。还有许多企业(和企业产品) 仍然只支持或强制执行 SOAP,因此拥有 SOAP 端点和支持 XSD/WSDL 元数据也很有价值。
Versionability - 一些 API 设计自然更适合版本控制,其中可以在不破坏现有服务消费者的情况下增强不断发展的服务的防御性。
可测试性和可模拟性 - 您还需要比较可以测试和模拟哪些服务的难易程度,以确定创建集成测试的难易程度以及是否需要新知识和基础设施以及它支持并行客户端开发的难易程度,这在前端和后端团队并行开发解决方案时非常重要,其中可以在开发之前设计和商定服务的 API 合同,以确保它满足实施前的必要需求,那么前后端团队可以相互独立实施。如果尚未实施服务,则客户端需要 "mock" 服务响应,直到它们已经实施,然后在实施后切换到使用实际服务。
可学习性开发服务的直观程度、所需的认知和概念开销的数量也会影响生产力以及推理服务框架如何工作和做什么的能力对您的解决方案的整体复杂性和您的团队做出影响性能和可伸缩性的明智实施决策的能力以及提升新开发人员学习您的解决方案所需的努力有影响。
我正在尝试评估不同的 Web 服务框架,以便在 .Net 中进行 API 开发。到目前为止,我一直在关注的框架是:
- 服务堆栈
- MVC
- 网络API
- 南希福克斯
我试图找到框架之间的一些共同话题,以便我知道在选择框架时要寻找什么。到目前为止,我的谈话要点是:
- 框架的信念和原则
- 框架的架构(客户端和服务端)
- 框架为您提供的Stack
- 堆栈内的开发简易性(插件等)
- 端到端性能基准测试
- 可扩展性基准
- 框架文档可用性
- 框架支持(跨平台等)
- 定价
- 总体结论
有人能想到我应该考虑的其他事情吗?在研究结束时,我希望详细介绍每个框架并进行比较为特定目的选择的框架。任何帮助将不胜感激。
端到端生产力 - 服务的核心本质是提供服务,最终为消费者带来一些价值。因此,消费服务的端到端生产力也应该被强烈地考虑为可以从客户那里消费服务的容易程度和消费它们的最少努力,最终为客户提供更多价值,这通常比开发生产力更有价值服务本身,因为价值在其多个消费者中成倍增加。随着许多服务的不断发展,更新服务的开发工作流程以及确定更改内容的难易程度(即它们是否具有静态 API)也会影响客户端的工作效率。
互操作性 - 服务的另一个目标是互操作性以及从异构环境中使用服务的程度,大多数 Web 服务框架只执行 HTTP,但在许多情况下,在 Intranet 环境中发送API 通过 MQ 请求更合适,因为它提供比 HTTP 更大的弹性、时间解耦、自然负载平衡、解耦端点、改进的消息传递工作流和错误恢复等。还有许多企业(和企业产品) 仍然只支持或强制执行 SOAP,因此拥有 SOAP 端点和支持 XSD/WSDL 元数据也很有价值。
Versionability - 一些 API 设计自然更适合版本控制,其中可以在不破坏现有服务消费者的情况下增强不断发展的服务的防御性。
可测试性和可模拟性 - 您还需要比较可以测试和模拟哪些服务的难易程度,以确定创建集成测试的难易程度以及是否需要新知识和基础设施以及它支持并行客户端开发的难易程度,这在前端和后端团队并行开发解决方案时非常重要,其中可以在开发之前设计和商定服务的 API 合同,以确保它满足实施前的必要需求,那么前后端团队可以相互独立实施。如果尚未实施服务,则客户端需要 "mock" 服务响应,直到它们已经实施,然后在实施后切换到使用实际服务。
可学习性开发服务的直观程度、所需的认知和概念开销的数量也会影响生产力以及推理服务框架如何工作和做什么的能力对您的解决方案的整体复杂性和您的团队做出影响性能和可伸缩性的明智实施决策的能力以及提升新开发人员学习您的解决方案所需的努力有影响。