2010-01-09 10 views
5

Sé que hay una biblioteca para que .NET use XML-RPC, pero ¿alguien sabe si se puede usar en el entorno ASP.NET MVC o no?XML-RPC en ASP.NET MVC

Respuesta

4

biblioteca El cocinero Computing xml-rpc.net se puede utilizar con cualquier proyecto ASP.NET, incluyendo ASP.NET MVC.

http://xml-rpc.net/

+0

Phil - ¿Alguna otra información sobre cómo hacer eso? – IEnumerator

1

Si funciona con .NET, funciona con ASP.NET MVC. El entorno ASP.NET MVC es solo una capa encima de .NET Framework, por lo que todo lo que pueda compilar con .NET se puede usar en una aplicación ASP.NET MVC.

+0

y ............. – kenny

2

La respuesta anterior es correcta: funcionará (simplemente puede implementar un punto final XML RPC en su aplicación MVC y llamarlo directamente).

Si, sin embargo, lo que quiere decir es que funciona con el enrutamiento de MVC y las acciones del controlador, entonces me temo que la respuesta es 'no sin mucho trabajo'. La bien conocida biblioteca XML RPC (¿está compilada por la informática?) Se basa en algo similar a la tecnología de asmx.

También hay un componente WCF XML RPC (más rápido y más a prueba de futuro, creo) - que I've written about en el contexto de escribir un backend Live Writer. Pero esto tampoco se integrará directamente con el enrutamiento MVC y las Acciones del Controlador.

Si bien es posible que teóricamente podrías escribir ActionFilters, un Controller Factory personalizado, ModelBinder y (probablemente) más para proporcionar resultados XML Rpc, etc. es mejor que simplemente elija su implementación XML RPC y lo llame directamente.

No estoy seguro si esto se ha añadido nada útil :)

1

yo estaba tratando de encontrar una solución para la integración de XML-RPC con MVC, pero no pude encontrar a nadie que lo había hecho, así que lo hice a mí mismo mediante la implementación de una ruta personalizada, un filtro de acción personalizada (para convertir los parámetros xml-rpc en los parámetros de acción) y resultado de acción personalizado (para convertir la respuesta nuevamente en una respuesta xml-rpc válida). Lee más aquí:

http://tech-journals.com/jonow/2012/01/25/implementing-xml-rpc-services-with-asp-net-mvc

7

XML-RPC.NET se puede utilizar con ASP.NET MVC.

Definir una interfaz para su servicio XML-RPC, por ejemplo:

using CookComputing.XmlRpc; 

public interface IStateName 
{ 
    [XmlRpcMethod("examples.getStateName")] 
    string GetStateName(int stateNumber); 
} 

implementar el servicio:

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" }; 
} 

implementar un controlador de ruta personalizada:

using System.Web; 
using System.Web.Routing; 

public class StateNameRouteHandler : IRouteHandler 
{ 
    public IHttpHandler GetHttpHandler(RequestContext requestContext) 
    { 
    return new StateNameService(); 
    } 
} 

Registre el ruta personalizada en global.asax.CS:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.Add(new Route("api/statename", new StateNameRouteHandler())); 

    // ... 

} 

Comprobar que todo funciona apuntando desde su navegador a la dirección URL para el controlador, por ejemplo, algo así como http://localhost:33821/api/statename en este caso, cuando se ejecuta desde Visual Studio. Debería ver una página de ayuda generada automáticamente para el servicio. Si esto está bien, dirija su cliente XML-RPC al servicio y comience a hacer llamadas.