• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 跨越邊界: REST on Rails

    發表于:2007-06-21來源:作者:點擊數: 標簽:
    下一頁 1 2 3 4 5 過去的 20 年間,一個趨勢主導了商業軟件工具的 開發 :用復雜性對抗復雜性。這一趨勢在任何地方都沒有比在分布式計算領域更明顯。C 和 Java 社區已經看到一些驚人復雜的框架被構建出來支持分布式通信。 分布式計算環境(DCE)支持用 C 語

    下一頁 1 2 3 4 5 

       

       過去的 20 年間,一個趨勢主導了商業軟件工具的開發:用復雜性對抗復雜性。這一趨勢在任何地方都沒有比在分布式計算領域更明顯。C 和 Java™ 社區已經看到一些驚人復雜的框架被構建出來支持分布式通信。

    分布式計算環境(DCE)支持用 C 語言編寫的應用程序之間的遠程過程調用。公共對象請求代理架構(CORBA)標準支持面向對象應用程序之間的通信。企業 JavaBean(EJB)規范提供安全性、持久性、事務、消息和遠程的服務。對各個框架的宣傳甚囂塵上,但是這些框架都沒有滿足預期,有些甚至因為它們的復雜性而成為災難。在這些框架中,只有 EJB 3.0 屬于大力簡化的結果,有潛力在分布式應用程序上成功。市場可能給、也可能不給這個面臨強敵的框架另一個空間,但 EJB 仍然需要交付使用。

        最新的大型分布式框架是 Web 服務。Web 服務技術讓應用程序可以用平臺獨立或編程語言獨立的方式相互通信。Web 服務標準也受到復雜性惡魔的威脅,但是稱作 REST 的替代策略承諾了更簡單的方式。本文介紹了如何在 Ruby on Rails 中添加 REST 風格的 Web 服務,并從 Ruby 和 Java 代碼調用服務。


    跨越邊界: REST on Rails(圖一)
    關于本系列

    在 跨越邊界 系列中,作者 Bruce Tate 推動了這樣一個概念:今天的 Java 程序員通過學習其他方法和語言,可以受益。編程陣營中 Java 技術是所有開發項目最佳選擇的情況已經變了。其他框架正在改變 Java 框架構建的方式,從其他語言學到的概念有助于 Java 編程。編寫的 Python(或 Ruby、Smalltalk 或 ……)代碼可以改變 Java 編碼的方式。

    本系列介紹了與 Java 開發有根本不同,但是卻直接適用的編程概念和技術。在某些情況下,需要集成這些技術以利用它。在其他情況下,將可以直接應用這些概念。單獨的工具不如其他語言和框架中影響 Java 社區的開發人員、框架甚至基本方法的思想重要。

    Web 服務領域

        就像 EJB、CORBA 和 DCE 一樣,Web 服務的核心抽象也是遠程過程調用。Web 服務利用叫做 SOAP(最初,SOAP 代表簡單對象存取協議,但是這個術語現在降級了)的協議,用 XML 表示消息的結構。這里有一個技巧:如果協議用代表簡單的 S 開始,那它就不簡單。Web 服務定義語言(WSDL)提供了服務的標準規范。像 SOAP 一樣,WSDL 也是一個棘手而復雜的 API,而 SOAP 和 WSDL 僅僅涉及到了構成 Web 服務這個大怪物的眾多 API 的表面。Web 服務需要一次大修,感謝 Roy Fielding 的一份有影響的博士論文,Web 服務得到了大修。

        Fielding 的論文描述了 REST 應用程序聯網策略。REST 與全堆棧 Web 服務根本不同,主要原因有三個:

    • REST 的核心抽象是遠程資源而不是遠程過程調用。
    • REST 沒有發明一個詳盡的標準列表,而是采用現有的 Internet 標準,包括 HTTP、XML 和 TCP/IP。
    • REST 沒有覆蓋每個可能場景,而是覆蓋了最常見的問題。

        請把 REST 想像成瀏覽。REST 客戶使用與瀏覽器相同的 HTTP 命令訪問資源。當 REST 客戶訪問到資源的表示時,客戶轉換到一個狀態。使用不同的 HTTP 命令,REST 客戶可以創建、讀取、更新或刪除資源的記錄。

        例如,以典型的博客為例。通過輸入 URL,例如 blog.rapidred.com,得到貼子的列表。然后,如果想編輯博客條目,可以在 URL 中輸入 HTTP 參數(例如 blog.rapidred.com/edit?article=12345),然后顯示編輯表單。由于每個博客條目都有自己的 URL,所以點擊鏈接或直接輸入 URL,就可以用 HTTP 命令讀取、修改或刪除內容。

    簡而言之,REST 可以:

    • 用 TCP/IP 命名標準命名 Web 上的資源
    • 用 HTTP 查詢和操縱這些資源
    • 使用基于文本的標準消息格式(例如 XML 或 HTML)來構造數據

    Ruby on Rails 用 REST 對 Web 服務提供了優秀的支持。

    Action Web Services 概述

        Rails 用叫做 Action Web Services 的模塊實現 Web 服務。許多開發框架鼓勵視圖和 Web 服務使用獨立的控制器。這個策略可以維護控制器之間的風格一致。問題是針對所服務的每種內容,都需要一個新控制器。例如,Ajax 用戶界面要求從控制器取得到 JavaScript 的遠程 XML 調用。

        不必為 Web 服務專門分配一個控制器,使用 Rails,可以通用地用同一個控制器向基于 HTML 的視圖、基于 XML 的 Web 服務和基于 XML 的 JavaScript 組件提供內容。理解 Action Web Services 的最好方式就是在工作應用程序的環境下查看它的實際作用。

        請用自己選擇的數據庫管理器創建一個叫做 service_development 的數據庫。接下來,用以下命令創建 Rails 項目和模型:

    > rails service 
    > script/generate model Person
          

        在生成模型之后,就有了一個叫做 db/migrate/001_create_people.rb 的遷移。請把這個遷移編輯成像清單 1 一樣:


    清單 1. people 表的遷移

    class CreatePeople < ActiveRecord::Migration
      def self.up
        create_table :people do |t|
          t.column :first_name, :string, :limit => 40
          t.column :last_name, :string, :limit => 40
          t.column :email, :string, :limit => 40
          t.column :phone, :string, :limit => 15
        end
      end
      def self.down
        drop_table :people
      end
    end
          

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>