2010-01-09 5 views
5

Ich weiß, dass es eine Bibliothek für .NET gibt, um XML-RPC zu verwenden - aber weiß jemand, ob es in der ASP.NET MVC-Umgebung verwendet werden kann oder nicht?XML-RPC in ASP.NET MVC

Antwort

4

die Koch Computing xml-rpc.net Bibliothek kann mit jedem ASP.NET-Projekt verwendet werden, einschließlich ASP.NET MVC.

http://xml-rpc.net/

+0

Phil - haben Sie mehr Input, wie man das macht? – IEnumerator

1

Wenn es mit .NET funktioniert, funktioniert es mit ASP.NET MVC. Die ASP.NET MVC-Umgebung ist nur eine Ebene über dem .NET Framework. Daher kann alles, was Sie mit .NET erstellen können, in einer ASP.NET MVC-Anwendung verwendet werden.

+0

und ............. – kenny

2

Die obige Antwort ist korrekt - sie funktioniert (Sie können einfach einen XML-RPC-Endpunkt in Ihrer MVC-Anwendung bereitstellen und ihn direkt aufrufen).

Wenn Sie jedoch meinen, funktioniert es mit MVCs Routing und Controller-Aktionen, dann habe ich Angst, die Antwort ist "nicht ohne viel Arbeit". Die bekannte XML-RPC-Bibliothek (von Cook Computing ist das?) Basiert auf etwas, das der asmx-Technologie ähnlich ist.

Es gibt auch eine WCF XML RPC-Komponente (schneller und zukunftssicherer denke ich) - die I've written about im Zusammenhang mit dem Schreiben eines Live-Writer-Backend. Dies wird jedoch auch nicht direkt in MVC-Routing- und Controller-Aktionen integriert.

Während es möglich ist, dass Sie theoretisch ActionFilters, eine benutzerdefinierte Controller Factory, ModelBinder und (wahrscheinlich) mehr schreiben könnten, um XML-RPC-Ergebnisse usw. zu liefern; Sie sollten Ihre XML-RPC-Implementierung einfach auswählen und direkt aufrufen.

nicht sicher, ob dies sinnvoll etwas hinzugefügt :)

1

Ich habe versucht, eine Lösung zu finden mit MVC XML-RPC zu integrieren, konnte aber niemanden finden, der es getan hatte, so dass ich es tat mir durch eine individuelle Route Implementierung, eine benutzerdefinierte Aktion Filter (um die xml-rpc-Parameter in die Aktionsparameter zu konvertieren) und benutzerdefinierte Aktionsergebnisse (um die Antwort wieder in eine gültige xml-rpc-Antwort zu konvertieren). Lesen Sie hier mehr:

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

7

XML-RPC.NET kann mit ASP.NET MVC verwendet werden.

Definieren Sie eine Schnittstelle für Ihre XML-RPC-Dienst, zum Beispiel:

using CookComputing.XmlRpc; 

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

den Dienst implementieren:

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

einen Handler benutzerdefinierte Route implementieren:

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

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

Registrieren der benutzerdefinierte Route in global.asax.cs:

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

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

    // ... 

} 

Sie sicher, dass alles, was mit dem Hinweis in Ihrem Browser die URL für den Handler, zum Beispiel so etwas wie http://localhost:33821/api/statename in diesem Fall arbeitet, wenn von Visual Studio ausgeführt wird. Sie sollten dann eine automatisch generierte Hilfeseite für den Service sehen. Wenn dies in Ordnung ist, richten Sie Ihren XML-RPC-Client auf den Dienst und beginnen Sie, Anrufe zu tätigen.