Eftir Kristijan Sekereš
Azure Cloud Services (Extended Support) hættir 31. mars 2027: að flytja vef- og vinnsluhlutverk

Microsoft úrelti Azure Cloud Services (extended support) 31. mars 2025 og leggur þjónustuna alveg niður 31. mars 2027. Ef eitthvert rekstrarforrit hjá þér keyrir sem vefhlutverk (web roles) og vinnsluhlutverk (worker roles) þarf það að vera komið í keyrslu annars staðar á Azure fyrir þann dag. Algengar spurningar um endalokin eru afdráttarlausar um tvær spurningar sem allir spyrja fyrst: Microsoft „getur ekki orðið við beiðnum um framlengingu“, og „engin flutningstól eru til sem virka með einum smelli.“
Frá deginum í dag, 3. október 2026, eru sex mánuðir eftir.
Fyrir hverja þetta er
Dæmigerða tilvikið: ASP.NET forrit á .NET Framework, vefhlutverk fremst og eitt eða tvö vinnsluhlutverk sem vinna úr biðröðum fyrir aftan, smíðað af stofu fyrir átta eða tíu árum. Stofan er oft horfin á braut, forritið keyrir enn pantanavinnslu eða þjónustugátt fyrir viðskiptavini, og enginn hefur opnað .csdef skrána síðan við síðasta flutning.
Til að athuga hvort þetta varði þig, opnaðu Azure-gáttina og listaðu tilföng af tegundinni „Cloud services (extended support)“. Tilkynning Microsoft um endalokin vísar beint á þá yfirlitssýn. Ef hún er tóm ertu búinn.
Þessi grein fjallar ekki um Cloud Services (classic), sem var lagt niður árið 2024. Ef framleiðandi hýsir vöruna fyrir þig er flutningurinn hans verk: biddu um dagsetninguna hans skriflega. Allt hér á eftir er fyrir teymi sem eiga kóðann, eða eiga hann á pappír og þurfa að finna einhvern sem skilur hann.
Hvers vegna þetta er erfiðara en flutningurinn 2024
Mörg fyrirtæki fluttu yfir í extended support árið 2024, þegar classic var lagt niður. Sá flutningur var ódýr af ásettu ráði. Yfirlit Microsoft um extended support segir að .csdef, .cscfg og .cspkg skrárnar „flytjist óbreyttar yfir og engin breyting verði á sniðunum“, og að „engar breytingar þurfi að gera á keyrslukóða“. Það var meira að segja til flutningur á staðnum. Sama síða mælti með extended support fyrir forrit sem eru ekki í þróun, því „það býður upp á fljótlega flutningsleið.“
Í þetta sinn er enginn sambærilegur áfangastaður. Með orðum Microsoft snýst Cloud Services „um að dreifa forritum sem sýndarvélum. Kóðinn sem þú skrifar er nátengdur sýndarvélartilviki“. Kóðinn þinn veit að hann keyrir í hlutverki. Hann les stillingar úr hlutverkinu, finnur diskpláss í gegnum hlutverkið, fær skilríki sett upp af hlutverkinu og keyrir uppsetningarskriftur sem stjórnandi áður en hlutverkið ræsist. Allt þetta þarf að leysa af hólmi.
Eitt í viðbót áður en þú lest opinberu leiðbeiningarnar. Tilkynning Microsoft um endalokin og algengu spurningarnar nefna einn áfangastað, Service Fabric managed cluster. Yfirlitssíðan telur upp fimm, og ákvörðunarfylki Microsoft sjálfs fyrir flutning ber saman sjö. Service Fabric er sjálfgefinn kostur, ekki skilyrði, og fyrir mörg vefhlutverk er hann rangur.
Áfangastaðirnir, og hvenær hver á við
Vef- og vinnsluhlutverk þurfa ekki að lenda á sama stað. Veldu áfangastað fyrir hvert hlutverk.
App Service (Windows). Það sem kemst næst vefhlutverki fyrir ASP.NET forrit. Windows-tilvik koma með studdu .NET Framework útgáfurnar uppsettar, svo Web Forms og MVC 5 keyra án endurskrifunar. Vinnsluhlutverk geta fylgt sem WebJobs, sem keyra „í sama tilviki og vefforrit“ án aukakostnaðar. Takmörkin eru vélin sjálf: Microsoft beinir forritum sem þurfa COM-íhluti, aðgang að registry eða MSI-uppsetningarforrit á Managed Instance, svo upphafsverk með auknum réttindum eiga engan samastað á venjulegri áskrift.
App Service Managed Instance. Smíðað fyrir eldri Windows-vefforrit. Samkvæmt yfirliti Microsoft er það „almennt aðgengilegt fyrir Windows-vefforrit á völdum svæðum“, takmarkað við Pv4 og Pmv4 áskriftirnar, með .NET Framework 3.5 og 4.8 uppsett fyrir fram og PowerShell-uppsetningarskriftum sem geta skráð COM-íhluti, skrifað registry-lykla, keyrt MSI-uppsetningarforrit og stillt IIS. Það nær yfir mest af því sem upphafsverk með auknum réttindum gerðu. Takmörkin: aðeins vefforrit (engin WebJobs), engir gámar, aðeins Entra ID og managed identity (engin lénsaðild, NTLM eða Kerberos), og þegar þetta er skrifað er eina evrópska svæðið á listanum North Europe.
Container Apps. Gott fyrir vinnsluhlutverk þegar þau eru komin á nútímalegt .NET: skölun eftir biðröðum, tímasett verk og verk sem ræsast við atburði, skölun niður í núll. En kröfurnar um gáma segja: „Gámamyndir byggðar á Linux (linux/amd64) eru skilyrði.“ Kóði á .NET Framework keyrir ekki þar fyrr en hann hefur verið fluttur yfir.
Azure Kubernetes Service. Keyrir Windows Server gáma í Windows-hnútahópum, svo hægt er að setja .NET Framework hlutverk í gám og flytja það. Ákvörðunarfylkið metur bæði flækjustig flutningsins og rekstrarbyrðina sem mikil. Það hentar ef þú keyrir þegar Kubernetes, ekki sem fyrsti klasinn fyrir eitt eldra forrit.
Virtual Machine Scale Sets. Fylkið kallar það „nær Cloud Services líkaninu og býður upp á auðveldari flutning óbreytts kerfis (lift-and-shift)“. Þú færð sýndarvélina aftur, ásamt uppfærslunum, myndasmíðinni og IIS-uppsetningunni sem hlutverkið sá áður um fyrir þig.
Service Fabric managed cluster. Áfangastaðurinn sem Microsoft nefnir. Vinnsluhlutverk varpast hreint á hann. Vefhlutverk gera það oft ekki: Service Fabric „styður ekki IIS“, og umbreytingarleiðbeiningarnar telja ASP.NET Web Forms upp sem óstutt, með umbreytingu yfir í ASP.NET Core MVC sem leiðina. Leiðbeiningar um flutning yfir í Service Fabric bæta við að managed clusters „styðji ekki gáma eins og er“, svo forrit sem er háð IIS þarf hefðbundinn klasa, með meiru að reka.
Ákvörðunartafla
| Hlutverkið þitt lítur svona út | Líklegur áfangastaður | Hvar vinnan liggur |
|---|---|---|
| ASP.NET Web Forms eða MVC 5 vefhlutverk, upphafsverk smávægileg eða engin | App Service (Windows) | Stillingar, skilríki, útgáfuferli |
| Vefhlutverk þar sem upphafsverk setja upp COM-íhluti, MSI eða registry-lykla | App Service Managed Instance | Endurskrifun upphafsverka sem uppsetningarskriftur; athugun á svæði og áskrift |
| .NET Framework vinnsluhlutverk sem spyr biðröð, hóflegt álag | WebJob við hlið vefforritsins | Að skipta RoleEntryPoint út fyrir skipanalínuhýsil |
| Vinnsluhlutverk sem þú ert tilbúinn að flytja yfir á nútímalegt .NET | Container Apps | Flutningurinn sjálfur, síðan gámamynd |
| Mörg hlutverk, og teymi sem keyrir þegar Kubernetes | AKS með Windows-hnútahópum | Myndir, rekstur klasa |
| Miklar tengingar við innbyggðan kóða, enginn vilji til kóðabreytinga | VM Scale Sets | Uppfærslur stýrikerfis og viðhald mynda, til frambúðar |
| Kerfi þar sem vinnsluhlutverk vega þyngst, vefhlutinn þegar á ASP.NET Core | Service Fabric managed cluster | Að læra á vettvanginn; ekkert IIS, engir gámar |
Hvað breytist í kóðanum
Leitaðu í lausninni að Microsoft.WindowsAzure.ServiceRuntime. Hver skrá sem flytur það inn er á listanum.
RoleEntryPoint
Vinnsluhlutverk er klasi sem erfir RoleEntryPoint og yfirskrifar OnStart, Run og OnStop. Ef Run skilar er tilvikið endurræst. Service Fabric sameinar allt þrennt í eitt RunAsync sem á að stöðvast „þegar merki er gefið á CancellationToken RunAsync-aðferðarinnar“. Á App Service eða í gámi verður sama rökfræði að skipanalínuforriti eða hýstri bakgrunnsþjónustu með lykkju og stöðvunarmerki (cancellation token).
Hlutinn sem fólk missir af er lokunin. OnStop gaf þér augnablik til að ljúka við skilaboðin sem voru í vinnslu. Gakktu úr skugga um að nýi hýsillinn skili stöðvunarmerkinu áfram, og að skilaboð sem eru yfirgefin í miðri vinnslu megi örugglega vinna tvisvar.
Vefhlutverk eru oft líka með slíkan klasa, yfirleitt WebRole.cs. Ef OnStart hans gerir eitthvað (IIS-lagfæringar, upphitun skyndiminnis), finndu út hvað áður en þú eyðir honum.
RoleEnvironment
RoleEnvironment.GetConfigurationSettingValue("Key") les stillingar úr .cscfg. Ekkert utan Cloud Services býður upp á það. Áður en nokkuð er flutt, vefðu hvert kall inn í eitt lítið stillingaviðmót og beindu síðan því viðmóti á forritastillingar, umhverfisbreytur eða Key Vault á nýja hýslinum. Það er ódýrasta breytingin í verkefninu og hún gerir restina prófanlega á fartölvu.
Þrjár aðrar notkanir til að leita að:
RoleEnvironment.Changed, sem beitti stillingabreytingum án endurræsingar. Service Fabric hefur sambærilegan atburð. Annars staðar skaltu gera ráð fyrir að stillingabreyting endurræsi ferlið og prófa hvað það gerir við vinnu sem er í gangi.RoleEnvironment.CurrentRoleInstancenotað til að velja eitt tilvik fyrir tímasetta vinnu. Ræst WebJobs (triggered) keyra á einu tilviki; samfelld (continuous) keyra á öllum tilvikum nema það sé takmarkað. Taktu meðvitaða ákvörðun.- Greinar fyrir
RoleEnvironment.IsAvailableogIsEmulated. Þær aðskilja „skýja“leiðina frá „staðbundnu“ leiðinni, og önnur þeirra er við það að verða dauður kóði.
.cscfg og .csdef
.cscfg geymir stillingar fyrir hvert umhverfi, fjölda tilvika og fingraför skilríkja. .csdef geymir endapunkta, stærð sýndarvélar, staðbundna geymslu, upphafsverk, skilríkjageymslur og stundum nokkur IIS-vefsvæði innan eins vefhlutverks. Farðu yfir báðar línu fyrir línu og skrifaðu niður hvar hver færsla á heima á eftir: í forritastillingu, Key Vault tilvísun, innviðakóða, eða hvergi. Innri endapunktar sem leyfa hlutverkum að kalla beint hvert á annað þurfa staðgengil, annaðhvort þjónustuvistfang eða biðröð.
Skilríki
Extended support neyddi skilríki þegar inn í Key Vault, svo sá hluti vinnunnar frá 2024 borgar sig. Það sem breytist er hvernig kóðinn finnur þau. .csdef setur skilríki upp í nafngreinda geymslu, oft LocalMachine. Á Windows App Service gerir stillingin WEBSITE_LOAD_CERTIFICATES þau aðgengileg í Current User\My. Kóði sem opnar LocalMachine geymsluna finnur ekkert, og fyrsta kallið sem þarf skilríkið bregst. Í Linux-gámum skaltu í staðinn hlaða því úr Key Vault við ræsingu.
Upphafsverk
Opnaðu Startup.cmd. Það er hér sem óvæntu atriðin búa, yfirleitt keyrð með executionContext="elevated": leturgerðir fyrir PDF-gerð, COM-íhlutur, IIS rewrite eining, registry-breyting fyrir TLS. Hver lína á sér þrjú möguleg örlög: ekki lengur þörf, flutt inn í uppsetningarskriftu á Managed Instance, eða bökuð inn í gámamynd eða sýndarvélarmynd.
Staðbundin geymsla
LocalStorage tilfang í .csdef, lesið í gegnum RoleEnvironment.GetLocalResource, gaf hverju tilviki vinnudisk. Notaðu bráðabirgðamöppu vettvangsins fyrir raunverulegar bráðabirgðaskrár. Allt sem þarf að lifa af endurræsingu, þar á meðal skrár sem einhver gerði ráð fyrir að væru varanlegar, fer í Blob Storage.
Web Forms
Þetta er ákvörðunin sem ræður restinni. Web Forms byggir á System.Web og á enga ASP.NET Core útgáfu, svo að flytja Web Forms forrit yfir í Service Fabric eða Container Apps þýðir að endurskrifa notendaviðmót þess. App Service, Managed Instance, Windows-gámur eða scale set geta öll keyrt það óbreytt. Fluttu það eins og það er og gerðu nútímavæðinguna að sérstöku verkefni með eigin fjárhagsáætlun. Endurskrifun notendaviðmóts á ekki heima á krítísku leiðinni að lokunardegi.
Afgangurinn
VIP swap milli tveggja skýjaþjónusta verður að útgáfuraufum (deployment slots) á App Service eða revisions á Container Apps. Annálar sem sendir eru í gegnum greiningarviðbótina (WAD) þurfa nýjan áfangastað, yfirleitt Application Insights. Venjulegt App Service og Container Apps bjóða ekki upp á fjartengt skjáborð; Managed Instance leyfir það í gegnum Azure Bastion, eingöngu til greiningar.
Sex mánaða áætlun
Talið aftur á bak frá 31. mars 2027, með jólafríið í miðjunni.
Október: úttekt og val á áfangastað. Skráðu hverja extended support uppsetningu. Fyrir hvert hlutverk skaltu skrá .NET Framework útgáfuna, Web Forms eða MVC, hvert RoleEnvironment kall, upphafsverk, staðbundið geymslutilfang, skilríki og endapunkt. Athugaðu síðan óþægilega hlutann: geturðu smíðað pakkann sem er í rekstri úr kóðanum sem þú hefur? Með kerfi sem stofur smíðuðu er svarið stundum nei, og október er mánuðurinn til að komast að því. Veldu áfangastað fyrir hvert hlutverk.
Nóvember: eitt hlutverk, frá upphafi til enda. Bættu við stillingaumbúðunum, skrifaðu markumhverfið sem innviðakóða og komdu einu hlutverki (yfirleitt einfaldasta vinnsluhlutverkinu) í keyrslu í prófunarumhverfi með annálum, skilríkjum og útgáfuferli.
Desember og janúar: fluttu restina. Skiptu út inngangspunktum, upphafsverkum og staðbundinni geymslu. Álagsprófaðu sviðsetningarumhverfi með gögnum sem líkjast raungögnum: WebJob eða gámur nær ef til vill ekki sömu afköstum og sérstök sýndarvél fyrir hlutverk.
Febrúar: samhliða keyrsla. Keyrðu nýja umhverfið á raunverulegri umferð. Fyrir vinnsluhlutverk sem deila biðröð með gömlu hlutverkunum, gerðu annaðhvort vinnsluna örugga gegn endurtekningu (idempotent) fyrst eða stöðvaðu gömlu vinnsluhlutverkin áður en þú ræsir þau nýju.
Byrjun mars: yfirfærsla. Skiptu um DNS með góðum fyrirvara. Haltu gömlu uppsetningunni stöðvaðri en óskertri í viku eða tvær og eyddu henni svo. Ekki tímasetja yfirfærsluna í síðustu viku mars: misheppnuð yfirfærsla fær þá enga aðra tilraun.
Ef þú byrjar í janúar í staðinn, slepptu nútímavæðingunni alveg. Veldu áfangastaðinn sem krefst minnstra kóðabreytinga (App Service, Managed Instance eða scale sets), fluttu, og endurskipulegðu kóðann eftir á.
Hvað er óljóst
Microsoft segir að þjónustunni verði „hætt að fullu“ og að flutningur sé nauðsynlegur „til að forðast þjónusturof“. Síðurnar sem við lásum segja ekki hvað verður um uppsetningu sem er enn í keyrslu 1. apríl 2027. Ekki gera ráð fyrir að komast að því. Svæði og áskriftir fyrir Managed Instance munu líka líklega breytast á næstu mánuðum, svo staðfestu þau þegar þú tekur ákvörðun, ekki út frá þessari grein.
Hvar þú færð aðstoð
Við tökum við forritum sem aðrir smíðuðu, finnum út hvernig þau keyra og flytjum þau: úttektina, áfangastað fyrir hvert hlutverk, breytingarnar á RoleEnvironment og upphafsverkum, og yfirfærsluna. Vinna okkar við viðhald eldri kerfa nær yfir .NET Framework og Web Forms; ef þitt eigið teymi sér um flutninginn og vantar fleiri hendur, sjáðu liðsauka.
Ef þú ert með Cloud Services uppsetningu og dagsetningu eftir sex mánuði, skrifaðu á office@c9group.dev.