首页 / 网页编程 / ASP.NET / BlogEngine.Net架构与源代码分析系列part6:开放API
        
            BlogEngine.Net架构与源代码分析系列part6:开放API2012-02-01 cnblogs Thriving.countryMetaWeblog与BlogImporter一款优秀的Blog系统少不了一些公开的API。BlogEngine.Net实现了标准的MetaWeblog API接口来允许用户通过客户端软件来发布自己的Blog,此外它还实现了将其它Blog系统中的文章(标准格式的BlogML或Rss)导入到BlogEngine.Net中来的BlogImporter接口,在这篇文章里我将对这些开放部分进行详细的介绍,对于涉及到的一些相关知识点也给出链接或做简单的描述。MetaWeblog API使用标准的Http协议封装的XMLRPC实现(类似于WebService中的Soap协议)1.首先让我们了解一下什么是MetaWeblog APIMetaWeblog API (MWA)是一套编程接口,允许外面的程序能取得和设置Blog文章的文本或属性。它是建立在XMLRPC接口之上,并且已经有了很多的实现。2.MetaWeblog API有三个基本的函数规范:metaWeblog.newPost (blogid, username, password, struct, publish) 返回一个字符串,可能是Blog的ID。metaWeblog.editPost (postid, username, password, struct, publish) 返回一个Boolean值,代表是否修改成功。metaWeblog.getPost (postid, username, password) 返回一个Struct。其中blogid、username、password分别代表Blog的id(注释:如果你有两个Blog,blogid指定你需要编辑的blog)、用户名和密码。由于篇幅有限,关于MetaWeblog API的更多信息请参考文末的链接部分。3.BlogEngine.Net中的MetaWeblog API的实现分析BlogEngine.Net的XMLRPC调用主要是由BlogEngine.Core.API.MetaWeblog命名空间下的几个类型来完成的。首先客户端软件通过Http协议向MetaWeblogHandler提交了一个标准的XML请求,MetaWeblogHandler是一个HttpHandler,之后MetaWeblogHandler执行ProcessRequest来处理这个请求,最后将处理结果再封装为XML返回给客户端软件。下面让我对这部分涉及到的几个类型做一个简单的介绍:MetaWeblogHandler:不用说了,处理的主逻辑部分,ProcessRequest是处理的入口点,将一些具体处理的部分委托给一些私有成员,例如:internal string NewPost(string blogID, string userName, string password, 
MWAPost sentPost, bool publish)XMLRPCRequest:是对一个HttpRequest信息提取以后的封装,里面是一些解析XML提取信息的相关属性与方法,例如远程调用方法名,参数,文章信息等。XMLRPCResponse:与XMLRPCRequest是对应的,它的Response方法会将执行结果生成XML并传递给HttpResponse之后返回给客户端。还有一些类似于MWABlogInfo,例如MWAMediaObject,MWAPost等的结构是对于业务对象类型数据提取信息的封装,主要是为了交换信息而定义的。从BlogEngine.Net的实现上看,它支持很多标准的协议,这些协议很多都是基于XML进行通信的,而BlogEngine.Net一般都是通过HttpHandler来处理这些标准的。