Skip to content

Merge master into live #17605

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Mar 26, 2020
13 changes: 7 additions & 6 deletions docs/azure/migration/choose.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ ms.date: 03/01/2020

# Choose the right Azure hosting option

This document provides multiple considerations and comparisons between the multiple choices you have in Azure when migrating your existing .NET Framework applications from on-premises to Azure.
This article provides considerations and comparisons between the multiple choices you have in Azure when migrating your existing .NET Framework applications from on-premises to Azure.

The fundamental areas to consider when migrating existing .NET applications to Azure are:

Expand All @@ -26,12 +26,12 @@ The following table shows several comparisons and recommendations to help you ch
| | Azure VMs | Azure App Service | Windows Containers |
|-----------------|-----------|-------------------|--------------------|
|When to use |<ul><li>Application has strong dependencies on the server and local .msi installations.</li><li>You want the easiest application migration path</li></ul>|App has no dependencies on the server, it is just a clean ASP.NET web app (MVC, WebForm) or N-Tier app (Web API, WCf) accessing a database server. |<ul><li>Application has dependencies on the original server but those dependencies can be included in the Docker Windows image.</li><li>Want to modernize the app so it is [Cloud DevOps-Ready](https://docs.microsoft.com/dotnet/standard/modernize-with-azure-and-containers/lift-and-shift-existing-apps-devops/reasons-to-lift-and-shift-existing-net-apps-to-cloud-devops-ready-applications)</li></ul>|
|Pros & benefits |<ul><li>Easiest migration path</li><li>Familiar environment. Deployment environment is a VM so very similar to on-premises servers.</li></ul> |Ongoing PaaS maintenance, simplest way to manage and scale apps in Azure. |<ul><li>Prepared for the future, Cloud DevOps-Ready with dependencies included in the app's containers.</li><li>Almost no need to re-factor .NET /C# code.</li></ul> |
|Cons |It is IaaS. Maintenance is costly. You have to manage VMs infrastructure about networking, load-balancer, scale-out, IIS management, etc. |<ul><li>Not all apps are [supported](http://www.migratetoazure.net/ReadinessAssessment)</li><li>Some apps might need to be refactored and even slightly re-architected, so they support Azure App Service.</li></ul> |<ul><li>Docker's skills learning curve</li><li>Some code and app configuration settings changes</li></ul>|
|Pros & benefits |<ul><li>Easiest migration path</li><li>Familiar environment. Deployment environment is a VM, so it's similar to on-premises servers.</li></ul> |Ongoing PaaS maintenance, simplest way to manage and scale apps in Azure. |<ul><li>Prepared for the future, Cloud DevOps-Ready with dependencies included in the app's containers.</li><li>Almost no need to refactor .NET /C# code.</li></ul> |
|Cons |It is IaaS. Maintenance is costly. You have to manage the VM's infrastructure about networking, load-balancer, scale-out, IIS management, and so on. |<ul><li>Not all apps are [supported](http://www.migratetoazure.net/ReadinessAssessment)</li><li>Some apps might need to be refactored and even slightly rearchitected, so they support Azure App Service.</li></ul> |<ul><li>Docker's skills learning curve</li><li>Some code and app configuration settings changes</li></ul>|
|Requirements |Windows Server VM with the same requirements than the app for on-premises | Azure App Service requirements specified at the [Compatibility analysis for Azure App Service](https://www.migratetoazure.net/Resources). |<ul><li>[Windows Server 2016 with Containers - Azure VM](https://azuremarketplace.microsoft.com/marketplace/apps/Microsoft.WindowsServer?tab=Overview)<br />or</li><li>[Azure Container Service (AKS)](https://azure.microsoft.com/services/container-service/) (That is Kubernetes orchestrator)<br />or<li>[Azure Service Fabric](https://azure.microsoft.com/services/service-fabric/) orchestrator</li></ul> |
|How to migrate |See [Migrate to Azure Virtual Machines](https://go.microsoft.com/fwlink/?linkid=862531) | See [Migrate Azure App Service](https://go.microsoft.com/fwlink/?linkid=862532) | Follow considerations, scenarios and walkthroughs explained in the [Modernizing existing .NET apps with Azure and Windows Containers eBook](https://aka.ms/liftandshiftwithcontainersebook) |
|How to migrate |See [Migrate to Azure Virtual Machines](https://go.microsoft.com/fwlink/?linkid=862531) | See [Migrate Azure App Service](https://go.microsoft.com/fwlink/?linkid=862532) | Follow considerations, scenarios, and walkthroughs explained in the [Modernizing existing .NET apps with Azure and Windows Containers eBook](https://aka.ms/liftandshiftwithcontainersebook) |

The following flowchart diagram shows a decision tree when planning a migration to Azure for your existing .NET Framework applications, being option A the first option to try and perform if it is viable, but option B the easiest path to perform.
The following flowchart diagram shows a decision tree when planning a migration to Azure for your existing .NET Framework applications. If it's viable, try option A first, but option B is the easiest path to perform.

![Flowchart showing hosting decision tree](../media/migration/choose/decision-tree.png)

Expand All @@ -42,14 +42,15 @@ When migrating relational databases to Azure you have multiple choices. See [Mig
## Networking and security considerations

When deploying applications to a public cloud like Microsoft Azure, you might want to isolate and secure certain networks by [creating network DMZs](https://docs.microsoft.com/azure/architecture/reference-architectures/dmz/), such as a [DMZ between Azure and on-premises](https://docs.microsoft.com/azure/architecture/reference-architectures/dmz/secure-vnet-hybrid) or a [DMZ between Azure and the Internet](https://docs.microsoft.com/azure/architecture/reference-architectures/dmz/secure-vnet-dmz). DMZs can be implemented with [Azure Virtual Network](https://docs.microsoft.com/azure/virtual-network/virtual-networks-overview).

Azure Virtual networks enable you to:

- Build a hybrid infrastructure that you control
- Bring your own IP addresses and DNS servers
- Secure your connections with an IPsec VPN or ExpressRoute
- Get granular control over traffic between subnets
- Create sophisticated network topologies using virtual appliances
- Get an isolated and highly-secure environment for your applications
- Get an isolated and highly secure environment for your applications

To get started building your own virtual network, see the [Azure Virtual Network documentation](https://docs.microsoft.com/azure/virtual-network/).

Expand Down
12 changes: 6 additions & 6 deletions docs/azure/migration/sql.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,15 @@ And the following links will help you understand Azure SQL Database better:

## Choosing IaaS or PaaS

When evaluating where to migrate your database, you should determine if IaaS or PaaS is more appropriate for you.
When evaluating where to migrate your database, determine if IaaS or PaaS is more appropriate for you.

**You should choose SQL Server in Azure VMs if:**
**Choose SQL Server in Azure VMs if:**

* You are looking to "lift and shift" your database and applications with minimal to no changes.
* You prefer having full control over your database server and the VM it runs on.
* You already have SQL Server and Windows Server licenses that you intend to use.

**You should choose Azure SQL Database if:**
**Choose Azure SQL Database if:**

* You are looking to modernize your applications and are migrating to use other PaaS services in Azure.
* You do not wish to manage your database server and the VM it runs on.
Expand All @@ -56,9 +56,9 @@ The following table describes differences between each service based on a set of
| Scenario | SQL Server in Azure VMs | Azure SQL Database |
|----------|-------------------------|--------------------|
| Migration | Requires minimal changes to your database. | May require changes to your database if you use features unavailable in Azure SQL, as determined by the [Data Migration Assistant](https://www.microsoft.com/download/details.aspx?id=53595), or if you have other dependencies such as locally installed executables.|
| Managing availability, recovery, and upgrades | Availability and recovery is configured manually. Upgrades can be automated with [VM Scale Sets](https://docs.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-automatic-upgrade). | Automatically managed for you. |
| Managing availability, recovery, and upgrades | Availability and recovery are configured manually. Upgrades can be automated with [VM Scale Sets](https://docs.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-automatic-upgrade). | Automatically managed for you. |
| Underlying OS configuration | Manual configuration. | Automatically managed for you. |
| Managing database size | Supports up to 64TB of storage per SQL Server instance. | Supports 4TB of storage before needing a horizontal partition. |
| Managing database size | Supports up to 64 TB of storage per SQL Server instance. | Supports 4 TB of storage before needing a horizontal partition. |
| Managing costs | You must manage SQL Server license costs, Windows Server license costs, and VM costs (based on cores, RAM, and storage). | You must manage service costs (based on [eDTUs or DTUs](https://docs.microsoft.com/azure/sql-database/sql-database-what-is-a-dtu), storage, and number of databases if using an elastic pool). You must also manage the cost of any SLA. |

To learn more about the differences between the two, read Choose a cloud SQL Server option: [Azure SQL Database or SQL Server on Azure VMs](https://docs.microsoft.com/azure/sql-database/sql-database-paas-vs-sql-server-iaas).
Expand All @@ -71,7 +71,7 @@ To learn more about the differences between the two, read Choose a cloud SQL Ser

* **I want to go PaaS but I'm not sure if my database is compatible. Are there tools to help?**

Yes. The [Data Migration Assistant](https://www.microsoft.com/download/details.aspx?id=53595) is a tool that is used as a part of migrating to Azure SQL Database. The [Azure Database Migration Service](https://azure.microsoft.com/campaigns/database-migration/) is a preview service which you can use for either IaaS or PaaS.
Yes. The [Data Migration Assistant](https://www.microsoft.com/download/details.aspx?id=53595) is a tool that is used as a part of migrating to Azure SQL Database. The [Azure Database Migration Service](https://azure.microsoft.com/campaigns/database-migration/) is a preview service that you can use for either IaaS or PaaS.

* **Can I estimate costs?**

Expand Down
6 changes: 3 additions & 3 deletions docs/azure/migration/vm.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ Virtual machines offer the easiest path to migrate an application from on-premis

### Virtual Machine Size

Choose the virtual machine size and type that is best optimized for your workload. See [sizes for Windows virtual machines in Azure](https://docs.microsoft.com/azure/virtual-machines/windows/sizes) for more information.
Choose the virtual machine size and type that is best optimized for your workload. For more information, see [Sizes for Windows virtual machines in Azure](https://docs.microsoft.com/azure/virtual-machines/windows/sizes).

### Maintenance

Expand All @@ -47,7 +47,7 @@ Azure Virtual Networks enable you to:

- Build a hybrid infrastructure that you control
- Bring your own IP addresses and DNS servers
- Create an isolated and highly-secure environment for your applications
- Create an isolated and highly secure environment for your applications
- Connect your VM to your on-premises network using one of several [connectivity options](https://docs.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpngateways#s2smulti)
- Integrate your virtual machine into your on-premises network using [ExpressRoute](https://azure.microsoft.com/services/expressroute/)

Expand All @@ -64,7 +64,7 @@ Many applications use Active Directory for authentication and identity managemen
If your application is using an on-premises database, your app will not be able to talk to it by default. You can either:

- Configure a hybrid network that enables your application to access your database running on-premises.
- Migrate your database to the Azure. See [Migrate your SQL Server database to Azure](sql.md) for more information.
- Migrate your database to the Azure. For more information, see [Migrate your SQL Server database to Azure](sql.md).

### High Availability and Scalability

Expand Down
9 changes: 8 additions & 1 deletion docs/core/compatibility/3.1-5.0.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,21 @@
---
title: Breaking changes, version 3.1 to 5.0
description: Lists the breaking changes from version 3.1 to version 5.0 of .NET, ASP.NET Core, and EF Core.
ms.date: 03/24/2020
ms.date: 03/25/2020
---
# Breaking changes for migration from version 3.1 to 5.0

If you're migrating from version 3.1 of .NET Core, ASP.NET Core, or EF Core to version 5.0 of .NET, ASP.NET Core, or EF Core, the breaking changes listed in this article may affect your app.

## ASP.NET Core

- [Azure: Microsoft-prefixed Azure integration packages removed](#azure-microsoft-prefixed-azure-integration-packages-removed)
- [SignalR: UseSignalR and UseConnections methods removed](#signalr-usesignalr-and-useconnections-methods-removed)

[!INCLUDE[Azure: Microsoft-prefixed Azure integration packages removed](~/includes/core-changes/aspnetcore/5.0/azure-integration-packages-removed.md)]

***

[!INCLUDE[SignalR: UseSignalR and UseConnections methods removed](~/includes/core-changes/aspnetcore/5.0/signalr-usesignalr-useconnections-removed.md)]

***
9 changes: 7 additions & 2 deletions docs/core/compatibility/aspnetcore.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: ASP.NET Core breaking changes
titleSuffix: ""
description: Lists the breaking changes in ASP.NET Core.
ms.date: "03/24/2020"
ms.date: "03/25/2020"
author: "scottaddie"
ms.author: "scaddie"
---
Expand All @@ -20,6 +20,7 @@ The following breaking changes are documented on this page:
- [Authorization: AddAuthorization overload moved to different assembly](#authorization-addauthorization-overload-moved-to-different-assembly)
- [Authorization: IAllowAnonymous removed from AuthorizationFilterContext.Filters](#authorization-iallowanonymous-removed-from-authorizationfiltercontextfilters)
- [Authorization: IAuthorizationPolicyProvider implementations require new method](#authorization-iauthorizationpolicyprovider-implementations-require-new-method)
- [Azure: Microsoft-prefixed Azure integration packages removed](#azure-microsoft-prefixed-azure-integration-packages-removed)
- [Caching: CompactOnMemoryPressure property removed](#caching-compactonmemorypressure-property-removed)
- [Caching: Microsoft.Extensions.Caching.SqlServer uses new SqlClient package](#caching-microsoftextensionscachingsqlserver-uses-new-sqlclient-package)
- [Caching: ResponseCaching "pubternal" types changed to internal](#caching-responsecaching-pubternal-types-changed-to-internal)
Expand Down Expand Up @@ -67,7 +68,11 @@ The following breaking changes are documented on this page:

## ASP.NET Core 5.0

[!INCLUDE[SignalR: UseSignalR and UseConnections methods removed](../../../includes/core-changes/aspnetcore/5.0/signalr-usesignalr-useconnections-removed.md)]
[!INCLUDE[Azure: Microsoft-prefixed Azure integration packages removed](~/includes/core-changes/aspnetcore/5.0/azure-integration-packages-removed.md)]

***

[!INCLUDE[SignalR: UseSignalR and UseConnections methods removed](~/includes/core-changes/aspnetcore/5.0/signalr-usesignalr-useconnections-removed.md)]

***

Expand Down
2 changes: 1 addition & 1 deletion docs/core/whats-new/dotnet-core-3-0.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ To publish a single-file executable, set the `PublishSingleFile` in your project
dotnet publish -r win10-x64 -p:PublishSingleFile=true
```

For more information about single-file publishing, see the [single-file bundler design document](https://github.com/dotnet/designs/blob/master/accepted/single-file/design.md).
For more information about single-file publishing, see the [single-file bundler design document](https://github.com/dotnet/designs/blob/master/accepted/2020/single-file/design_3_0.md).

### Assembly linking

Expand Down
2 changes: 1 addition & 1 deletion docs/csharp/language-reference/tokens/verbatim.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ The `@` special character serves as a verbatim identifier. It can be used in the

[!code-csharp[verbatim1](../../../../samples/snippets/csharp/language-reference/keywords/verbatim1.cs#1)]

1. To indicate that a string literal is to be interpreted verbatim. The `@` character in this instance defines a *verbatim string literal*. Simple escape sequences (such as `"\\"` for a backslash), hexadecimal escape sequences (such as `"\x0041"` for an uppercase A), and Unicode escape sequences (such as `"\u0041"` for an uppercase A) are interpreted literally. Only a quote escape sequence (`""`) is not interpreted literally; it produces a single quotation mark. Additionally, in case of a verbatim [interpolated string](interpolated.md) brace escape sequences (`{{` and `}}`) are not interpreted literally; they produce single brace characters. The following example defines two identical file paths, one by using a regular string literal and the other by using a verbatim string literal. This is one of the more common uses of verbatim string literals.
1. To indicate that a string literal is to be interpreted verbatim. The `@` character in this instance defines a *verbatim string literal*. Simple escape sequences (such as `"\\"` for a backslash), hexadecimal escape sequences (such as `"\x0041"` for an uppercase A), and Unicode escape sequences (such as `"\u0041"` for an uppercase A) are interpreted literally. Only a quote escape sequence (`""`) is not interpreted literally; it produces one double quotation mark. Additionally, in case of a verbatim [interpolated string](interpolated.md) brace escape sequences (`{{` and `}}`) are not interpreted literally; they produce single brace characters. The following example defines two identical file paths, one by using a regular string literal and the other by using a verbatim string literal. This is one of the more common uses of verbatim string literals.

[!code-csharp[verbatim2](../../../../samples/snippets/csharp/language-reference/keywords/verbatim1.cs#2)]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Registration-free activation for .NET Framework-based components is only slightl

This topic describes how to associate an application manifest with an application; associate a component manifest with a component; and embed a component manifest in an assembly.

### To create an application manifest
## Create an application manifest

1. Using an XML editor, create (or modify) the application manifest owned by the COM application that is interoperating with one or more managed components.

Expand Down Expand Up @@ -71,9 +71,9 @@ Registration-free activation for .NET Framework-based components is only slightl

5. Save and name the manifest file. The name of an application manifest is the name of the assembly executable followed by the .manifest extension. For example, the application manifest file name for myComApp.exe is myComApp.exe.manifest.

You can install an application manifest in the same directory as the COM application. Alternatively, you can add it as a resource to the application's .exe file. For additional information, For more information, see [About Side-by-Side Assemblies](/windows/desktop/SbsCs/about-side-by-side-assemblies-).
You can install an application manifest in the same directory as the COM application. Alternatively, you can add it as a resource to the application's .exe file. For more information, see [About Side-by-Side Assemblies](/windows/desktop/SbsCs/about-side-by-side-assemblies-).

#### To create a component manifest
## Create a component manifest

1. Using an XML editor, create a component manifest to describe the managed assembly.

Expand Down
Loading