首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

OData 與 AtomPub:使用 WCF Data Services 綁定 AtomPub 伺服器

     編輯:關於.NET

前言

OData (Open Data Protocol) 基於 HTTP、Atom、AtomPub、EDM,提供統一資料存取介面。WCF Data Services 讓 .NET 類型/資料庫輕鬆公開為 OData 端點。本文示範如何將 OData 映射為標準 AtomPub,支援 Windows Live Writer 等部落格工具。

建立部落格資料模型

  1. ASP.NET MVC 2.0 專案
  2. 加入 ADO.NET EDM (MyBlogDB.edmx),模型優先設計 Post 實體

Post實體

屬性:Id(PK)、Title、PublishDate(Nullable)、Content。

產生資料庫

設計器右鍵「根據模型產生資料庫」→ 產生 SQL → 執行建立 MyBlogDB。


CREATE TABLE [dbo].[Posts] (
    [Id] int IDENTITY(1,1) NOT NULL,
    [Title] nvarchar(max) NOT NULL,
    [PublishDate] datetime NULL,
    [Content] nvarchar(max) NOT NULL
);

測試資料

ASP.NET MVC 前端顯示


public class HomeController : Controller
{
    MyBlogDBContainer blogDB = new MyBlogDBContainer();
    public ActionResult Index() => View(blogDB.Posts);
}

View 以 foreach 顯示 Title、Content、PublishDate。

網頁顯示

公開 WCF Data Services (OData)

  1. 加入 WCF Data Service (odata.svc)
  2. 設定 DataService<MyBlogDBContainer>,SetEntitySetAccessRule("*", All)

public class odata : DataService<MyBlogDBContainer>
{
    public static void InitializeService(DataServiceConfiguration config)
    {
        config.SetEntitySetAccessRule("*", EntitySetRights.All);
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
    }
}

OData 服務文件與 Atom Feed

  • 服務文件:/odata.svc → 列出 Posts 集合
  • Feed:/odata.svc/Posts → Atom 格式,content/properties 含 OData 中繼資料

IE檢視Atom

IE 等 Atom 閱讀器無法正確顯示 Title/Content,因 OData 將資料放在 m:properties 而非標準 title/content 元素。

OData 轉 AtomPub 映射

映射架構

  • 需將 m:properties/Title → atom:title
  • m:properties/Content → atom:content type="html"
  • m:properties/PublishDate → atom:published
  • 雙向映射:支援 AtomPub CRUD (POST/GET/PUT/DELETE)

實作:自訂 Service Behavior 與 Attribute


[ODataBloggingServiceBehavior(typeof(MyBlogDBContainer))]
[EntityAtomMapping("Posts", "PublishDate", "published")]
public class atompub : DataService<MyBlogDBContainer> { ... }
  • ODataBloggingServiceBehavior:注入訊息處理管線進行 XML 轉換
  • EntityAtomMapping:指定實體集合、來源屬性、目標 Atom 屬性
  • 同名屬性自動映射 (Title→title, Content→content)

Windows Live Writer 整合測試

  1. WLW → 新增帳號 → 「其他部落格服務」
  2. 網址:https://server:port/atompub.svc
  3. 服務文件 URL:同前
  4. 類型:Atom 發布協定

即可使用 WLW 豐富編輯器管理文章。

WLW編輯器

後續擴充建議

  • 映射 Atom 作者元素 (name/uri/email)
  • 圖片處理 (WLW 支援 FTP)
  • 發佈 WLW 可識別的功能端點

原始碼

文末附完整範例程式碼 (ODataBlogging.cs 核心實作)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved