From 9c2a71ecabc59f0c32769455857734af49739823 Mon Sep 17 00:00:00 2001 From: oliag Date: Mon, 2 Mar 2020 19:40:17 -0800 Subject: [PATCH 1/7] Add chapter 1 --- .../bidirectional-effort.png | Bin 0 -> 40773 bytes .../desktop-to-modern.png | Bin 0 -> 15325 bytes .../microsoft-desktop-technologies.png | Bin 0 -> 12396 bytes .../modern-to-desktop.png | Bin 0 -> 15577 bytes .../telerik-survey.png | Bin 0 -> 26920 bytes .../uwp-structure.png | Bin 0 -> 48834 bytes .../why-modern-desktop-applications.md | 169 ++++++++++++++++++ 7 files changed, 169 insertions(+) create mode 100644 docs/architecture/modernize-desktop/media/why-modern-desktop-applications/bidirectional-effort.png create mode 100644 docs/architecture/modernize-desktop/media/why-modern-desktop-applications/desktop-to-modern.png create mode 100644 docs/architecture/modernize-desktop/media/why-modern-desktop-applications/microsoft-desktop-technologies.png create mode 100644 docs/architecture/modernize-desktop/media/why-modern-desktop-applications/modern-to-desktop.png create mode 100644 docs/architecture/modernize-desktop/media/why-modern-desktop-applications/telerik-survey.png create mode 100644 docs/architecture/modernize-desktop/media/why-modern-desktop-applications/uwp-structure.png create mode 100644 docs/architecture/modernize-desktop/why-modern-desktop-applications.md diff --git a/docs/architecture/modernize-desktop/media/why-modern-desktop-applications/bidirectional-effort.png b/docs/architecture/modernize-desktop/media/why-modern-desktop-applications/bidirectional-effort.png new file mode 100644 index 0000000000000000000000000000000000000000..b08f6ab48ce80c4090d33526e28859d46a9a7103 GIT binary patch literal 40773 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 NdRj)B_3DnV{twYj)JgyV literal 0 HcmV?d00001 diff --git a/docs/architecture/modernize-desktop/media/why-modern-desktop-applications/desktop-to-modern.png b/docs/architecture/modernize-desktop/media/why-modern-desktop-applications/desktop-to-modern.png new file mode 100644 index 0000000000000000000000000000000000000000..20ae2750d1d1ba0300f69cb28a23c92b52f6c97e GIT binary patch literal 15325 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 TBR!0g3#TBXB3&hE9Q1zx7lVAE literal 0 HcmV?d00001 diff --git a/docs/architecture/modernize-desktop/media/why-modern-desktop-applications/microsoft-desktop-technologies.png b/docs/architecture/modernize-desktop/media/why-modern-desktop-applications/microsoft-desktop-technologies.png new file mode 100644 index 0000000000000000000000000000000000000000..ad26529cd811b48ad811fc2b84b9823e091f81a5 GIT binary patch literal 12396 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 OjFgz1XxV2yzyAVKv`f|i literal 0 HcmV?d00001 diff --git a/docs/architecture/modernize-desktop/media/why-modern-desktop-applications/modern-to-desktop.png b/docs/architecture/modernize-desktop/media/why-modern-desktop-applications/modern-to-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..2431e0917cca20c4ab9b982c827bbb00142e1cb5 GIT binary patch literal 15577 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 literal 0 HcmV?d00001 diff --git a/docs/architecture/modernize-desktop/media/why-modern-desktop-applications/telerik-survey.png b/docs/architecture/modernize-desktop/media/why-modern-desktop-applications/telerik-survey.png new file mode 100644 index 0000000000000000000000000000000000000000..119ca0c49b231d9378a5fd140eafadd9e4e71a0e GIT binary patch literal 26920 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 UaM=U=b)z#%@@jJMTc*$c51|IL3IG5A literal 0 HcmV?d00001 diff --git a/docs/architecture/modernize-desktop/media/why-modern-desktop-applications/uwp-structure.png b/docs/architecture/modernize-desktop/media/why-modern-desktop-applications/uwp-structure.png new file mode 100644 index 0000000000000000000000000000000000000000..76455b95b9f274270f6b0e3a3a2aa79462f71c11 GIT binary patch literal 48834 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 Date: Fri, 6 Mar 2020 21:59:32 -0800 Subject: [PATCH 2/7] Update docs/architecture/modernize-desktop/why-modern-desktop-applications.md Co-Authored-By: Maira Wenzel --- .../modernize-desktop/why-modern-desktop-applications.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/architecture/modernize-desktop/why-modern-desktop-applications.md b/docs/architecture/modernize-desktop/why-modern-desktop-applications.md index c3960e5e7a8cd..4677c62aa8602 100644 --- a/docs/architecture/modernize-desktop/why-modern-desktop-applications.md +++ b/docs/architecture/modernize-desktop/why-modern-desktop-applications.md @@ -124,7 +124,7 @@ The structure of this guide reflects three different axes to accomplish moderniz ### Modern Features -Say you have a working Windows Forms application that a sales representative of your company uses to fill in a customer order. A new requirement comes in to enable the customer to sign-in the order using a tablet pen. Inking is native in today´s operating systems and technologies but was not available when the app was developed. +Say you have a working Windows Forms application that a sales representative of your company uses to fill in a customer order. A new requirement comes in to enable the customer to sign the order using a tablet pen. Inking is native in today´s operating systems and technologies, but it wasn't available when the app was developed. This path will show you how you can leverage modern desktop features into your existing desktop development. From 8f5c33be4e779ed4078807c34e4ed94d59d9e238 Mon Sep 17 00:00:00 2001 From: oliag Date: Fri, 6 Mar 2020 22:08:27 -0800 Subject: [PATCH 3/7] Updated to 85 Acrolinx score --- .../why-modern-desktop-applications.md | 67 +++++++++++-------- 1 file changed, 38 insertions(+), 29 deletions(-) diff --git a/docs/architecture/modernize-desktop/why-modern-desktop-applications.md b/docs/architecture/modernize-desktop/why-modern-desktop-applications.md index 4677c62aa8602..e3c5e0bce9a91 100644 --- a/docs/architecture/modernize-desktop/why-modern-desktop-applications.md +++ b/docs/architecture/modernize-desktop/why-modern-desktop-applications.md @@ -1,6 +1,6 @@ --- title: Why Modern Desktop Applications? -description: Learn about desktop technologies such as Windows Forms, WPF and UWP in the modern world. +description: Learn about desktop technologies such as Windows Forms, WPF, and UWP in the modern world. ms.date: 09/16/2019 --- # Why Modern Desktop Applications? @@ -13,11 +13,11 @@ Back in early 2000s, one multinational company started developing a distributed ### Your story -You might find yourself in the same boat, where you have mature Windows Forms (also known as WinForms) or WPF (Windows Presentation Foundation) applications that have proved their reliability over the years. You probably want to keep using these applications for many more years. At the same time, since those applications were written some time ago, they might be missing capabilities like modern look, performance, integration with new devices and platform features and so on, which gives them a feel of "old tech". There is another problem that might concern you as a developer. While working on the older .NET Framework versions and maintaining applications that were written a while ago, you might feel like you aren't learning new technologies and missing on building modern technical skills. If that is your story – this book is for you! +You might find yourself in the same boat, where you have mature Windows Forms (also known as WinForms) or WPF (Windows Presentation Foundation) applications that have proved their reliability over the years. You probably want to keep using these applications for many more years. At the same time, since those applications were written some time ago, they might be missing capabilities like modern look, performance, integration with new devices and platform features, and so on, which gives them a feel of "old tech". There is another problem that might concern you as a developer. While working on the older .NET Framework versions and maintaining applications that were written a while ago, you might feel like you aren't learning new technologies and missing on building modern technical skills. If that is your story – this book is for you! ### About this guide -This guide is about strategies you can adopt to move your existing desktop applications through the path of modernization and incorporate the latest runtime, language and platform features. You will discover that there is no unique recipe as each application is different, and so are your requirements and preferences. The good news is that there are common approaches you can apply to add new features and capabilities to your applications. Some of them will not even require major modifications of your code. In this book, we will reveal how all those features work behind the scenes and explain the mechanics of their implementations. Moreover, you will find some common scenarios for modernizing existing desktop applications depicted in detail so you can find inspiration for evolving your projects. +This guide is about strategies you can adopt to move your existing desktop applications through the path of modernization and incorporate the latest runtime, language, and platform features. You will discover that there is no unique recipe as each application is different, and so are your requirements and preferences. The good news is that there are common approaches you can apply to add new features and capabilities to your applications. Some of them will not even require major modifications of your code. In this book, we will reveal how all those features work behind the scenes and explain the mechanics of their implementations. Moreover, you will find some common scenarios for modernizing existing desktop applications depicted in detail so you can find inspiration for evolving your projects. Microsoft approach to modernizing existing applications is to give you the flexibility to create your own customized path. All the modernization strategies described in this book are mostly independent. You can choose ones that are relevant for your application and skip others that aren't important for you. In other words, you will be able to mix and match the strategies to best address your application needs. @@ -37,11 +37,11 @@ Here are some reasons for choosing desktop applications in your development: - The performance of desktop applications for complex calculations is much higher than performance of web applications. - Running custom logic on the client side is possible but much harder with a web application. - Using multithreading is easier and more efficient in a desktop application. -- The learning curve for designing User Interfaces is smother and in case of WinForms is completely intuitive with drag-and-drop experience of the Windows Forms designer. -- It is easy to start coding and testing your algorithms without the need to set up a server infrastructure or to care about connectivity problems, firewalls and browser compatibility. +- The learning curve for designing User Interfaces is not steep and in case of WinForms is completely intuitive with drag-and-drop experience of the Windows Forms designer. +- It is easy to start coding and testing your algorithms without the need to set up a server infrastructure or to care about connectivity problems, firewalls, and browser compatibility. - Debugging is powerful as compared to web debugging. -- Access to hardware devices like camera, Bluetooth or card readers is easy. -- And since the technology have been around for a long time there is a huge human expertise and knowledge database available on developing desktop applications. +- Access to hardware devices like camera, Bluetooth, or card readers is easy. +- And since the technology has been around for a long time there is a huge human expertise and knowledge database available on developing desktop applications. So, as you can see, developing for desktop is great for many reasons. The technology is mature and time tested, the development cycle is fast, the debugging is powerful and arguably, desktop apps have less complexity and easier to get started with. @@ -49,25 +49,25 @@ Microsoft offered a variety of UI desktop technologies through the years from Wi ![Microsoft desktop technologies](./media/why-modern-desktop-applications/microsoft-desktop-technologies.png) -The most popular technologies for building Windows Desktop according to a survey published by Telerik on April 2016 are Windows Forms, WPF and UWP. +The most popular technologies for building Windows Desktop according to a survey published by Telerik on April 2016 are Windows Forms, WPF, and UWP. -![Telerik survey showing Windows Forms, WPF and UWP as the most popular desktop technologies](./media/why-modern-desktop-applications/telerik-survey.png) +![Telerik survey showing Windows Forms, WPF, and UWP as the most popular desktop technologies](./media/why-modern-desktop-applications/telerik-survey.png) You can develop in any of them using C# and VB.NET, but let's take a closer look. ### Windows Forms -First released in 2002, Windows Forms is a managed framework and is the oldest, most used, desktop technology built on the Windows GDI engine. It offers a very smooth drag-and-drop experience for developing user interfaces in Visual Studio. At the same time, Windows Forms relies on the Visual Studio Designer as the main way you develop your UI, so creating visual components from code is not trivial. +First released in 2002, Windows Forms is a managed framework and is the oldest, most used, desktop technology built on the Windows GDI engine. It offers a smooth drag-and-drop experience for developing user interfaces in Visual Studio. At the same time, Windows Forms rely on the Visual Studio Designer as the main way you develop your UI, so creating visual components from code is not trivial. - Mature technology with lots of code samples and documentation. -- Very powerful and productive designer. Not so convenient to design UI "from code". +- Powerful and productive designer. Not so convenient to design UI "from code". - Easy and intuitive to learn, thanks to the designer's drag and drop experience. - Supported on any Windows version. - Supported on .NET Core 3.0. ### WPF -Based on the XAML language specification, WPF favors a clear separation between UI and code. XAML offers such capabilities like templating, styling, and binding, which is suited for building big applications. Like Windows Forms, it is a managed framework, but the design is modular and reusable. +Based on the XAML language specification, WPF favors a clear separation between UI and code. XAML offers such capabilities like templating, styling, and binding, which is suited for building large applications. Like Windows Forms, it is a managed framework, but the design is modular and reusable. - Mature technology. - Designer is available, but developers usually prefer to create the design from code using declarative XAML. @@ -77,13 +77,13 @@ Based on the XAML language specification, WPF favors a clear separation between ### UWP -The Universal Windows Platforms is not only a presentation framework like WPF and Windows Forms, but it is also a platform itself. This platform has its own API set (the Windows Runtime API), a new deployment system (MSIX), a modern application lifecycle model (for low battery consumption), a new Resource Management System (based on PRI files), among other things. The platform was created to support all kind of input systems (like ink, touch, gamepad, mouse, keyboard, gaze, etc.) in all form-factors with performance and low battery consumption in mind. For these reasons the Shell of the Windows 10 OS uses parts of the UWP platform. +The Universal Windows Platforms is not only a presentation framework like WPF and Windows Forms, but it is also a platform itself. This platform has its own API set (the Windows Runtime API), a new deployment system (MSIX), a modern application lifecycle model (for low battery consumption), a new Resource Management System (based on PRI files), among other things. The platform was created to support all kind of input systems (like ink, touch, gamepad, mouse, keyboard, gaze, etc.) in all form-factors with performance and low battery consumption in mind. For these reasons, the Shell of the Windows 10 OS uses parts of the UWP platform. ![UWP structure](./media/why-modern-desktop-applications/uwp-structure.png) -UWP contains a presentation framework that is XAML based, like WPF, but is has some important differences such as: +UWP contains a presentation framework that is XAML-based, like WPF, but is has some important differences such as: -- Applications are executed in app containers. App containers are a sandbox mechanism which control what resources an UWP app can access or not. +- Applications are executed in app containers. App containers control what resources an UWP app can access. - Supported only on Windows 10. - Apps can be deployed through Microsoft Store for easier deployment besides sideload. - Designed as part to the Windows Runtime API. @@ -91,24 +91,33 @@ UWP contains a presentation framework that is XAML based, like WPF, but is has s ## A tale of two platforms -In the last 20 years, while UI desktop technologies were growing and following the path from Windows Forms to UWP, the hardware was also evolving from heavy weight PC units with small CRT monitors to HDPI monitors and lightweight tablets and phones with different data input techniques like Touch and Ink. This resulted in creating two different concepts: a Desktop Application and a Modern Application. A Modern Application is one that considers different device form factors, various input and output methods, and leverages modern desktop features while running on a sandboxed execution model. The (traditional) Desktop Application, on the other hand, is an application that needs a solid UI with high density of controls that is best operated with a mouse and a keyboard. +In the last 20 years, while UI desktop technologies were growing and following +the path from Windows Forms to UWP, the hardware was also evolving from heavy +weight PC units with small CRT monitors to HDPI monitors and lightweight tablets +and phones with different data input techniques like Touch and Ink. These +changes resulted in creating two different concepts: a Desktop Application and a +Modern Application. A Modern Application is one that considers different device +form factors, various input and output methods, and leverages modern desktop +features while running on a sandboxed execution model. The (traditional) Desktop +Application, on the other hand, is an application that needs a solid UI with +high density of controls that is best operated with a mouse and a keyboard. We can describe the differences between the two concepts in the following table: | | Modern Application | Desktop Application | | --- | --- | --- | -| Security | Contained execution & Great Fundamentals.Design from the ground up to respect user privacy, manage battery life and focus to keep the device safe. | User & Admin level of security.You have native access to the Registry and Hard Drive folders. | +| Security | Contained execution & Great Fundamentals. Design from the ground up to respect user privacy, manage battery life and focus to keep the device safe. | User & Admin level of security. You have native access to the Registry and Hard Drive folders. | | Deployment | Installation and updates are managed by the platform. | MSI, Custom installers & Updates. Traditionally a source of headaches for developers and IT managers. | | Distribution | Trusted Distribution & Signed Packages. Distribution is performed from a trusted source and never from the Web. | Web, SCCM & Custom distribution. No control over what is installed, affects the whole machine. | -| UI | Modern UI. Different input mechanisms, ink, touch, gamepad, keyboard, mouse, etc. | Windows Forms, WPF, MFC. Designed for the mouse and keyboard for a very dense UI and to get the most productivity from the desktop. | -| Data | Cloud First Data with Insights. Source of truth in the cloud. Insights to know what happens with your app and how it is performing. | Local Data.Traditional desktop applications usually need some local data. | -| Design | Designed for reuse. Reuse in mind between different platforms, front end and back end, running assets in many places as possible. | Designed for Windows Desktop only | +| UI | Modern UI. Different input mechanisms, ink, touch, gamepad, keyboard, mouse, etc. | Windows Forms, WPF, MFC. Designed for the mouse and keyboard for a dense UI and to get the most productivity from the desktop. | +| Data | Cloud First Data with Insights. Source of truth in the cloud. Insights to know what happens with your app and how it is performing. | Local Data. Traditional desktop applications usually need some local data. | +| Design | Designed for reuse. Reuse in mind between different platforms, front end, and back end, running assets in many places as possible. | Designed for Windows Desktop only | -As a part of the commitment to provide developers with the best tools to build applications, Microsoft has performed a great effort to bring these concepts, or we can even say platforms, closer together to empower developers with the best of both worlds.To do that, Microsoft has performed a bidirectional effort between the two platforms. +As a part of the commitment to provide developers with the best tools to build applications, Microsoft has performed a great effort to bring these concepts, or we can even say platforms, closer together to empower developers with the best of both worlds. To do that, Microsoft has performed a bidirectional effort between the two platforms. ![Bidirectional effort between Modern Application and Desktop Applications](./media/why-modern-desktop-applications/bidirectional-effort.png) -1. Move Desktop Application scenarios into Modern Application platform. The traditional desktop development is still very popular because it addresses certain scenarios really well. It makes sense to take these common desktop scenarios and bring them into the modern desktop platform to make the platform fully capable. +1. Move Desktop Application scenarios into Modern Application platform. The traditional desktop development is still popular because it addresses certain scenarios well. It makes sense to take these common desktop scenarios and bring them into the modern desktop platform to make the platform fully capable. ![Move Desktop Application scenarios into Modern Application platform](./media/why-modern-desktop-applications/desktop-to-modern.png) @@ -116,11 +125,11 @@ As a part of the commitment to provide developers with the best tools to build a ![Move Modern Application features into Desktop Applications](./media/why-modern-desktop-applications/modern-to-desktop.png) -In this book we will focus on the second part and show how you can modernize your existing desktop applications. +In this book, we will focus on the second part and show how you can modernize your existing desktop applications. ## Paths to modernization -The structure of this guide reflects three different axes to accomplish modernization: Modern Features, Deployment and Installation. +The structure of this guide reflects three different axes to accomplish modernization: Modern Features, Deployment, and Installation. ### Modern Features @@ -130,15 +139,15 @@ This path will show you how you can leverage modern desktop features into your e ### Deployment -Modern development cycles have stressed out to provide agility on how new versions of applications are deployed to every single user. Since Windows Forms and WPF applications are based on a particular version of the .NET Framework that must be present on the machine, they cannot take advantage of new .NET Framework version features without the intervention of the IT people with the risk of having side effects for other apps running on the same machine. This has limited the innovation pace for developers forcing them to stay on outdated versions of the .NET Framework. +Modern development cycles have stressed out to provide agility on how new versions of applications are deployed to every single user. Since Windows Forms and WPF applications are based on a particular version of the .NET Framework that must be present on the machine, they cannot take advantage of new .NET Framework version features without the intervention of the IT people with the risk of having side effects for other apps running on the same machine. It has limited the innovation pace for developers forcing them to stay on outdated versions of the .NET Framework. Now, with the launch of .NET Core 3.0, you can leverage a radically new approach of deploying multiple versions of .NET Core side by side and specifying which version of .NET Core each application should target. This way, you can use newest features in one application while being confident you aren't going to break any other applications. ### Installation -Desktop applications always rely on some sort of installation process before the user can start using them. This brought into the game a set of technologies, from MSI and ClickOnce to custom installers or even XCOPY deployment. Any of these methods deals with delicate problems because applications need a way to access shared resources on the machine. Sometimes installation needs to access the Registry to insert or update new Key Values, sometimes to update shared DLLs referenced by the main application. This causes a continuous headache for users, creating this perception that once you install some application, your computer will never be the same, even if you uninstall it afterwards. +Desktop applications always rely on some sort of installation process before the user can start using them. This fact brought into the game a set of technologies, from MSI and ClickOnce to custom installers or even XCOPY deployment. Any of these methods deals with delicate problems because applications need a way to access shared resources on the machine. Sometimes installation needs to access the Registry to insert or update new Key Values, sometimes to update shared DLLs referenced by the main application. This causes a continuous headache for users, creating this perception that once you install some application, your computer will never be the same, even if you uninstall it afterwards. -In this book, we will introduce a new way of installing applications with MSIX that solves the problem described above. You will learn how you can easy set up a packaging, installation and updates for your application. +In this book, we will introduce a new way of installing applications with MSIX that solves the problem described above. You will learn how you can easy set up a packaging, installation, and updates for your application. ## What this guide does not cover @@ -160,10 +169,10 @@ Along the different chapters, sample implementation code snippets and screenshot ## Sample apps -To highlight the necessary steps to perform a modernization, we will be using a sample application called eShopModernizing. This application has two flavors, Windows Forms and WPF and we will show a step by step process on how to perform the modernization on both of them to .NET Core. +To highlight the necessary steps to perform a modernization, we will be using a sample application called eShopModernizing. This application has two flavors, Windows Forms and WPF and we will show a step-by-step process on how to perform the modernization on both of them to .NET Core. Also, on the GitHub repository for this book, you'll find the results of the process, which you can consult with if you decide to follow the step-by-step tutorial. ## Send us your feedback -We wrote this guide to help you understand your options for improving and modernizing existing .NET desktop applications. The guide and related sample applications are evolving. We welcome your feedback! If you have comments about how this guide might be more helpful, send them to [dotnet-architecture-ebooks-feedback@service.microsoft.com](mailto:dotnet-architecture-ebooks-feedback@service.microsoft.com). +We wrote this guide to help you understand your options for improving and modernizing existing .NET desktop applications. The guide and related sample applications are evolving. We welcome your feedback! If you have comment about how this guide might be more helpful, send them to [dotnet-architecture-ebooks-feedback@service.microsoft.com](mailto:dotnet-architecture-ebooks-feedback@service.microsoft.com). From d6b5093636ba6ba11885ba295cc9e971ec946ec6 Mon Sep 17 00:00:00 2001 From: Olia Gavrysh <31997351+OliaG@users.noreply.github.com> Date: Thu, 26 Mar 2020 15:50:08 -0700 Subject: [PATCH 4/7] Apply suggestions from code review Co-Authored-By: Maira Wenzel --- .../why-modern-desktop-applications.md | 88 +++++++++---------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/docs/architecture/modernize-desktop/why-modern-desktop-applications.md b/docs/architecture/modernize-desktop/why-modern-desktop-applications.md index e3c5e0bce9a91..7676da5717c10 100644 --- a/docs/architecture/modernize-desktop/why-modern-desktop-applications.md +++ b/docs/architecture/modernize-desktop/why-modern-desktop-applications.md @@ -1,35 +1,35 @@ --- -title: Why Modern Desktop Applications? +title: Why modern desktop applications? description: Learn about desktop technologies such as Windows Forms, WPF, and UWP in the modern world. ms.date: 09/16/2019 --- -# Why Modern Desktop Applications? +# Why modern desktop applications? ## Introduction ### A story of one company -Back in early 2000s, one multinational company started developing a distributed desktop solution to exchange information between different branches of the company and execute optimized operations on centralized units. They have chosen a brand-new framework called Windows Forms for their application development. Over the years, the project evolved into a mature well tested and time-proven application with hundreds of thousands of lines of code. Time passed and .NET Framework 2.0 is no longer the hot new technology. The developers who are working on this application are facing a dilemma. They would like to use the latest stack of technologies in their development and have their application look and "feel" modern. At the same time, they don't want to throw away the great product they have built over 15 years and rewrite the entire application from scratch. +Back in early 2000s, one multinational company started developing a distributed desktop solution to exchange information between different branches of the company and execute optimized operations on centralized units. They have chosen a brand-new framework called Windows Forms (also known as WinForms) for their application development. Over the years, the project evolved into a mature, well tested, and time-proven application with hundreds of thousands of lines of code. Time passed and .NET Framework 2.0 is no longer the hot new technology. The developers who are working on this application are facing a dilemma. They'd like to use the latest stack of technologies in their development and have their application look and "feel" modern. At the same time, they don't want to throw away the great product they have built over 15 years and rewrite the entire application from scratch. ### Your story -You might find yourself in the same boat, where you have mature Windows Forms (also known as WinForms) or WPF (Windows Presentation Foundation) applications that have proved their reliability over the years. You probably want to keep using these applications for many more years. At the same time, since those applications were written some time ago, they might be missing capabilities like modern look, performance, integration with new devices and platform features, and so on, which gives them a feel of "old tech". There is another problem that might concern you as a developer. While working on the older .NET Framework versions and maintaining applications that were written a while ago, you might feel like you aren't learning new technologies and missing on building modern technical skills. If that is your story – this book is for you! +You might find yourself in the same boat, where you have mature Windows Forms or Windows Presentation Foundation (WPF) applications that have proved their reliability over the years. You probably want to keep using these applications for many more years. At the same time, since those applications were written some time ago, they might be missing capabilities like modern look, performance, integration with new devices and platform features, and so on, which gives them a feel of "old tech". There's another problem that might concern you as a developer. While working on the older .NET Framework versions and maintaining applications that were written a while ago, you might feel like you aren't learning new technologies and missing on building modern technical skills. If that is your story – this book is for you! ### About this guide -This guide is about strategies you can adopt to move your existing desktop applications through the path of modernization and incorporate the latest runtime, language, and platform features. You will discover that there is no unique recipe as each application is different, and so are your requirements and preferences. The good news is that there are common approaches you can apply to add new features and capabilities to your applications. Some of them will not even require major modifications of your code. In this book, we will reveal how all those features work behind the scenes and explain the mechanics of their implementations. Moreover, you will find some common scenarios for modernizing existing desktop applications depicted in detail so you can find inspiration for evolving your projects. +This guide is about strategies you can adopt to move your existing desktop applications through the path of modernization and incorporate the latest runtime, language, and platform features. You'll discover that there is no unique recipe as each application is different, and so are your requirements and preferences. The good news is that there are common approaches you can apply to add new features and capabilities to your applications. Some of them won't even require major modifications of your code. In this book, we'll reveal how all those features work behind the scenes and explain the mechanics of their implementations. Moreover, you'll find some common scenarios for modernizing existing desktop applications shown in detail so you can find inspiration for evolving your projects. -Microsoft approach to modernizing existing applications is to give you the flexibility to create your own customized path. All the modernization strategies described in this book are mostly independent. You can choose ones that are relevant for your application and skip others that aren't important for you. In other words, you will be able to mix and match the strategies to best address your application needs. +Microsoft's approach to modernizing existing applications is to give you the flexibility to create your own customized path. All the modernization strategies described in this book are mostly independent. You can choose ones that are relevant for your application and skip others that aren't important for you. In other words, you can mix and match the strategies to best address your application needs. ## Desktop applications nowadays -Before the raise of the Internet, desktop applications were the main approach to build software systems. You could choose any programming language like Cobol, Fortran, Visual Basic, C++, etc., but you ended up creating some sort of desktop application, from small tools to complex distributed architectures. +Before the raise of the Internet, desktop applications were the main approach to build software systems. Developers could choose any programming language, such as COBOL, Fortran, Visual Basic, or C++. But they ended up creating some sort of desktop application, from small tools to complex distributed architectures. -Then, Internet technologies started shocking the development world and winning over more and more engineers with advantages like easy deployment and simplified distribution processes. The fact that once Web application was deployed to production all users got automatic updates made a huge impact on the software agility. +Then, Internet technologies started shocking the development world and winning over more and more engineers with advantages like easy deployment and simplified distribution processes. The fact that once a web application was deployed to production all users got automatic updates made a huge impact on the software agility. -However, the Internet infrastructure, underlying protocols and standards like HTTP and HTML were not design for building complex applications. In fact, the major development effort back then was aiming just one goal: to give Web applications same capabilities that desktop applications have, such as fast data input, state management and so on. +However, the Internet infrastructure, underlying protocols, and standards like HTTP and HTML weren't designed for building complex applications. In fact, the major development effort back then was aiming just one goal: to give web applications same capabilities that desktop applications have, such as fast data input and state management. -Even though Web and Mobile applications have grown at an incredible pace, for certain tasks desktop applications still hold the number one place in terms of efficiency and performance. That explains why there are millions of developers who are building their projects with WPF and WinForms and the amount of those applications is constantly growing. +Even though web and mobile applications have grown at an incredible pace, for certain tasks desktop applications still hold the number one place in terms of efficiency and performance. That explains why there are millions of developers who are building their projects with WPF and WinForms and the amount of those applications is constantly growing. Here are some reasons for choosing desktop applications in your development: @@ -37,37 +37,37 @@ Here are some reasons for choosing desktop applications in your development: - The performance of desktop applications for complex calculations is much higher than performance of web applications. - Running custom logic on the client side is possible but much harder with a web application. - Using multithreading is easier and more efficient in a desktop application. -- The learning curve for designing User Interfaces is not steep and in case of WinForms is completely intuitive with drag-and-drop experience of the Windows Forms designer. -- It is easy to start coding and testing your algorithms without the need to set up a server infrastructure or to care about connectivity problems, firewalls, and browser compatibility. +- The learning curve for designing user interfaces (UIs) isn't steep. And for WinForms, it's completely intuitive with drag-and-drop experience of the Windows Forms designer. +- It's easy to start coding and testing your algorithms without the need to set up a server infrastructure or to care about connectivity problems, firewalls, and browser compatibility. - Debugging is powerful as compared to web debugging. -- Access to hardware devices like camera, Bluetooth, or card readers is easy. -- And since the technology has been around for a long time there is a huge human expertise and knowledge database available on developing desktop applications. +- Access to hardware devices, such as camera, Bluetooth, or card readers, is easy. +- Since the technology has been around for a while, there's a large number of experts and a knowledge base available to develop desktop applications. So, as you can see, developing for desktop is great for many reasons. The technology is mature and time tested, the development cycle is fast, the debugging is powerful and arguably, desktop apps have less complexity and easier to get started with. -Microsoft offered a variety of UI desktop technologies through the years from Win32 introduced in 1995 and to UWP released in 2016. +Microsoft offered many UI desktop technologies throughout the years from Win32 introduced in 1995 to Universal Windows Platform (UWP) released in 2016. ![Microsoft desktop technologies](./media/why-modern-desktop-applications/microsoft-desktop-technologies.png) -The most popular technologies for building Windows Desktop according to a survey published by Telerik on April 2016 are Windows Forms, WPF, and UWP. +According to a survey published by Telerik on April 2016, the most popular technologies for building Windows desktop apps are Windows Forms, WPF, and UWP. ![Telerik survey showing Windows Forms, WPF, and UWP as the most popular desktop technologies](./media/why-modern-desktop-applications/telerik-survey.png) -You can develop in any of them using C# and VB.NET, but let's take a closer look. +You can develop in any of them using C# and Visual Basic, but let's take a closer look. ### Windows Forms -First released in 2002, Windows Forms is a managed framework and is the oldest, most used, desktop technology built on the Windows GDI engine. It offers a smooth drag-and-drop experience for developing user interfaces in Visual Studio. At the same time, Windows Forms rely on the Visual Studio Designer as the main way you develop your UI, so creating visual components from code is not trivial. +First released in 2002, Windows Forms is a managed framework and is the oldest, most used, desktop technology built on the Windows graphics device interface (GDI) engine. It offers a smooth drag-and-drop experience for developing user interfaces in Visual Studio. At the same time, Windows Forms relies on the Visual Studio Designer as the main way you develop your UI, so creating visual components from code isn't trivial. - Mature technology with lots of code samples and documentation. - Powerful and productive designer. Not so convenient to design UI "from code". -- Easy and intuitive to learn, thanks to the designer's drag and drop experience. +- Easy and intuitive to learn, thanks to the designer's drag-and-drop experience. - Supported on any Windows version. - Supported on .NET Core 3.0. ### WPF -Based on the XAML language specification, WPF favors a clear separation between UI and code. XAML offers such capabilities like templating, styling, and binding, which is suited for building large applications. Like Windows Forms, it is a managed framework, but the design is modular and reusable. +Based on the XAML language specification, WPF favors a clear separation between UI and code. XAML offers such capabilities like templating, styling, and binding, which is suited for building large applications. Like Windows Forms, it's a managed framework, but the design is modular and reusable. - Mature technology. - Designer is available, but developers usually prefer to create the design from code using declarative XAML. @@ -77,23 +77,23 @@ Based on the XAML language specification, WPF favors a clear separation between ### UWP -The Universal Windows Platforms is not only a presentation framework like WPF and Windows Forms, but it is also a platform itself. This platform has its own API set (the Windows Runtime API), a new deployment system (MSIX), a modern application lifecycle model (for low battery consumption), a new Resource Management System (based on PRI files), among other things. The platform was created to support all kind of input systems (like ink, touch, gamepad, mouse, keyboard, gaze, etc.) in all form-factors with performance and low battery consumption in mind. For these reasons, the Shell of the Windows 10 OS uses parts of the UWP platform. +UWP isn't only a presentation framework like WPF and Windows Forms, but it's also a platform itself. This platform has its own API set (the Windows Runtime API), a new deployment system (MSIX), a modern application lifecycle model (for low battery consumption), a new Resource Management System (based on PRI files), among other things. The platform was created to support all kind of input systems (like ink, touch, gamepad, mouse, keyboard, gaze, and so on) in all form-factors with performance and low battery consumption in mind. For these reasons, the shell of the Windows 10 OS uses parts of the UWP platform. ![UWP structure](./media/why-modern-desktop-applications/uwp-structure.png) -UWP contains a presentation framework that is XAML-based, like WPF, but is has some important differences such as: +UWP contains a presentation framework that is XAML-based, like WPF, but it has some important differences such as: -- Applications are executed in app containers. App containers control what resources an UWP app can access. +- Applications are executed in app containers. App containers control what resources a UWP app can access. - Supported only on Windows 10. - Apps can be deployed through Microsoft Store for easier deployment besides sideload. -- Designed as part to the Windows Runtime API. -- Contains an extensive set of built-in rich controls and additional controls in the Microsoft UI Library NuGet packages (WinUI library) updated every few months. +- Designed as part of the Windows Runtime API. +- Contains an extensive set of rich built-in controls and additional controls available through the Microsoft UI Library NuGet packages (WinUI library) updated every few months. ## A tale of two platforms In the last 20 years, while UI desktop technologies were growing and following the path from Windows Forms to UWP, the hardware was also evolving from heavy -weight PC units with small CRT monitors to HDPI monitors and lightweight tablets +weight PC units with small CRT monitors to high-DPI monitors and lightweight tablets and phones with different data input techniques like Touch and Ink. These changes resulted in creating two different concepts: a Desktop Application and a Modern Application. A Modern Application is one that considers different device @@ -102,18 +102,18 @@ features while running on a sandboxed execution model. The (traditional) Desktop Application, on the other hand, is an application that needs a solid UI with high density of controls that is best operated with a mouse and a keyboard. -We can describe the differences between the two concepts in the following table: +The following table describes the differences between the two concepts: | | Modern Application | Desktop Application | | --- | --- | --- | -| Security | Contained execution & Great Fundamentals. Design from the ground up to respect user privacy, manage battery life and focus to keep the device safe. | User & Admin level of security. You have native access to the Registry and Hard Drive folders. | +| Security | Contained execution & Great Fundamentals. Designed from the ground up to respect user's privacy, manage battery life, and focus to keep the device safe. | User & Admin level of security. You have native access to the registry and hard drive folders. | | Deployment | Installation and updates are managed by the platform. | MSI, Custom installers & Updates. Traditionally a source of headaches for developers and IT managers. | -| Distribution | Trusted Distribution & Signed Packages. Distribution is performed from a trusted source and never from the Web. | Web, SCCM & Custom distribution. No control over what is installed, affects the whole machine. | +| Distribution | Trusted Distribution & Signed Packages. Distribution is performed from a trusted source and never from the web. | Web, SCCM & Custom distribution. No control over what is installed, affects the whole machine. | | UI | Modern UI. Different input mechanisms, ink, touch, gamepad, keyboard, mouse, etc. | Windows Forms, WPF, MFC. Designed for the mouse and keyboard for a dense UI and to get the most productivity from the desktop. | -| Data | Cloud First Data with Insights. Source of truth in the cloud. Insights to know what happens with your app and how it is performing. | Local Data. Traditional desktop applications usually need some local data. | +| Data | Cloud First Data with Insights. Source of truth in the cloud. Insights to know what happens with your app and how it's performing. | Local Data. Traditional desktop applications usually need some local data. | | Design | Designed for reuse. Reuse in mind between different platforms, front end, and back end, running assets in many places as possible. | Designed for Windows Desktop only | -As a part of the commitment to provide developers with the best tools to build applications, Microsoft has performed a great effort to bring these concepts, or we can even say platforms, closer together to empower developers with the best of both worlds. To do that, Microsoft has performed a bidirectional effort between the two platforms. +As a part of the commitment to provide developers with the best tools to build applications, Microsoft put a great effort to bring these concepts, or we can even say platforms, closer together to empower developers with the best of both worlds. To do that, Microsoft has performed a bidirectional effort between the two platforms. ![Bidirectional effort between Modern Application and Desktop Applications](./media/why-modern-desktop-applications/bidirectional-effort.png) @@ -125,54 +125,54 @@ As a part of the commitment to provide developers with the best tools to build a ![Move Modern Application features into Desktop Applications](./media/why-modern-desktop-applications/modern-to-desktop.png) -In this book, we will focus on the second part and show how you can modernize your existing desktop applications. +In this book, we'll focus on the second part and show how you can modernize your existing desktop applications. ## Paths to modernization The structure of this guide reflects three different axes to accomplish modernization: Modern Features, Deployment, and Installation. -### Modern Features +### Modern features -Say you have a working Windows Forms application that a sales representative of your company uses to fill in a customer order. A new requirement comes in to enable the customer to sign the order using a tablet pen. Inking is native in today´s operating systems and technologies, but it wasn't available when the app was developed. +Say you have a working Windows Forms application that a sales representative of your company uses to fill in a customer order. A new requirement comes in to enable the customer to sign the order using a tablet pen. Inking is native in today's operating systems and technologies, but it wasn't available when the app was developed. This path will show you how you can leverage modern desktop features into your existing desktop development. ### Deployment -Modern development cycles have stressed out to provide agility on how new versions of applications are deployed to every single user. Since Windows Forms and WPF applications are based on a particular version of the .NET Framework that must be present on the machine, they cannot take advantage of new .NET Framework version features without the intervention of the IT people with the risk of having side effects for other apps running on the same machine. It has limited the innovation pace for developers forcing them to stay on outdated versions of the .NET Framework. +Modern development cycles have stressed out to provide agility on how new versions of applications are deployed to every single user. Since Windows Forms and WPF applications are based on a particular version of the .NET Framework that must be present on the machine, they can't take advantage of new .NET Framework version features without the intervention of the IT people with the risk of having side effects for other apps running on the same machine. It has limited the innovation pace for developers forcing them to stay on outdated versions of the .NET Framework. -Now, with the launch of .NET Core 3.0, you can leverage a radically new approach of deploying multiple versions of .NET Core side by side and specifying which version of .NET Core each application should target. This way, you can use newest features in one application while being confident you aren't going to break any other applications. +With the launch of .NET Core 3.0, you can leverage a new approach of deploying multiple versions of .NET Core side by side and specifying which version of .NET Core each application should target. This way, you can use newest features in one application while being confident you aren't going to break any other applications. ### Installation Desktop applications always rely on some sort of installation process before the user can start using them. This fact brought into the game a set of technologies, from MSI and ClickOnce to custom installers or even XCOPY deployment. Any of these methods deals with delicate problems because applications need a way to access shared resources on the machine. Sometimes installation needs to access the Registry to insert or update new Key Values, sometimes to update shared DLLs referenced by the main application. This causes a continuous headache for users, creating this perception that once you install some application, your computer will never be the same, even if you uninstall it afterwards. -In this book, we will introduce a new way of installing applications with MSIX that solves the problem described above. You will learn how you can easy set up a packaging, installation, and updates for your application. +In this book, we'll introduce a new way of installing applications with MSIX that solves the problem described earlier. You'll learn how you can easy set up a packaging, installation, and updates for your application. ## What this guide does not cover -This guide covers a specific subset of scenarios focused on lift and shift scenarios, outlining the way to gain the benefits of modernizing without the effort of rewriting code. +This guide covers a specific subset of scenarios that are focused on lift-and-shift scenarios, outlining the way to gain the benefits of modernizing without the effort of rewriting code. -This guide is not about developing modern applications with .NET Core or implementing desktop scenarios into the Modern Application Platform. If focus on how you can leverage your investments on desktop applications while you keep them updated with some of the latest technologies for desktop development. +This guide isn't about developing modern applications with .NET Core or implementing desktop scenarios into the Modern Application Platform. It focuses on how you can leverage your investments on desktop applications while you keep them updated with some of the latest technologies for desktop development. ## Who should use this guide -We wrote this guide for developers and solution architects who want to modernize existing Windows Forms and WPF Desktop Applications to leverage the benefits of .NET Core 3.0 and MSIX installation. +We wrote this guide for developers and solution architects who want to modernize existing Windows Forms and WPF desktop applications to leverage the benefits of .NET Core and MSIX installation. -You also might find this guide useful if you are a technical decision maker, such as an enterprise architect or a development lead/director who just wants an overview of the benefits that you can get by updating existing Desktop Apps. +You also might find this guide useful if you are a technical decision maker, such as an enterprise architect or a development lead/director who just wants an overview of the benefits that you can get by updating existing desktop apps. ## How to use this guide This guide addresses the "why"—why you might want to modernize your existing applications, and the specific benefits you get from using NET Core 3.0 and MSIX to modernize your desktop apps. The content of the guide is designed for architects and technical decision makers who want an overview, but who don't need to focus on implementation and technical, step-by-step details. -Along the different chapters, sample implementation code snippets and screenshot are provided, with chapter 5 devoted to a showcase a complete migration process for sample applications. +Along the different chapters, sample implementation code snippets and screenshots are provided, with chapter 5 devoted to showcase a complete migration process for sample applications. ## Sample apps -To highlight the necessary steps to perform a modernization, we will be using a sample application called eShopModernizing. This application has two flavors, Windows Forms and WPF and we will show a step-by-step process on how to perform the modernization on both of them to .NET Core. +To highlight the necessary steps to perform a modernization, we'll be using a sample application called `eShopModernizing`. This application has two flavors, Windows Forms and WPF, and we'll show a step-by-step process on how to perform the modernization on both of them to .NET Core. Also, on the GitHub repository for this book, you'll find the results of the process, which you can consult with if you decide to follow the step-by-step tutorial. ## Send us your feedback -We wrote this guide to help you understand your options for improving and modernizing existing .NET desktop applications. The guide and related sample applications are evolving. We welcome your feedback! If you have comment about how this guide might be more helpful, send them to [dotnet-architecture-ebooks-feedback@service.microsoft.com](mailto:dotnet-architecture-ebooks-feedback@service.microsoft.com). +We wrote this guide to help you understand your options for improving and modernizing existing .NET desktop applications. The guide and related sample applications are evolving. We welcome your feedback! If you have comments about how this guide might be more helpful, send them to [dotnet-architecture-ebooks-feedback@service.microsoft.com](mailto:dotnet-architecture-ebooks-feedback@service.microsoft.com). From fa643a0b462e70e986fcf33a4ab7dc496c484183 Mon Sep 17 00:00:00 2001 From: oliag Date: Thu, 26 Mar 2020 20:26:36 -0700 Subject: [PATCH 5/7] Address comments and added Next button --- .../why-modern-desktop-applications.md | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/docs/architecture/modernize-desktop/why-modern-desktop-applications.md b/docs/architecture/modernize-desktop/why-modern-desktop-applications.md index 7676da5717c10..709af5da051ab 100644 --- a/docs/architecture/modernize-desktop/why-modern-desktop-applications.md +++ b/docs/architecture/modernize-desktop/why-modern-desktop-applications.md @@ -23,7 +23,7 @@ Microsoft's approach to modernizing existing applications is to give you the fle ## Desktop applications nowadays -Before the raise of the Internet, desktop applications were the main approach to build software systems. Developers could choose any programming language, such as COBOL, Fortran, Visual Basic, or C++. But they ended up creating some sort of desktop application, from small tools to complex distributed architectures. +Before the raise of the Internet, desktop applications were the main approach to build software systems. Developers could choose any programming language, such as COBOL, Fortran, VB6, or C++. But where they developed small tools or complex distributed architectures, they were all desktop applications. Then, Internet technologies started shocking the development world and winning over more and more engineers with advantages like easy deployment and simplified distribution processes. The fact that once a web application was deployed to production all users got automatic updates made a huge impact on the software agility. @@ -59,6 +59,8 @@ You can develop in any of them using C# and Visual Basic, but let's take a close First released in 2002, Windows Forms is a managed framework and is the oldest, most used, desktop technology built on the Windows graphics device interface (GDI) engine. It offers a smooth drag-and-drop experience for developing user interfaces in Visual Studio. At the same time, Windows Forms relies on the Visual Studio Designer as the main way you develop your UI, so creating visual components from code isn't trivial. +The following list summarizes the main characteristics of Windows Forms: + - Mature technology with lots of code samples and documentation. - Powerful and productive designer. Not so convenient to design UI "from code". - Easy and intuitive to learn, thanks to the designer's drag-and-drop experience. @@ -69,6 +71,8 @@ First released in 2002, Windows Forms is a managed framework and is the oldest, Based on the XAML language specification, WPF favors a clear separation between UI and code. XAML offers such capabilities like templating, styling, and binding, which is suited for building large applications. Like Windows Forms, it's a managed framework, but the design is modular and reusable. +Here are the main features of WPF: + - Mature technology. - Designer is available, but developers usually prefer to create the design from code using declarative XAML. - The learning curve is steeper than Windows Forms. @@ -85,22 +89,13 @@ UWP contains a presentation framework that is XAML-based, like WPF, but it has s - Applications are executed in app containers. App containers control what resources a UWP app can access. - Supported only on Windows 10. -- Apps can be deployed through Microsoft Store for easier deployment besides sideload. +- Apps can be deployed through Microsoft Store for easier deployment. - Designed as part of the Windows Runtime API. - Contains an extensive set of rich built-in controls and additional controls available through the Microsoft UI Library NuGet packages (WinUI library) updated every few months. ## A tale of two platforms -In the last 20 years, while UI desktop technologies were growing and following -the path from Windows Forms to UWP, the hardware was also evolving from heavy -weight PC units with small CRT monitors to high-DPI monitors and lightweight tablets -and phones with different data input techniques like Touch and Ink. These -changes resulted in creating two different concepts: a Desktop Application and a -Modern Application. A Modern Application is one that considers different device -form factors, various input and output methods, and leverages modern desktop -features while running on a sandboxed execution model. The (traditional) Desktop -Application, on the other hand, is an application that needs a solid UI with -high density of controls that is best operated with a mouse and a keyboard. +In the last 20 years, while UI desktop technologies were growing and following the path from Windows Forms to UWP, the hardware was also evolving from heavy weight PC units with small CRT monitors to high-DPI monitors and lightweight tablets and phones with different data input techniques like Touch and Ink. These changes resulted in creating two different concepts: a Desktop Application and a Modern Application. A Modern Application is one that considers different device form factors, various input and output methods, and leverages modern desktop features while running on a sandboxed execution model. The (traditional) Desktop Application, on the other hand, is an application that needs a solid UI with high density of controls that is best operated with a mouse and a keyboard. The following table describes the differences between the two concepts: @@ -176,3 +171,6 @@ Also, on the GitHub repository for this book, you'll find the results of the pro ## Send us your feedback We wrote this guide to help you understand your options for improving and modernizing existing .NET desktop applications. The guide and related sample applications are evolving. We welcome your feedback! If you have comments about how this guide might be more helpful, send them to [dotnet-architecture-ebooks-feedback@service.microsoft.com](mailto:dotnet-architecture-ebooks-feedback@service.microsoft.com). + +>[!div class="step-by-step"] +>[Next](whats-new-dotnet-core.md) From 3607559a205ee65456681af9a0c7a9088f11a8e3 Mon Sep 17 00:00:00 2001 From: Olia Gavrysh <31997351+OliaG@users.noreply.github.com> Date: Fri, 10 Apr 2020 13:28:27 -0700 Subject: [PATCH 6/7] Apply suggestions from code review Co-Authored-By: Maira Wenzel --- .../why-modern-desktop-applications.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/docs/architecture/modernize-desktop/why-modern-desktop-applications.md b/docs/architecture/modernize-desktop/why-modern-desktop-applications.md index 709af5da051ab..f5e9351278097 100644 --- a/docs/architecture/modernize-desktop/why-modern-desktop-applications.md +++ b/docs/architecture/modernize-desktop/why-modern-desktop-applications.md @@ -17,7 +17,7 @@ You might find yourself in the same boat, where you have mature Windows Forms or ### About this guide -This guide is about strategies you can adopt to move your existing desktop applications through the path of modernization and incorporate the latest runtime, language, and platform features. You'll discover that there is no unique recipe as each application is different, and so are your requirements and preferences. The good news is that there are common approaches you can apply to add new features and capabilities to your applications. Some of them won't even require major modifications of your code. In this book, we'll reveal how all those features work behind the scenes and explain the mechanics of their implementations. Moreover, you'll find some common scenarios for modernizing existing desktop applications shown in detail so you can find inspiration for evolving your projects. +This guide is about strategies you can adopt to move your existing desktop applications through the path of modernization and incorporate the latest runtime, language, and platform features. You'll discover that there's no unique recipe as each application is different, and so are your requirements and preferences. The good news is that there are common approaches you can apply to add new features and capabilities to your applications. Some of them won't even require major modifications of your code. In this book, we'll reveal how all those features work behind the scenes and explain the mechanics of their implementations. Moreover, you'll find some common scenarios for modernizing existing desktop applications shown in detail so you can find inspiration for evolving your projects. Microsoft's approach to modernizing existing applications is to give you the flexibility to create your own customized path. All the modernization strategies described in this book are mostly independent. You can choose ones that are relevant for your application and skip others that aren't important for you. In other words, you can mix and match the strategies to best address your application needs. @@ -41,7 +41,7 @@ Here are some reasons for choosing desktop applications in your development: - It's easy to start coding and testing your algorithms without the need to set up a server infrastructure or to care about connectivity problems, firewalls, and browser compatibility. - Debugging is powerful as compared to web debugging. - Access to hardware devices, such as camera, Bluetooth, or card readers, is easy. -- Since the technology has been around for a while, there's a large number of experts and a knowledge base available to develop desktop applications. +- Since the technology has been around for a while, there are many experts and a knowledge base available to develop desktop applications. So, as you can see, developing for desktop is great for many reasons. The technology is mature and time tested, the development cycle is fast, the debugging is powerful and arguably, desktop apps have less complexity and easier to get started with. @@ -81,7 +81,14 @@ Here are the main features of WPF: ### UWP -UWP isn't only a presentation framework like WPF and Windows Forms, but it's also a platform itself. This platform has its own API set (the Windows Runtime API), a new deployment system (MSIX), a modern application lifecycle model (for low battery consumption), a new Resource Management System (based on PRI files), among other things. The platform was created to support all kind of input systems (like ink, touch, gamepad, mouse, keyboard, gaze, and so on) in all form-factors with performance and low battery consumption in mind. For these reasons, the shell of the Windows 10 OS uses parts of the UWP platform. +UWP isn't only a presentation framework like WPF and Windows Forms, but it's also a platform itself. This platform has: + +- Its own API set (the Windows Runtime API). +- A new deployment system (MSIX) +- A modern application lifecycle model (for low battery consumption). +- A new Resource Management System (based on PRI files). + +The platform was created to support all kind of input systems (like ink, touch, gamepad, mouse, keyboard, gaze, and so on) in all form-factors with performance and low battery consumption in mind. For these reasons, the shell of the Windows 10 OS uses parts of the UWP platform. ![UWP structure](./media/why-modern-desktop-applications/uwp-structure.png) @@ -142,7 +149,7 @@ With the launch of .NET Core 3.0, you can leverage a new approach of deploying m Desktop applications always rely on some sort of installation process before the user can start using them. This fact brought into the game a set of technologies, from MSI and ClickOnce to custom installers or even XCOPY deployment. Any of these methods deals with delicate problems because applications need a way to access shared resources on the machine. Sometimes installation needs to access the Registry to insert or update new Key Values, sometimes to update shared DLLs referenced by the main application. This causes a continuous headache for users, creating this perception that once you install some application, your computer will never be the same, even if you uninstall it afterwards. -In this book, we'll introduce a new way of installing applications with MSIX that solves the problem described earlier. You'll learn how you can easy set up a packaging, installation, and updates for your application. +In this book, we'll introduce a new way of installing applications with MSIX that solves the problem described earlier. You'll learn how you can easily set up a packaging, installation, and updates for your application. ## What this guide does not cover From 54bafbd922fdfe855396666f7502090b002f34fa Mon Sep 17 00:00:00 2001 From: oliag Date: Fri, 10 Apr 2020 13:36:48 -0700 Subject: [PATCH 7/7] Removed question mark from the title --- .../modernize-desktop/why-modern-desktop-applications.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/architecture/modernize-desktop/why-modern-desktop-applications.md b/docs/architecture/modernize-desktop/why-modern-desktop-applications.md index 709af5da051ab..8da3d165a1fd0 100644 --- a/docs/architecture/modernize-desktop/why-modern-desktop-applications.md +++ b/docs/architecture/modernize-desktop/why-modern-desktop-applications.md @@ -1,9 +1,9 @@ --- -title: Why modern desktop applications? +title: Why modern desktop applications description: Learn about desktop technologies such as Windows Forms, WPF, and UWP in the modern world. ms.date: 09/16/2019 --- -# Why modern desktop applications? +# Why modern desktop applications ## Introduction