Really Simple Discovery--自动发现博客编辑接口

by Jason 2008-08-21,11:55

博客编辑接口介绍一文中,我提到了博客编辑接口的各种用途和好处。不过对于不具备专业知识的博客用户来说,为博客客户端程序(如Windows Live Writer)手动设定定博客引擎的编辑接口是比较困难的,因此博客引擎应该提供自动发现机制,使外部程序能够简单地通过博客网站地址找到博客编辑接口。
先来看看Windows Live Writer是如何发现博客引擎的编辑接口的。
运行Windows Live Writer,点击菜单栏的“工具->选项”,弹出“选项”对话框,在左栏中选中“账户”,在右栏中点击右上角的“添加”按钮,弹出“添加日志账户”向导。 选择“其他日志服务”并点击“下一步”按钮。

 


填写“日志主页URL”、“用户名”、“密码”等信息并点击“下一步”按钮。


很快Windows Live Writer提示配置完成,然后用户就可以使用Windows Live Writer发表文章了。

Windows Live Writer发现博客引擎编辑接口的过程如下:
首先,Windows Live Writer根据“日志主页URL”读取博客引擎的主页内容。
主页内容中有这样一行HTML代码:
<link type="application/rsd+xml" rel="edituri" title="RSD" href="http://www.tiray.net/rsd.axd" />
这行HTML代码指出了博客编辑接口的描述文件地址。
接着,Windows Live Writer读取描述文件的内容。
博客引擎返回的内容如下:
<?xml version="1.0" encoding="utf-8"?>
<rsd version="1.0">
  <service>
    <engineName>BlogEngine.NET 1.4.5.0</engineName>
    <engineLink>http://dotnetblogengine.com</engineLink>
    <homePageLink>http://www.tiray.net/</homePageLink>
    <apis>
      <api name="MetaWeblog" preferred="true" apiLink="http://www.tiray.net/metaweblog.axd" blogID="http://www.tiray.net/" />
      <api name="BlogML" preferred="false" apiLink="http://www.tiray.net/api/BlogImporter.asmx" blogID="http://www.tiray.net/" />
    </apis>
  </service>
</rsd>
上面的XML代码实际上实现了一个标准的Really Simple Discovery (简称RSD)。RSD的目的就是帮助外部程序发现博客引擎的各种API接口,使用RSD后,用户只需要知道博客的主页地址、用户名和密码,就可以使用外部程序与博客引擎进行交互。
RSD由以下两部分组成:
1、RSD文件的位置描述
这是通过在博客主页添加以下内容实现的
<link type="application/rsd+xml" rel="edituri" title="RSD" href="YourRSDFileUrl" />
2、RSD文件
RSD文件是以XML格式实现的,其所包含的元素如下:
<service> 容器元素,子元素为:
 <engineName> 博客引擎名称
 <engineLink> 博客引擎网站地址
 <homePageLink> 博客主页
 <apis> 容器元素
 <apis>的子元素
  <api> 可以有多个api元素。api元素有以下四个必需的属性:
    "name" api的名称。
    "preferred" 布尔值,指示此API是否是博客引擎推荐的首选API。只应有唯一个api元素的preferred属性设置为"true",其它的应设置为"false"。
    "apiLink" API地址。
    "blogID" 博客ID。如果没有博客ID的话,可以设置为blogID=""。
  <api>的可选子元素,用于对API进行详细描述,不是必须的。容器元素为<settings>
   <docs> API文档地址。
   <notes> 供用户阅读的注释。
   <setting> 以"name-value"形式描述的API设置。可以有多个setting元素。

下面是一个完整的RSD文件示例:
<?xml version="1.0" encoding="utf-8"?>
<rsd version="1.0">
  <service>
    <engineName>BlogEngine.NET 1.4.5.0</engineName>
    <engineLink>http://dotnetblogengine.com</engineLink>
    <homePageLink>http://www.tiray.net/</homePageLink>
    <apis>
      <api name="MetaWeblog" preferred="true" apiLink="http://www.tiray.net/metaweblog.axd" blogID="http://www.tiray.net/" />
      <api name="BlogML" preferred="false" apiLink="http://www.tiray.net/api/BlogImporter.asmx" blogID="http://www.tiray.net/" />
      <api name="sample" preferred="false" apiLink="http://www.tiray.net/" blogID=http://www.tiray.net/" >
        <settings>
          <docs>http://www.tiray.net/ </docs>
          <notes>It's a sample!</notes>
          <setting name="Setting1">value1</setting>
          <setting name="Setting2">value2</setting>
        </settings>
      </api>
    </apis>
  </service>
</rsd>

Really Simple Discovery 1.0由Daniel Berlinger于2002年发布,官方文档地址:http://cyber.law.harvard.edu/blogs/gems/tech/rsd.html
个人认为,Really Simple Discovery更重要的意义是提供了一种自动发现网站服务功能的方法。例如你可以基于与RSD相同的思路,为自己开发的某个Web Service提供自动发现机制,从而让Web Service客户端可以自动找到Web Service地址,这对于开发一个比较通用的Web Service(例如用于用户验证的Web Service?),可能会很有用处的。



当前评分 5.0 , 共有 1 人参与

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
标签:, , ,
分类:博客技术

添加评论




biuquote
  • 评论
  • 在线预览
Loading

Powered by BlogEngine.NET 1.4.5.10 Theme by Mads Kristensen
滇ICP备06001863号

我的软件

最新评论

Comment RSS

声明

  如非特别注明,本网站发布的所有文章、源代码及软件均为原创,其版权归www.tiray.net所有。如需转载或引用,请注明出处并通知作者。
  本网站建立于中华人民共和国境内,受中华人民共和国法律法规约束。请勿在本网站发表违反国家法律法规的言论。