有效构建Web服务的体系结构?

时间:2013-01-01 19:01:56

标签: web-services web-applications architecture

我最近正在开发一个Web服务项目,并意识到我对架构的选择非常低效。

我是以一种非常程序化的方式编写的,带有一些OOP和使用Python的标准异常处理。基本上,它将在程序上逐步执行数据,验证预期数据的存在,根据正则表达式验证数据,针对数据库验证某些数据,执行某些特定逻辑,检查错误,然后最终返回响应。提及使用JSON交换所有数据可能会有所帮助。

我试图回过头来看一下代码,发现任何重复的异常,并将它们的处理推到逻辑链的顶端。这并不像我希望的那样容易,实际上花费了更多的时间。它还使得我的代码更容易出错,因为它更少单元可测试并且更难阅读。

我注意到这种处理用户数据的程序代码范例很容易被Web开发所影响。例如,在PHP中处理Form时,可以在数据上运行一系列连续的isset()和!empty()方法。我对这种编码风格的问题在于,我觉得我花了大量的时间来编写错误事件,并且很难为这个特定的目的推广和重用代码。

通过使用表单类(例如Django),各种框架为此提供了很好的方法。但是,我注意到,虽然通过减少验证逻辑的重复来节省时间,但仍需要为每个预期输入“构建”一个表单。在处理软件即服务时,您可能需要编写数百种API方法。 OOP在这里提供了一个好处,但有时客户可能会设置一个奇怪的要求,从而消除所有效率。

Web应用程序可以从以下范例/体系结构(如MVC)中受益匪浅。根据我的个人经验,MVC(以及使用其原理的框架)并不适合这类问题。我考虑过使用功能语言,但还没试过。

是否有任何特定语言,架构/范例,约定甚至示例框架都非常适合开发自定义SASS或Web服务项目?

1 个答案:

答案 0 :(得分:2)

作为完成这项工作的人,我会说OOP和PHP的部分问题是因为最初PHP不是OOP语言。稍后将OOP添加到该语言中。因此,当您查看代码示例时,他们通常会有程序感。

近年来,我对Spring(Java)或WCF(C#)感到非常满意。这两种语言都是强类型的OO语言。从概念的角度来看,这导致了一个适合我的项目的范例。这是概述:

  1. 端点(REST或WSDL) - 类似于MVC中的视图
  2. 服务 - 这些服务根据需要提供端点并协调DAO。围绕您的业务逻辑组织这些
  3. 数据访问对象 - 将数据转换为本机对象,反之亦然。在您的数据源周围组织这些。
  4. 模型/ API - 支持应用程序的自然对象,并自动为您的服务提供文档。
  5. 希望有所帮助