WCF Rest-Service

Version vom 14. Mai 2020, 13:43 Uhr von Deko (Diskussion | Beiträge) (Lösung)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Aufgabenstellung

Einen WCF-Service mit REST/JSON-Funktionalität versehen: Der WCF-Service.

Lösung

Mit der Hilfe von WCF-Attributen kann aus einem normalen SOAP-Service mit WCF ein WCF-Service mit REST/JSON-Funktionalität erstellt werden. Anschließend muss noch die Konfigurationsdatei des Service ein wenig angepasst werden. Als Ausgangspunkt nehmen wir einen normalen SOAP-Service mit einer einfachen Methode.

Projekt-Mappe SOAP-Service:

WCF Service.jpg.png














ISimpleService:

[ServiceContract]
public interface ISimpleService
{
[OperationContract]
        	string GetSimpleData(int id);
}

SimpleService:

 public class SimpleService : ISimpleService
{
public string GetSimpleData(int id)
        	{
            		return string.Format("Folgende Id wurde übergeben: {0}", id);
        	}
 }

Für die Verwandlung in einen REST-Service wird die Interface-Klasse um WCF-Attribute erweitert.

Projekt-Mappe REST-Service:

WCF Service 2.png












ISimpleService:

 [ServiceContract]
[WebInvoke(UriTemplate = "getsimpledata?id={id}", Method = "GET", 
RequestFormat = WebMessageFormat.Json, 
ResponseFormat = WebMessageFormat.Json)]
public interface ISimpleService
{
[OperationContract]
        	string GetSimpleData(int id);
}

UriTemplate- getsimpledata?id={id}: Das UriTemplate besteht aus Pfad und Abfrage-Parameter.
ResponseFormat- WebMessageFormat.Json -> Die Daten werden im JSON-Format zurückgegeben.

SimpleService:

 public class SimpleService : ISimpleService
{
public string GetSimpleData(int id)
        	{
            		return string.Format("Folgende Id wurde übergeben: {0}", id);
        	}
 }

Anschließend muss die web.config noch angepasst werden.

web.config:

 <system.serviceModel>
    <services>
      <service name="SimpleWCFRestService.SimpleService" behaviorConfiguration="serviceBehavior">
        <endpoint address="" binding="webHttpBinding" contract="SimpleWCFRestService.ISimpleService"        behaviorConfiguration="Web"> 
        </endpoint>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="serviceBehavior">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="Web">
          <webHttp />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>

So jetzt ist es soweit: Aus dem SOAP-Service ist ein REST-Service geworden, der die Daten im JSON-Format zurückgibt.

Aufruf REST-Service:

 http://localhost:49880/SimpleService.svc/getsimpledata?id=123456789 

Antwort im JSON-Format:

"Folgende Id wurde übergeben: 123456789"

Hinweis: Das Beispiel zur Erläuterung der Vorgehensweise wurde mit .NET 4.5 erstellt.

Weitere Informationen

Mehr Informationen zu unseren Softwarelösungen und Services finden Sie auf
www.max-it.de/Softwarelösungen

Kontakt

Wenn Sie Fragen oder Anmerkungen zu diesem Artikel haben, melden Sie sich bitte bei uns:
techcorner@max-it.de.

Über m.a.x. Informationstechnologie AG:
Als etabliertes Münchner Systemhaus zeichnen wir uns seit 1989 als verlässlicher IT-Partner mittelständischer und großer Unternehmen aus. Unser Portfolio reicht von IT- Services über individuelle Softwareentwicklung bis hin zur ERP-Beratung.

Tags

.NET, C#, WCF, REST