Blazor och .NET

WCF-tjänster på .NET 10: CoreWCF, gRPC eller REST?

WCF är det vanligaste hindret när du lämnar .NET Framework. Tre vägar, vad som ändras för klienterna i varje och en ordning där allt fortsätter att fungera.

Vlado Pandžić

Vlado Pandžić · Grundare · Senior .NET-arkitekt
Publicerad · 4 min läsning

Innehåll
  1. Vad som är ett problem, och vad som inte är det
  2. Tre vägar framåt
  3. CoreWCF: samma kontrakt på .NET 10
  4. Vad du ska kontrollera innan du väljer
  5. Ordningen som fungerar
  6. Hur lång tid det tar
  7. Så arbetar vi

I nästan varje migrering från .NET Framework är det en punkt som stoppar planen: WCF-tjänsterna. Själva applikationen skulle kunna flytta, men WCF ingår inte i modern .NET, och andra system, ibland sådana du inte styr över, är beroende av tjänsterna varje dag.

Den goda nyheten: det finns tre beprövade vägar, och du behöver inte välja en för allt på en gång.

Vad som är ett problem, och vad som inte är det

  • Att anropa WCF-tjänster från .NET 10 är inget problem. Microsoft förvaltar WCF-klientbibliotek för modern .NET, och dotnet-svcutil genererar klientkoden från tjänstebeskrivningen, som förut.
  • Att hosta WCF-tjänster är problemet. Serverdelen av WCF portades aldrig till .NET Core och dess efterföljare. Varje tjänst din applikation erbjuder behöver ett nytt hem.

Tre vägar framåt

CoreWCF gRPC REST-API
Vad det är En portering av WCF till modern .NET Ett snabbt, kontraktsbaserat protokoll över HTTP/2 ASP.NET Core Web API med JSON
Vad som ändras för klienterna Oftast inget Ny klientkod Ny klientkod
Din befintliga kod Kontrakt och implementation blir i stort sett kvar Tjänstelagret skrivs om Tjänstelagret skrivs om
Passar bäst Flytt till .NET 10 utan att röra anroparna Anrop mellan dina egna system Anropare du inte styr över, webbläsare, andra plattformar
Se upp med Inte alla WCF-funktioner stöds Webbläsare behöver gRPC-Web Mer arbete för samma kontrakt

CoreWCF är ett projekt med öppen källkod som Microsoft ger support för. Supporten följer den .NET-version det körs på; version 1.9 stöder .NET 10.

CoreWCF: samma kontrakt på .NET 10

Med CoreWCF förblir tjänstekontraktet som det är, och tjänsten körs i en vanlig ASP.NET Core-applikation:

[ServiceContract]
public interface IOrderService
{
    [OperationContract]
    Task<OrderDto> GetOrderAsync(int id);
}
builder.Services.AddServiceModelServices();

var app = builder.Build();

app.UseServiceModel(services =>
{
    services.AddService<OrderService>();
    services.AddServiceEndpoint<OrderService, IOrderService>(
        new BasicHttpBinding(), "/OrderService.svc");
});

Klienterna fortsätter att anropa samma adress med samma meddelanden. För systemen som är beroende av dig ändras ingenting, och det är ofta det som gör hela migreringen möjlig.

Vad du ska kontrollera innan du väljer

  • Bindningar. De vanliga HTTP- och TCP-bindningarna täcks. Ovanligare bindningar kontrollerar du i CoreWCF-dokumentationen innan du bestämmer dig.
  • Säkerhet. Windows-autentisering, meddelandesäkerhet och certifikat tar ofta mer tid än själva koden.
  • Duplex och återanrop. Tjänster som anropar klienten tillbaka är svårare att flytta, vilken väg du än väljer.
  • Vilka anroparna är. Dina egna applikationer kan ändras tillsammans med tjänsten. En partners system eller en enhet ute i fält kan oftast inte det, och för dem är CoreWCF ofta det enda realistiska första steget.

Ordningen som fungerar

  1. Steg 1Inventering: tjänster, bindningar, anropare
  2. Steg 2CoreWCF på .NET 10, klienter oförändrade
  3. Steg 3Nya gRPC- eller REST-endpoints bredvid
  4. Steg 4Flytta anroparna en i taget, stäng sedan av

Det första steget tar applikationen till en .NET-version med support utan att någon annan behöver ändra något. Därefter kan nya endpoints köras bredvid de gamla, och varje anropare flyttar när det passar. WCF-endpointen stängs av först när ingen anropar den längre, och det ser du i loggarna.

Hur lång tid det tar

Ungefärliga intervall:

  • några tjänster på enkla HTTP-bindningar, som används av dina egna applikationer: några dagar till CoreWCF
  • många tjänster med Windows-autentisering, certifikat och externa anropare: flera veckor
  • en fullständig övergång till gRPC eller REST: beror på antalet anropare, mer än på själva tjänsterna

WCF är oftast en del av en större flytt. Helheten finns i vår artikel om att migrera .NET Framework till .NET 10, och datalagret i EF6 till EF Core.

Så arbetar vi

Precis det här gör vi. ProCoding är en .NET-studio från Split i Kroatien, och vi flyttar äldre .NET-applikationer till modern .NET en del i taget, medan de fortsätter att fungera: tjänster, datalager och vyer. Vi börjar med inventeringen och föreslår ordningen. På egen hand, med ditt team eller som .NET-konsult i ditt team. Första steget: Boka ett kostnadsfritt samtal på 30 minuter.

Källor

Den här artikeln är endast allmän information och inte juridisk, skattemässig, ekonomisk eller annan professionell rådgivning. Scenarier, exempel och beräkningar är illustrativa. Användarvillkor och ansvarsfriskrivning.

Relaterade artiklar

© 2026 ProCoding — Alla rättigheter förbehållna.Företagsinformation och integritetAnvändarvillkorSplit, Kroatien