DotText实现支持自动发现服务接口
来源:互联网 发布:max函数c语言 编辑:程序博客网 时间:2024/05/29 09:35
目标:使用Live Writer添加Dottext Blog帐号时支持自动发现webservice接口。实现后的添加只要一个步骤:输入blog地址,例如http://blogs.impx.net/dragonimp和blog帐号密码,点下一步自动配置service的api,完成即可。
实现:根据自动发现接口协议,实现对Dottext blog的service api的自动发现。
1、首先在default.aspx中增加link:
<link id="RSDLink" title="rsd" type="application/rsd+xml" rel="edituri" runat="Server"/>
2、在DottextMasterPage.cs中增加地址设置
RSDLink.Attributes.Add("href", CurrentBlog.FullyQualifiedUrl + "rsd.aspx");
3、在web.config中增加rsd.aspx的处理引擎
<HttpHandler pattern="/rsd/.aspx$" type="Dottext.Common.Syndication.RsdHandler, Dottext.Common" handlerType="Direct" />
4、实现RsdHandler类和RsdWriter(采用Rss的写法并继承原有的BaseSyndicationHandler类)
/*
using something needed...
Description:Rsd handler for DotText metaweblog api
Author:dragonimp 2009.1.11
http://www.impx.net http://blogs.impx.net/dragonimp
*/
namespace Dottext.Common.Syndication
{
class RsdWriter : System.Xml.XmlTextWriter
{
private StringWriter _sw = null;
protected BlogConfig config;
public RsdWriter(): this(new StringWriter())
{
}
public RsdWriter(System.IO.Stream stream, Encoding encoding) : base(stream, encoding)
{
}
public RsdWriter(StringWriter sw): base(sw)
{
_sw = sw;
config = Dottext.Framework.Configuration.Config.CurrentBlog();
}
public StringWriter StringWriter
{
get
{
Build();
return _sw;
}
}
public string GetXml
{
get { return this.StringWriter.ToString(); }
}
private void Build()
{
//this.Formatting = System.Xml.Formatting.Indented;
// this.WriteStartDocument();
this.WriteStartElement("rsd");
this.WriteAttributeString("version", "1.0");
this.WriteStartElement("servie");
this.WriteElementString("engineName","DotText Rsd service 1.0 by dragonimp");
//this.WriteEndElement();//enginename
this.WriteElementString("engineLink", config.FullyQualifiedUrl + "rsd.aspx");
//this.WriteEndElement();//enginelink
this.WriteElementString("homePageLink", config.FullyQualifiedUrl);
//this.WriteEndElement();//homepagelinke
this.WriteStartElement("apis");
this.WriteStartElement("api");
this.WriteAttributeString("name", "MetaWeblog");
this.WriteAttributeString("preferred", "true");
this.WriteAttributeString("apiLink", config.FullyQualifiedUrl + @"services/metablogapi.aspx");
this.WriteAttributeString("blogID", config.UserName);
this.WriteEndElement();//api
this.WriteEndElement();//apis
this.WriteEndElement();//service
this.WriteEndElement();//rsd
// this.WriteEndDocument();//
}
}
class RsdHandler : Dottext.Framework.Syndication.BaseSyndicationHandler
{
public RsdHandler() { }
private string key = "IndividualMainFeed_Rsd:FQU{0}";
protected override string CacheKey()
{
return string.Format(key,CurrentBlog.FullyQualifiedUrl);
}
protected override void Cache(CachedFeed feed)
{
Context.Cache.Insert(CacheKey(), feed, null, DateTime.Now.AddSeconds((double)Dottext.Common.Data.CacheTime.Medium), TimeSpan.Zero);
}
protected override CachedFeed BuildFeed()
{
this.key += "BlogID_Rsd" + CurrentBlog.BlogID.ToString();
CachedFeed feed = new CachedFeed();
feed.LastModified = this.ConvertLastUpdatedDate(CurrentBlog.LastUpdated);
RsdWriter rsdwriter = new RsdWriter();
feed.Xml=rsdwriter.GetXml;
return feed;
}
}
}
参考文章:
http://www.tiray.net/post/Really-Simple-Discovery.aspx
http://cyber.law.harvard.edu/blogs/gems/tech/rsd.html
- DotText实现支持自动发现服务接口
- 语义万维网服务的自动发现- -
- SOA中间件 - 服务自动注册与发现
- 通过zabbix自动发现Tomcat服务端口
- Thrift对多接口服务的支持
- Thrift对多接口服务的支持
- 1、Eureka实现服务注册与发现
- 使用 Eureka 实现服务注册与发现
- 巧用Salt,实现CMDB配置自动发现
- Spring-cloud & Netflix 源码解析:Eureka 服务注册发现接口 ****
- Spring远程服务增加自动发现和群集功能
- 为Spring远程服务增加自动发现和群集功能
- 【Zookeeper】JAVA通过ZK实现服务注册和服务发现
- 服务发现
- 服务发现
- 使用PHP实现服务接口
- ibatis 实现saveorupdate 结果发现 mysql saveorupdate 支持
- spring cloud-Swagger2整合Eureka,实现Eureka页面自动跳转到Swagger2UI界面查看服务接口信息
- 关于C#资源文件操作的总结
- SVN使用详解
- “熊猫烧香”源码启示录
- 新年新气象,我要更加努力
- Subversion服务与客户端安装[Linux版]
- DotText实现支持自动发现服务接口
- INT 21H 指令说明及使用方法
- SVN 常用命令集合及简单用法
- INT 10H中断
- 基于单片机PIC12C508A的自动冲水器的设计
- Linux SVN的安装使用笔记
- [OS] BIOS中断
- VB高级钩子编程
- Smallest Ten Digit Powers