WCF Rest-Service

Aus maxTechCorner

Auf einen Blick

Gilt fürWCF auf .NET Framework 4.8.x (Bestand); CoreWCF 1.9 und ASP.NET Core Minimal APIs auf .NET 10 (Neuentwicklung)
BereichSoftwareentwicklung
Dauerca. 30 Minuten
RechteEntwicklungsumgebung (Visual Studio 2022/2026 oder .NET SDK)
StandOktober 2026

Ein WCF-REST-Service liefert Daten per HTTP und JSON statt per SOAP aus. In bestehenden .NET-Framework-Anwendungen genügen dafür ein paar Attribute und das webHttpBinding. Für neue Projekte und für die Migration nach .NET 10 ist ASP.NET Core der Nachfolger – dieser Artikel zeigt beide Wege und wie Sie einen vorhandenen WCF-Service schrittweise modernisieren.

WCF-REST-Services heute: WCF auf .NET Framework für den Bestand, CoreWCF für die Migration, ASP.NET Core Minimal APIs und gRPC für Neuentwicklungen.

WCF heute: Was ist noch aktuell?

Technik Status 2026 Einsatz
WCF (System.ServiceModel, Server) nur .NET Framework 4.8.x, keine Weiterentwicklung Pflege von Bestandsanwendungen
CoreWCF Open-Source-Port der WCF-Serverseite für .NET 8/10, von Microsoft unterstützt Bestehende WCF-Services ohne Neuschreiben auf modernes .NET heben
ASP.NET Core Web API / Minimal APIs Standard für REST in .NET 10 Neuentwicklung von REST-Schnittstellen
gRPC in ASP.NET Core enthalten Schnelle Service-zu-Service-Kommunikation als Ersatz für SOAP/WCF-TCP

Variante 1: REST/JSON in bestehendem WCF-Service (.NET Framework)

Aus einem SOAP-Service wird per WebInvoke-Attribut und webHttpBinding ein REST-Service.

Interface mit REST-Attributen:

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

public class SimpleService : ISimpleService
{
    public string GetSimpleData(int id) => $"Folgende Id wurde übergeben: {id}";
}

web.config:

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

Aufruf:

GET https://server/SimpleService.svc/getsimpledata?id=123456789

"Folgende Id wurde übergeben: 123456789"

Variante 2: Gleicher Service mit ASP.NET Core Minimal API (.NET 10)

Für Neuentwicklungen ist das die empfohlene Lösung – deutlich weniger Konfiguration, eingebaute OpenAPI-Beschreibung und plattformunabhängig (Windows, Linux, Container).

dotnet new web -n SimpleRestService
cd SimpleRestService
// Program.cs
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddOpenApi();

var app = builder.Build();
app.MapOpenApi();                                   // /openapi/v1.json

app.MapGet("/getsimpledata", (int id) =>
    Results.Ok($"Folgende Id wurde übergeben: {id}"));

app.Run();
dotnet run
curl "http://localhost:5000/getsimpledata?id=123456789"

Den Port zeigt dotnet run beim Start an. Hosting unter IIS: siehe ASP.NET bei IIS registrieren.

Variante 3: Bestehenden WCF-Service mit CoreWCF migrieren

Wenn viele Clients an Verträgen und Bindings hängen, ist CoreWCF der schnellere Weg: [ServiceContract], [OperationContract] und die Service-Klassen bleiben weitgehend unverändert, nur das Hosting wechselt auf ASP.NET Core. Für REST-Endpunkte mit webHttpBinding gibt es das Paket CoreWCF.WebHttp.

dotnet add package CoreWCF.Http
dotnet add package CoreWCF.WebHttp

Langfristig lohnt sich trotzdem der Umstieg auf Web API oder gRPC, weil CoreWCF nur einen Teil der WCF-Features abdeckt.

Hinweise

  • Nur HTTPS: Schnittstellen grundsätzlich per TLS bereitstellen, Metadaten (httpGetEnabled) im Produktivbetrieb abschalten.
  • Authentifizierung: Für neue REST-APIs OAuth 2.0 / OpenID Connect (z. B. Microsoft Entra ID) statt Windows- oder Basic-Authentifizierung verwenden.
  • .NET Framework 4.8.1 ist Teil von Windows und wird so lange unterstützt wie das jeweilige Windows – WCF-Services laufen also weiter, erhalten aber keine neuen Funktionen.
  • Bei der Modernisierung von WCF-Schnittstellen unterstützt Sie die individuelle Softwareentwicklung von m.a.x. it.

Siehe auch

Links und Quellen


Über m.a.x. it Die m.a.x. Informationstechnologie AG ist seit über 30 Jahren IT-Partner mittelständischer und großer Unternehmen in München und bietet maßgeschneiderte Lösungen und Services in den Bereichen Cloud, Cybersecurity, Netzwerk, Windows, Linux und Softwareentwicklung. Sie haben eine Frage zu diesem Artikel oder brauchen Unterstützung? Kontakt aufnehmen