由面向对象编程以及RESTful软件架构学习产生的想法(面向对象服务器设计)

来源:互联网 发布:如何查看淘宝卖家姓名 编辑:程序博客网 时间:2024/05/16 06:01

     写在前面的话:

      这些都是我个人不成熟的看法,想到什么就说什么,希望大家见仁见智。

     这几天学习了java面向对象编程,还有RESTful软件架构风格,突然有种融会贯通,水乳交融的感觉。从C语言到Java,从SOAP Web服务架构到RESTful Web服务架构,都走了同一条路,都是从面向过程设计到面向对象设计。C语言和Java之间的爱恨纠葛我就不说了,有过程序开发经验的人都懂。我说一说我对SOAP与RESTful设计之路的理解。

    SOAP=RPC+http+XML,:采用HTTP作为底层通讯协议;RPC作为一致性的调用途径,XML作为数据传送的格式,允许服务提供者和服务客户经过防火墙在INTERNET进行通讯交互。而RESTful=http+XML/json,REST 设计原则是遵循ROA(Resource-Oriented Architecture,面向资源的体系架构)进行设计。ROA 是什么?简单点说,ROA 是一种把实际问题转换成 REST 式 Web 服务的方法,它使得 URI、HTTP 和 XML 具有跟其他 Web 应用一样的工作方式。

     我们使用SOAP搞系统是这样的:

  1. 有新建用户功能
  2. 新建用户需要一个URL
  3. 往这个URL发送的数据要定义好
  4. 开始写后端和前端
     我们的Web 应用在使用REST架构来处理来自客户端的请求时,通常只考虑 GET 和 POST 这两种 HTTP 请求方法。实际上,HTTP 还有 HEAD、PUT、DELETE 等请求方法。而在 REST 架构中,用不同的 HTTP 请求方法来处理对资源的 CRUD(创建、读取、更新和删除)操作:
 
    若要在服务器上创建资源,应该使用 POST 方法。 
    若要检索某个资源,应该使用 GET 方法。 
    若要更改资源状态或对其进行更新,应该使用 PUT 方法。 
    若要删除某个资源,应该使用 DELETE 方法。
 
经过这样的一番扩展,我们对一个资源的 CRUD 操作就可以通过同一个 URI 完成了:
 
读取) [GET] http://www.example.com/photo/logo
仍然保持为 [GET] http://www.example.com/photo/logo
 
(创建)http://www.example.com/photo/logo/create
改为 [POST] http://www.example.com/photo/logo
 
(更新)http://www.example.com/photo/logo/update
改为 [PUT] http://www.example.com/photo/logo
 
(删除)http://www.example.com/photo/logo/delete
改为 [DELETE]  http://www.example.com/photo/logo
 
从而进一步规范了资源标识的使用。

总结
     因此,显而易见,SOAP是面向“操作”设计的,而RESTful是面向资源设计的。我们用程序设计的思维来解读,SOAP是面向过程设计的,RESTful是面向对象设计的。由此,我们纵观互联网的发展,程序设计与软件架构风格设计或多或少都是从面向过程设计走向面向对象设计。事实证明,这样的发展道路,极大地提高了我们整个软件系统的工作效率。而今,我们在服务器架构设计中,也可以套用这样的思维方式,因此,服务器设计也可以从面向过程设计走向面向对象设计。如,我们设置专用的业务服务器,业务服务器下属设立不同的组件服务器(图片服务器,文档服务器、缓存服务器等等),业务服务器使用组件服务器反馈的数据处理业务。对于组件服务器,我们运用封装、继承、多态的思想来设计,对外,只提供服务接口出来。根据这样的思维,我们就能开发一套服务器模版,降低服务器的架构成本,提高服务器的可复用性。这样,从程序设计、软件架构风格设计到服务器架构设计,都运用面向对象的方法,我认为,这可能将会更进一步地提高整体软件系统的运行效率。

0 0