XML-RPC.NET можно использовать с ASP.NET MVC.
Определите интерфейс для вашей службы XML-RPC, например:
using CookComputing.XmlRpc;
public interface IStateName
{
[XmlRpcMethod("examples.getStateName")]
string GetStateName(int stateNumber);
}
Реализовать услугу:
using CookComputing.XmlRpc;
public class StateNameService : XmlRpcService, IStateName
{
public string GetStateName(int stateNumber)
{
if (stateNumber < 1 || stateNumber > m_stateNames.Length)
throw new XmlRpcFaultException(1, "Invalid state number");
return m_stateNames[stateNumber - 1];
}
string[] m_stateNames
= { "Alabama", "Alaska", "Arizona", "Arkansas",
"California", "Colorado", "Connecticut", "Delaware", "Florida",
"Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa",
"Kansas", "Kentucky", "Lousiana", "Maine", "Maryland", "Massachusetts",
"Michigan", "Minnesota", "Mississipi", "Missouri", "Montana",
"Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico",
"New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma",
"Oregon", "Pennsylviania", "Rhose Island", "South Carolina",
"South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia",
"Washington", "West Virginia", "Wisconsin", "Wyoming" };
}
Реализация собственного обработчика маршрута:
using System.Web;
using System.Web.Routing;
public class StateNameRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
return new StateNameService();
}
}
Зарегистрировать пользовательский маршрут в global.asax.cs:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.Add(new Route("api/statename", new StateNameRouteHandler()));
// ...
}
Убедитесь, что все работает, указав в браузере URL-адрес обработчика, например, что-то вроде http://localhost:33821/api/statename в этом случае при запуске из Visual Studio. Затем вы должны увидеть автоматически сгенерированную страницу справки для службы. Если это нормально, тогда направьте свой XML-RPC-клиент на службу и начните звонить.