Blazor i .NET

WCF servisi na .NET-u 10: CoreWCF, gRPC ili REST?

WCF je najčešća prepreka pri prelasku s .NET Frameworka. Tri puta dalje, što se u kojem mijenja za klijente i redoslijed u kojem sve nastavlja raditi.

Vlado Pandžić

Vlado Pandžić · Osnivač · Senior .NET arhitekt
Objavljeno · 3 min čitanja

Sadržaj
  1. Što je problem, a što nije
  2. Tri puta dalje
  3. CoreWCF: isti ugovor na .NET-u 10
  4. Što provjeriti prije odluke
  5. Redoslijed koji radi
  6. Koliko traje
  7. Kako mi radimo

U gotovo svakoj migraciji s .NET Frameworka jedna stavka zaustavi plan: WCF servisi. Sama aplikacija bi prešla, ali WCF nije dio modernog .NET-a, a drugi sustavi, ponekad i oni koje ne kontrolirate, svaki dan ovise o tim servisima.

Dobra vijest: postoje tri provjerena puta, i ne morate odjednom birati jedan za sve.

Što je problem, a što nije

  • Pozivanje WCF servisa iz .NET-a 10 nije problem. Microsoft održava WCF klijentske biblioteke za moderni .NET, a dotnet-svcutil generira klijentski kod iz opisa servisa, kao i prije.
  • Hostanje WCF servisa je problem. Serverski dio WCF-a nikad nije prenesen na .NET Core i njegove nasljednike. Svaki servis koji vaša aplikacija nudi treba novi dom.

Tri puta dalje

CoreWCF gRPC REST API
Što je Port WCF-a na moderni .NET Brz protokol preko HTTP/2, s ugovorom na prvom mjestu ASP.NET Core Web API s JSON-om
Što se mijenja za klijente Obično ništa Novi klijentski kod Novi klijentski kod
Vaš postojeći kod Ugovori i implementacija većinom ostaju Sloj servisa se prepisuje Sloj servisa se prepisuje
Najbolje odgovara Prelazak na .NET 10 bez diranja korisnika servisa Pozivi između vaših vlastitih sustava Korisnici koje ne kontrolirate, preglednici, druge platforme
Na što paziti Nisu podržane sve WCF mogućnosti Preglednicima treba gRPC-Web Više posla za isti ugovor

CoreWCF je projekt otvorenog koda koji Microsoft podržava. Podrška prati verziju .NET-a na kojoj radi, a verzija 1.9 podržava .NET 10.

CoreWCF: isti ugovor na .NET-u 10

Uz CoreWCF ugovor servisa ostaje kakav jest, a servis radi unutar obične ASP.NET Core aplikacije:

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

Klijenti i dalje zovu istu adresu s istim porukama. Za sustave koji ovise o vama ništa se ne mijenja, a upravo to često omogući cijelu migraciju.

Što provjeriti prije odluke

  • Bindinzi. Uobičajeni HTTP i TCP bindinzi su pokriveni. Rjeđe treba provjeriti u CoreWCF dokumentaciji prije nego se obvežete.
  • Sigurnost. Windows autentifikacija, sigurnost poruka i certifikati često traju dulje od samog koda.
  • Duplex i povratni pozivi. Servise koji zovu klijenta natrag teže je prenijeti, kojim god putem išli.
  • Tko su korisnici servisa. Vaše aplikacije mogu se mijenjati zajedno sa servisom. Sustav partnera ili uređaj na terenu obično ne mogu, i za njih je CoreWCF često jedini realan prvi korak.

Redoslijed koji radi

  1. Korak 1Popis: servisi, bindinzi, korisnici
  2. Korak 2CoreWCF na .NET-u 10, klijenti bez promjena
  3. Korak 3Novi gRPC ili REST endpointi uz stare
  4. Korak 4Korisnik po korisnik, pa gašenje

Prvi korak dovodi aplikaciju na podržani .NET, a da nitko drugi ne mora ništa mijenjati. Nakon toga novi endpointi mogu raditi uz stare, a svaki korisnik prelazi kad mu odgovara. WCF endpoint gasi se tek kad ga više nitko ne zove, a to će vam reći logovi.

Koliko traje

Okvirni rasponi:

  • nekoliko servisa na osnovnim HTTP bindinzima, koje koriste vaše aplikacije: nekoliko dana do CoreWCF-a
  • puno servisa s Windows autentifikacijom, certifikatima i vanjskim korisnicima: nekoliko tjedana
  • potpuni prelazak na gRPC ili REST: ovisi o broju korisnika servisa, više nego o samim servisima

WCF je obično dio veće selidbe. Cijelu sliku daje članak o prelasku s .NET Frameworka na .NET 10, a podatkovni sloj članak o migraciji s EF6 na EF Core.

Kako mi radimo

Upravo ovo radimo. ProCoding je .NET studio iz Splita, a starije .NET aplikacije prebacujemo na moderni .NET dio po dio, tako da cijelo vrijeme rade: servise, podatkovni sloj i ekrane. Počinjemo popisom i predlažemo redoslijed. Sami, s vašim timom ili kao freelance .NET developer u vašem timu. Prvi korak je besplatan razgovor od 30 minuta.

Izvori

Ovaj članak služi općem informiranju i nije pravni, porezni, financijski ni drugi stručni savjet. Scenariji, primjeri i izračuni su ilustrativni. Uvjeti korištenja i odricanje od odgovornosti.

Povezani članci

© 2026 ProCoding — Sva prava pridržana.Impresum i privatnostUvjeti korištenjaSplit, Hrvatska