<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      REST筆記(三):一種標準的超媒體格式:Atom

        前面一節中講述了REST架構風格中最核心本的要素之一:超媒體格式。雖然超媒體格式有很有用,如能被瀏覽器很好解析的HTML。但是HTML也不是萬能的。如我們在AJAX應用中,使用JSON表述格式很顯然比HTML要好。再者,我們為了實現某一特定領域而采用自定義的超媒體格式,如果消費者只需要處理表述中的一小部分,雖然我們可以通過獲取資源的表述,然后過濾出我們需要處理的資源,但這顯然不是一種好的方式。Atom社區所制定了一條深受歡迎的慣例。

      目錄:
        1、Atom簡介
        2、Atom1.0與RSS2.0
        3、Atom中基本概念介紹
        4、Atom中的鏈接關系
        5、.Net FCL中對Atom的實現
        6、Atom的用途

        1、Atom簡介
      Atom:Atom聯合格式(Atom Syndication Format)的簡稱。它是 一種基于XML的超媒體格式。它提供了靈活可擴展的互操作的格式,并且因為基于XML的特點,所以它為跨平臺的應用間傳遞數據提供了很好的支持。是IETF的“建議標準”。Atom作為一種流行的超媒體格式已經被Google等廣泛使用。下圖為一Atom格式實例:

        

        2、Atom1.0與RSS2.0
      說起Atom可能有點陌生,但是對RSS都應該比較熟悉。Atom的出現彌補了RSS中的一些不足。維基百科中敘述如下:
        1、RSS 2.0 可能包含文本或經過編碼的HTML內容,同時卻沒有提供明確的區分辦法;相比之下,Atom 則提供了明確的標簽(也就是typed)。
        2、RSS 2.0 的 description 標簽可以包含全文或摘要(盡管該標簽的英文含義為描述或摘要)。Atom 則分別提供了 summary 和 content標簽,用以區分摘要和內容,同時 Atom 允許在summary中添加非文本內容。
        3、RSS 2.0 存在多種非標準形式的應用,而 Atom 具有統一的標準,這便于內容的聚合和發現。
        4、Atom 有符合XML標準的命名空間,RSS 2.0 卻沒有。
        5、Atom 通過XML內置的xml:base標簽來指示相對地址(URI),RSS 2.0 則無相應的機制區分相對地址和絕對地址。
        6、Atom 通過XML內置的xml:lang,而 RSS 采用自己的language標簽。
        7、Atom 強制為每個條目設定唯一的ID,這將便于內容的跟蹤和更新。
        8、Atom 1.0 允許條目單獨成為文檔,RSS 2.0 則只支持完整的種子文檔,這可能產生不必要的復雜性和帶寬消耗。
        9、Atom 按照RFC 3339標準(ISO 8601標準的一個子集)表示時間 ,而RSS 2.0 中沒有指定統一的時間格式。
        10、Atom 1.0 具有在 IANA 注冊了的 MIME 類型,而 RSS 2.0 所使用的 application/rss+xml 并未注冊。
        11、Atom 1.0 標準包括一個 XML schema,RSS 2.0 卻沒有。
        12、Atom 是IETF組織標準化程序下的一個開放的發展中標準,RSS 2.0 則不屬于任何標準化組織,而且它不是開放版權的。

        3、Atom中基本概念介紹
        3.1 提要(feed)
        Atom通過列表來表示數據稱之為提要(feed).它的部分元數據說明:
        id:在提要生命周期中永久的、唯一的標識符
        title:提要為我們提供的可讀標題
        subTitle:為提要的源信息
        category:提要分類。由其term屬性的Value指定。此外有兩個可選屬性:Label、Scheme,前者表示我們可以理解的表述,后者標識了此分類所屬方案
        updated:提要最新更新時間
        link:獲取提要的URI
        有關提要的詳細信息,可以查閱MSDN

        3.2 條目(entry)
        條目(entry)是構成提要(feed)的帶有時間戳數據實體。一個提要中包含一個或多個條目。雖然條目(entry)一般都是包含在提要(feed)中,但是他們都可以單獨作為可尋址的資源來被消費者使用。如下即為一個Atom提要:不管是提要(feed)還是條目(entry),都有一個通用唯一標識符:uuid(Universally Unique Indentifier)。
        條目(entry)中與提要(feed)相同的部分就不多做介紹了,由于它們是一種標準的格式,所以代表的意義也大同小異。但條目(entry)有提要(feed)所沒有的content元素,用它來設置條目內容。

       

        4、Atom中的鏈接關系
        link是Atom中主要的超媒體控件,通過它就可以獲取資源的表述,供消費者使用。link有幾個重要的屬性:
        1、rel:描述鏈接關系以及鏈接語義的上下文
        2、href:獲取資源表述的URI
        3、type:資源可能的媒體類型
        雖然link中有type屬性,服務端返回給客戶端的響應的HTTP 頭信息中也有Content-Type信息。無論怎樣Content-Type信息始終是服務端返回給客戶端最權威的表述格式。但link中有type屬性依然有意義。例如:如果服務端返回給客戶端的表述中既有XML,也有JSON格式,那客戶端可以根據自身需要,選擇適當的URI來獲取資源的表述類型。


      link控件的幾種鏈接關系:
        self:當前提要或條目所需的資源由href所標識的URI獲取
        via:標識當前提要或條目的信息來源
        alternate:連接當前提要或條目的替代表述的鏈接
        enclosure:表述URI獲取表述的資源的尺寸可能會比較大
        related:表示href所指資源同當前提要或題目存在某種關系
        per-archive:當前提要以前最近的一個提要。
        next-archive:與per-archive相反。
      實際應用中,如果某個客戶端掉線,等網絡恢復后,它獲取到最新的提要,并且能通過提要中的超媒體控件link 的per-archive鏈接關系一直往前遍歷,從而尋找到它最近一次處理過的提要信息;同時也能通過next-archive來往后遍歷,遍歷到最新的提要信息。這些鏈接關系值都是在IANA的鏈接關系注冊表中注冊的,已經成為一種標準的處理方式。

       

        5、.Net FCL中對Atom的實現
        在.Net FCL(FrameWork Class Library)中,我們可以使用在System.ServiceModel程序集的System.ServiceModel.Syndication命名空間中找到項目Atom相關的類,來創建我們的應用。主要的類有SyndicationFeed,SyndicationItem,SyndicationContent、Atom10FeedFormatter等。我們通過SyndicationFeed來創建提要(feed),通過SyndicationItem來創建條目(entry)。范例如下:

      SyndicationFeed feed = new SyndicationFeed
      {
        Title = new TextSyndicationContent("feed Tile"),
        LastUpdatedTime = new DateTimeOffset(DateTime.Now),
        Description = new TextSyndicationContent("feed Description Content")
      };
      feed.Authors.Add(new SyndicationPerson("aa@gmial.com", "zhanshan", "cnblogs.com"));
      feed.Language = "us-en";
      feed.Generator = "test feed";
      feed.Links.Add(new SyndicationLink(new Uri("http://www.rzrgm.cn/tyb1222"), "via", "linkTitle", "application/Atom+xml",1000));
      feed.Categories.Add(new SyndicationCategory("blog"));
      feed.Contributors.Add(new SyndicationPerson("aa@gmial.com", "zhanshan", "cnblogs.com"));
      SyndicationItem item1 = new SyndicationItem("Title1",
          "Microsoft may have patents, patent applications, trademarks, ...more",
          new Uri("http://www.microsoft.com"))
          {Summary = new TextSyndicationContent("sumary")};
      SyndicationItem item2 = new SyndicationItem("Title2",
          "The names of actual companies and products mentioned herein may be ...more",
          new Uri("http://www.microsoft.com"))
          {Summary = new TextSyndicationContent("sumary")};
      List<SyndicationItem> syndicationItems = new List<SyndicationItem> {item1, item2};
      feed.Items = syndicationItems;
      

        

        6、Atom的用途
        資源的創建與消費使用Atom是一種比較理想的方式。在Atom中,我們可以將不能以超媒體格式的資源鏈接到資源的條目中,使用<Content>的src屬性鏈接到這些資源。在REST架構中,我們可以適應Atom來獲取資源的表述,并通過它的link超媒體控件來驅動業務的執行進而轉移應用的狀態。Atom作為IETF推薦的一種標準的超媒體格式,已經廣泛應用在成千上萬個Web項目中,如Gmail。

      參考:http://zh.wikipedia.org/wiki/Atom_(%E6%A8%99%E6%BA%96) 

      posted @ 2011-12-16 13:21  tyb1222  閱讀(6547)  評論(3)    收藏  舉報
      主站蜘蛛池模板: 色94色欧美sute亚洲线路二| 国产精品亚洲А∨天堂免| 国产精品一二三中文字幕| 在线 欧美 中文 亚洲 精品| 亚洲中少妇久久中文字幕| 伊人久久综合无码成人网| 一卡二卡三卡四卡视频区| 国产精品不卡一区二区在线| 北岛玲亚洲一区二区三区| 国产三级a三级三级| 黑人精品一区二区三区不| 日韩本精品一区二区三区| 丰腴饱满的极品熟妇| 狠狠色丁香婷婷综合尤物| 亚洲岛国成人免费av| 亚洲精品国产自在现线最新| 色综合 图片区 小说区| 中文字幕日韩精品国产| 韩产日产国产欧产| 国产激情一区二区三区四区| 欧美一本大道香蕉综合视频| 欧美成人免费全部| 精品粉嫩国产一区二区三区| 人妻中文字幕精品一页| 少妇午夜啪爽嗷嗷叫视频| 国产极品精品自在线不卡| 九九久久精品国产免费看小说| 成人午夜在线观看日韩| 最新av中文字幕无码专区| 人妻出轨av中文字幕| 亚洲欧洲日韩精品在线| 国产在线观看免费观看| 国产精品福利自产拍久久| 亚洲熟妇精品一区二区| 日韩一区二区三区日韩精品| 亚洲中文无码永久免费| 午夜激情福利在线免费看| 欧美成人精品手机在线| 阳朔县| 国产中年熟女高潮大集合| 国产一区二区波多野结衣|