Nehmen wir an, ich habe einen WCF-Dienst Service1.svc
, der GetData(value)
enthält.Convert Web API rückwärtskompatibel mit WCF
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData(int value);
}
public class Service1 : IService1
{
public string GetData(int value)
{
return string.Format("You entered: {0}", value);
}
}
ich auch einen Client, der bereits die Proxy-auto generiert, diesen Dienst zu verbrauchen, so etwas wie diese:
using (var client = new ServiceReference1.Service1Client())
{
var result = client.GetData(1);
//Assert.AreEqual("You entered: 1", result);
}
Nun entfernte ich, dass WCF-Dienst und ersetzt sie durch einen neuen Web-API Service, etwa wie folgt:
[RoutePrefix("Service1.svc")]
public class DataController : ApiController
{
[HttpGet]
[Route("GetData")]
public string GetDataOld(int value)
{
return string.Format("You entered: {0}", value);
}
}
Also, wenn ich versuche Service1Client()
den Client zu verwenden, es funktioniert nicht mehr. Ich bin mir ziemlich sicher, dass das möglich ist, aber was muss ich tun, um dieses Ziel zu erreichen?
aktualisiert 05/23/2016
Da dies nicht möglich ist, habe ich beschlossen, einen Proxy zu erstellen, so dass der Client (s) den neuen REST-konformen Web-API leicht umsetzen kann.
Es hängt alles von der verwendeten Bindung ab. Wenn es eine WebHttpBinding war, dann war der Transport REST; Wenn nicht, müssen Sie den Client neu implementieren oder einen Übersetzungsproxy einführen, was nicht trivial ist. – CodeCaster