![]() ![]() ![]() The progressive migration also brought us another problem – incompatibility in Authentication.NET team suggested to avoid targeting netstandard2.0 and do multi-targeting more often. As we still need net472 build to run legacy apps, the. Multi-targeting increases compile time.NET Core, as long as the log method has an overload which accepts interpolated string handler, using interpolated string as log content is the most efficient and expressive way. For example, using interpolated string as log content is a bad pattern for net472, since that creates a string unconditionally, but for. Even for multi-targeting projects, conditional compilation is more and more needed here and there, for different perf/cost characteristics of the 2 runtimes.NET Core-only dependencies can’t be used, typically those with better performance & cost. And newer versions even start to be incompatible (at compile time) to old ones. Sticking to old version doesn’t always work, since old version starts to have bugs that only show up in.And Condition attribute only works for multi-targeting, so we needed to turn more and more netstandard2.0 to multi-targeting.NET Framework build, so we had to stick to old versions or add Condition attributes here and there, in project files. More and more dependencies removed net472, even.We found that in this way code readability & maintainability are improved, and it became quite obvious which configuration data a component consumes.Īs time went by, we found that it became more and more problematic to target netstandard2.0 or to multi-target. Now all code structs access configuration data with injected IOptions or IOptionsMonitor. NET 6 migration as a chance to apply the options pattern. Wherever a piece of configuration info was needed, code was written to retrieve it in some way. Previously, configuration data was accessed in an ad-hoc way. We did, however, need to spend time on the configuration code in the web apps. When we finally started migrating the web apps, we found that because of the work spent in stage 1 and 2, little effort was required to remove incompatibilities. NET Core app to consume, and most projects targeted netstandard2.0 or multi-targeted net472 & net6. Second stage: most dependencies were upgraded or replaced to allow.First stage: most references to HttpContext (and System.Web namespace) were removed.We started with targeting netstandard2.0 or multi-targeting both net472 & net6. We prepared for the migration over a couple years in two stages. ![]() NET 6 migration of the backend service, which handles CRUD REST APIs to access data in SQL Azure databases. ![]() SDK style project file & multi-targeting, ASP.NET Core app development, especially middleware & filters pipeline). NET 6, gained near 200% increase in CPU efficiency, and more importantly, refreshed team members’ skillset (e.g. In 2022, we migrated the frontend REST API service to. NET (predominantly, ASP.NET WebForm/WebAPI on. serving static & dynamic web content, providing REST APIs for Forms web client & integration parties to consume, etc.). The Forms backend service has several microservices, which handle various workloads (e.g. Many Microsoft365 Education subscribers use quizzes to do class tests and homework. It’s widely used in Microsoft365 Business subscribers. Microsoft Forms is a product for creating surveys and quizzes. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |