Skip to content

Latest commit

 

History

History
59 lines (40 loc) · 3.67 KB

README.md

File metadata and controls

59 lines (40 loc) · 3.67 KB

Unravel

Unravel your dependence on System.Web.

Goals

Unravel's goal is to facilitate in-place upgrade from ASP.NET MVC and Web API on .NET Framework to ASP.NET Core 2.1 (the last version supported on .NET Framework). Long-lived upgrade branches are bad.

The ultimate goal is that an upgrade to ASP.NET Core could be reduced to roughly:

  1. Remove Global.asax, Web.config, and other lingering ASP.NET artifacts
  2. Remove <ProjectTypeGuids> from .csproj
  3. Migrate .csproj to SDK format with Project2015To2017.Migrate2019.Tool
  4. Convert remaining references to OWIN IAppBuilder to UseOwin()
  5. Update Startup.cs to inherit from Microsoft.AspNetCore.Hosting.StartupBase, or to a convention-based Startup
  6. Convert project to .NET Core Console Application with standard ASP.NET Core Program.cs

We'll see how close we can get…

Getting Started

  1. Set up Unravel.Startup
  2. Make sure everything still works!
  3. Configure additional packages based on which parts of ASP.NET are in use.
  4. Implement ConfigureServices() with additional services and configuration.
  5. Begin migration to dependency injection, modern configuration, modern logging, etc.
  6. Open issues with your pain points.
  7. Begin migration from ASP.NET to ASP.NET Core.
  8. Open more issues with your pain points.

Packages

Unravel provides granular packages to avoid extra dependencies.

ASP.NET

  • Unravel.Startup provides a fully configurable ASP.NET Core IWebHost on top of System.Web via OWIN, with forward-compatible dependency injection, configuration and logging.
  • Unravel.AspNet.Mvc provides an AddAspNetMvc() extension method on IServiceCollection that registers a System.Web.Mvc.IDependencyResolver and allows additional configuration.
  • Unravel.AspNet.WebApi provides an AddAspNetWebApi() extension method on IServiceCollection that registers a System.Web.Http.Dependencies.IDependencyResolver and allows additional configuration.

ASP.NET Identity

Microsoft.AspNet.Identity has its own approach to dependency injection which needs to be adapted to work with IServiceCollection.

ASP.NET Core

Unravel will try to enable as much of ASP.NET Core as possible. (Experimental!)

Credits