XML-RPC 在Subtext中應用。
先來回顧下XML-RPC的定義:
XML-RPC:是一套標准和一系列的應用,它允許在不同操作系統運行、不同環境下基於Internet的遠程過程調用。
這個調用是基於HTTP協議傳輸、XML作為數據載體的。
下面結合Subtext中來說明下。
Subtext中有兩處應用XML-RPC,一處是MetaWeblogAPI,另外一處是PingBack。
處理XML-RPC有兩個地方需要注意,一個是XML-RPC的服務器端,一個是XML-RPC的客戶端。
XML-RPC客戶端部分代碼:
public class PingBackNotificatinProxy : XMLRpcClIEntProtocol

...{
public PingBackNotificatinProxy()
...{
} 
public bool Ping(string pageText, Uri sourceURI, Uri targetURI) 

...{...} 
private string GetPingBackURL(string pageText, Uri postUrl) 

...{...} 
[XMLRpcMethod("pingback.ping")]
public void Notify(string sourceURI, string targetURI)
...{
Invoke("Notify", new object[] ...{ sourceURI, targetURI });
} 
}
PingBackNotificatinProxy 繼承了XmlRpcClientProtocol這個類,與官方網站上面給出的例子不同,本應該是實現IXmlRpcProxy這個接口,仔細一看,原來XmlRpcClIEntProtocol已經實現了IXMLRpcProxy接口。這樣通過PingBackNotificatinProxy的Notify方法就可以發送請求了。
而作為服務器端,XML-RPC服務被包含在IIS環境裡面了,因此實現XML-RPC服務只要繼承XMLRpcService這個類就可以了。
XML-RPC服務器端部分代碼:
public class PingBackService : XMLRpcService
...{
[XMLRpcMethod("pingback.ping", Description="Pingback server implementation")]
public string pingBack(string sourceURI, string targetURI)
...{ ...} 
}
可以通過XMLRpcMethod這個屬性看出客戶端和服務器端的聯系,當客戶端發送Notify方法請求時,服務器端接收到後會調用pingBack方法進行處理。
參考資料:
XML-RPC協議, XML-RPC.Net 及其 FAQ