O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Carregando em…3
×

Confira estes a seguir

1 de 25 Anúncio

Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente

Baixar para ler offline

Molte applicazione sono (ancora) sviluppate in WebForm e non possono essere convertite automaticamente ad ASP.NET Core. Una riscrittura completa in molti casi è impossibile o impensabile da attuare. In questa sessione vedremo come migrare in modo graduale queste tipologie di applicazioni verso ASP.NET Core, andando in dettaglio nelle varie problematiche che solitamente si possono presentare. La sessione deriva da un'esperienza reale, che ha permesso di conoscere (nel bene o nel male) le difficoltà che si nascondo in queste migrazioni.

Evento: https://www.xedotnet.org/eventi/one-day-enterprise-application/

Molte applicazione sono (ancora) sviluppate in WebForm e non possono essere convertite automaticamente ad ASP.NET Core. Una riscrittura completa in molti casi è impossibile o impensabile da attuare. In questa sessione vedremo come migrare in modo graduale queste tipologie di applicazioni verso ASP.NET Core, andando in dettaglio nelle varie problematiche che solitamente si possono presentare. La sessione deriva da un'esperienza reale, che ha permesso di conoscere (nel bene o nel male) le difficoltà che si nascondo in queste migrazioni.

Evento: https://www.xedotnet.org/eventi/one-day-enterprise-application/

Anúncio
Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Semelhante a Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente (20)

Anúncio

Mais recentes (20)

Anúncio

Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente

  1. 1. www.xedotnet.org Migrare da WebForm ad ASP.NET Core gradualmente #XeOneDay Andrea Dottor & Marco Bortolin Evento realizzato grazie al supporto di
  2. 2. www.xedotnet.org Migrare da WebForm ad ASP.NET Core gradualmente #XeOneDay Evento realizzato grazie al supporto di Emmett Brown (Doc) Andrea Dottor Marty McFly (Martin) Marco Bortolin
  3. 3. Da dove partiamo • Asp.net Web Forms (Inizio secolo) • VB .Net ? • Aggiunta di funzionalità al nostro applicativo, dimensioni sempre più importanti • Passando per varie versione del Framework e migrazioni intermedie • Nuove esigenze/opportunità (Cloud, Container) • GDPR #XeOneDay 4
  4. 4. Perché migrare a .NET Core • Performance • Pensato per il cloud • Cross platform • Mantenibilità • Rappresenta il futuro • Sicurezza #XeOneDay 5
  5. 5. Migrare un Progetto: Cosa possiamo fare?
  6. 6. • Soluzione proposta in tutte le linee guida, articoli, documentazione • Ma non sempre praticabile • Valido per applicativi medio-piccoli • Non permette un aggiornamento in produzione fino a porting concluso • E se dobbiamo implementare nuove funzionalità (durante il porting)? #XeOneDay 7 Migrare un progetto - One Shot
  7. 7. Migrare un progetto - Gradualmente • Impossibilità di migrare One-shot • Utilizzo immediato del nuovo framework • Il nuovo applicativo affianca il vecchio fino al termine del porting • Permette un periodo di migrazione più lungo • Nuove funzionalità vengono implementate nella nuova applicazione • Il periodo di messa online del nuovo applicativo è "più breve", in quanto avrà solo un set minimo di funzionalità #XeOneDay 8
  8. 8. DEMO 22/02/16 9
  9. 9. 1 - Uniformare la grafica • Ridurre al minimo le differenze tra gli applicativi (nuovo e Vecchio) • Bootstrap o Grafica custom • Scelta di eventuali librerie di terze parti (DevExpress, Telerik ecc..) #XeOneDay 10
  10. 10. • Propone un modello di sviluppo "page-based" • Facilita il porting delle funzionalità da Web-Form • Si ha l'associazione 1 a 1 tra pagina aspx e file cshtml • La documentazione riporta: "la scelta consigliata per lo sviluppo delle UI" #XeOneDay 11 2 - Razor pages
  11. 11. • Semplificano la navigazione (e manutenzione) del progetto • View, Model e Controller/CodeBehind sono in due file contigui • Es MVC: • /Controllers/ProductsController.cs • /Models/Products/IndexViewModel.cs • /Views/Products/Index.cshtml • Es RazorPages: • /Pages/Products/Index.cshtml • /Pages/Products/Index.cshtml.cs #XeOneDay 12 Razor Pages
  12. 12. • ASP.NET Identity offre una tecnologia matura per la gestione dell'autenticazione • Supporto all'autenticazione a due fattori • Blocco account dopo n tentativi falliti • Gestione ruoli • Verifica email ed sms • !! Prestare attenzione alle versioni utilizzate di ASP.NET Identity • In ASP.NET Core non è disponibile nativamente una implementazione dell'autenticazione OAuth2 • Si devono utilizzare librerie esterne • Es: IdentityServer #XeOneDay 13 3 - Autenticazione
  13. 13. • Il modo più semplice per far si che un utente possa essere autenticato nei due applicativi è implementare un meccanismo di SSO basato su un cookie di autenticazione condiviso. • Per condividere un cookie tra WebForm e .NET Core di deve utilizzare almeno il framework 4.6.1 • Microsoft ha realizzato il package Microsoft.Owin.Security.Interop per permettere questa condivisione • Le due applicazioni dovranno condividere alcune chiavi che permettono la criptazione/decriptazione dei dati nel cookie #XeOneDay 14 Condivisione cookie di autenticazione
  14. 14. • Da ASP.NET Identity (easy) • Scrip di esempio per migrate Asp.net Identity to Core https://github.com/bortolin/MigrateToAspNetIdentityCoreDatabase • Campi personalizzati • Different Password Hash: services.Configure<PasswordHasherOptions>( options => options.CompatibilityMode = PasswordHasherCompatibilityMode.IdentityV2); • Da Membership Provider (need extra work) https://travis.io/blog/2015/03/24/migrate-from-aspnet-membership-to-aspnet-identity/ 15 Migrare ad ASP.NET Identity Core #XeOneDay
  15. 15. 4 - Riuso del codice esistente 16 • Si presuppone di aver strutturato bene il progetto • Codebase suddivisa su progetti diversi • Business Logic e Data Access separati dalla UI • Dependecy Injection • Eventuale refactoring preventivo alla migrazione
  16. 16. Cos'è e perché .NET Standard • Permette la condivisione di codice tra applicativi .NET Core e .NET Framework • Class library .NET Framework possono essere convertite in Class Library .NET Standard modificando il file csproj • Possiamo utilizzare codice scritto in dll .NET Framework, potendolo riutilizzare nel nuovo applicativo .NET Core #XeOneDay 17
  17. 17. • TagHelper e HtmlHelper permettono di centralizzare la creazione di codice html • Si possono creare helper che facilitano la scrittura di codice XeOneDay 18 Riuso del codice con *Helpers @Html .Hunext() .HunextPopupEdit( "_AutomezzoFormEdit", @<text>Modifica Automezzo</text>, "function() { Hunext.refreshGrid('Automezzi'); }") <hunext-popupform> Field 1: <input asp-for="Field1" /> Field 2: <input asp-for="Field2" /> <button type="submit" class=" btn btn-primary">Save</button> <button type="button" class=" btn btn-default" data- dismiss="modal">Undo</button> </hunext-popupform>
  18. 18. 5 - Entity Framework / Accesso ai dati • Entity Framework 6 ad oggi non è supportato su .NET Core • Si può utilizzare, ma utilizzando il .NET Framework come runtime • E' previsto il supporto a partire da .NET Core 3.0 • Suggerito migrare EF6 verso Entity Framework Core
  19. 19. • E' possibile far eseguire l'applicativo WebForm in una Virtual Application di IIS, figlia dell'applicativo ASP.NET Core • In root risponderà l'applicativo ASP.NET Core • www.tempuri.org  Index.cshtml di ASP.NET Core • Agli indirizzi che puntato a /prev/ risponderà il vecchio applicativo • www.tempuri.org/prev/products  Products.aspx di WebForm • In WebForm è possibile rimuovere l'estensione dei file dall'url in modo che questi siano più simili a quelli della nuova applicazione • Package nuget Microsoft.AspNet.FriendlyUrls #XeOneDay 20 6 - Pubblicazione ed esecuzione
  20. 20. 6- Problemi di cui tener conto #XeOneDay 21
  21. 21. • Sessione • Si deve trovare un'alternativa. Cookie? Database? • Log • Sconsigliato il log su file. Due applicativi possono avere difficoltà a scrivere nello stesso file. • Dipendenze esterne • Tutte le dipendenze supportano .NET Core o .NET Standard? • Localizzazione • Web Api • Si dispone di test per verificare il porting? • Servizi asmx • Si possono re-implementare con WCF. Ma ad oggi la configurazione va eseguita via codice e non tramite configurazione #XeOneDay 22 Problematiche da affrontare
  22. 22. • Codice disponibile su github: • https://github.com/andreadottor/Dottor.MicrosoftIgniteTour2019 • https://github.com/bortolin/MigrateToAspNetIdentityCoreDatabase • Share cookies among apps with ASP.NET and ASP.NET Core • https://docs.microsoft.com/it-it/aspnet/core/security/cookie-sharing?view=aspnetcore-2.2 • Cookie Sharing Sample App • https://github.com/aspnet/Docs/tree/master/aspnetcore/security/cookie-sharing/sample/ • Introduction to Razor Pages in ASP.NET Core • https://docs.microsoft.com/en-us/aspnet/core/razor-pages/?view=aspnetcore- 2.2&tabs=visual-studio • Get Started with ASP.NET Core and Entity Framework 6 • https://docs.microsoft.com/en-us/aspnet/core/data/entity-framework-6?view=aspnetcore-2.2 • Porting an EF6 Code-Based Model to EF Core • https://docs.microsoft.com/en-us/ef/efcore-and-ef6/porting/port-code • Exploring the ASP.NET Core Identity PasswordHasher • https://andrewlock.net/exploring-the-asp-net-core-identity-passwordhasher/ #XeOneDay 23 Links
  23. 23. Domande?
  24. 24. #XeOneDay 25 www.dottor.net andrea@dottor.net @dottor Contatti Andrea Dottor github.com/bortolin m.bortolin@hunext.com @marcobortolin Marco Bortolin

×