ASP.NET MVC中的XML-RPC

5
我知道有一个.NET库可以使用XML-RPC,但是是否可以在ASP.NET MVC环境中使用呢?
6个回答

7

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,例如在从Visual Studio运行时类似于http://localhost:33821/api/statename的URL,检查所有内容是否正常工作。然后,您应该会看到服务的自动生成帮助页面。如果一切正常,则将XML-RPC客户端指向该服务并开始进行调用。


4

Cook Computing的xml-rpc.net库可以与任何ASP.NET项目一起使用,包括ASP.NET MVC。

http://xml-rpc.net/


菲尔 - 你对如何做到这一点有更多的建议吗? - IEnumerator

2
上面的答案是正确的 - 它会起作用(您可以在MVC应用程序中部署XML RPC端点并直接调用它)。
如果您的意思是是否与MVC路由和控制器操作一起使用,那么恐怕答案是“不行,除非付出很多工作”。众所周知的XML RPC库(由Cook Computing开发)基于类似于asmx技术的东西。
还有一个WCF XML RPC组件(更快,更具未来性),我认为它比较好,我在编写Live Writer后端的情况下写了一篇文章。但是这也不能直接集成到MVC路由和控制器操作中。
虽然理论上可能编写ActionFilters、自定义控制器工厂、ModelBinder等等以提供XML Rpc结果,但最好还是选择您的XML RPC实现并直接调用它。
不确定这是否添加了有用的信息 :)

1

如果它可以在.NET上运行,那么它也可以在ASP.NET MVC上运行。ASP.NET MVC环境只是建立在.NET Framework之上的一层,因此任何你可以用.NET构建的东西都可以在ASP.NET MVC应用程序中使用。


1

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接