Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ public class Global : HttpApplication, IContainerProviderAccessor
}

/// <summary>
/// http://docs.autofac.org/en/latest/integration/webforms.html
/// https://autofaccn.readthedocs.io/en/latest/integration/webforms.html
/// </summary>
private void ConfigureContainer()
{
Expand Down
2 changes: 1 addition & 1 deletion docs/architecture/cloud-native/distributed-data.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ Figure 5-7 shows an implementation of the CQRS pattern.

**Figure 5-7**. CQRS implementation

In the previous figure, separate command and query models are implemented. Each data write operation is saved to the write store and then propagated to the read store. Pay close attention to how the data propagation process operates on the principle of [eventual consistency](http://www.cloudcomputingpatterns.org/eventual_consistency/). The read model eventually synchronizes with the write model, but there may be some lag in the process. We discuss eventual consistency in the next section.
In the previous figure, separate command and query models are implemented. Each data write operation is saved to the write store and then propagated to the read store. Pay close attention to how the data propagation process operates on the principle of [eventual consistency](https://www.cloudcomputingpatterns.org/eventual_consistency/). The read model eventually synchronizes with the write model, but there may be some lag in the process. We discuss eventual consistency in the next section.

This separation enables reads and writes to scale independently. Read operations use a schema optimized for queries, while the writes use a schema optimized for updates. Read queries go against denormalized data, while complex business logic can be applied to the write model. As well, you might impose tighter security on write operations than those exposing reads.

Expand Down
8 changes: 4 additions & 4 deletions docs/architecture/cloud-native/identity-server.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Typically, applications need to support some or all of the following scenarios:

In each of these scenarios, the exposed functionality needs to be secured against unauthorized use. At a minimum, this typically requires authenticating the user or principal making a request for a resource. This authentication may use one of several common protocols such as SAML2p, WS-Fed, or OpenID Connect. Communicating with APIs typically uses the OAuth2 protocol and its support for security tokens. Separating these critical cross-cutting security concerns and their implementation details from the applications themselves ensures consistency and improves security and maintainability. Outsourcing these concerns to a dedicated product like IdentityServer helps the requirement for every application to solve these problems itself.

IdentityServer provides middleware that runs within an ASP.NET Core application and adds support for OpenID Connect and OAuth2 (see [supported specifications](http://docs.identityserver.io/en/latest/intro/specs.html)). Organizations would create their own ASP.NET Core app using IdentityServer middleware to act as the STS for all of their token-based security protocols. The IdentityServer middleware exposes endpoints to support standard functionality, including:
IdentityServer provides middleware that runs within an ASP.NET Core application and adds support for OpenID Connect and OAuth2 (see [supported specifications](https://docs.identityserver.io/en/latest/intro/specs.html)). Organizations would create their own ASP.NET Core app using IdentityServer middleware to act as the STS for all of their token-based security protocols. The IdentityServer middleware exposes endpoints to support standard functionality, including:

- Authorize (authenticate the end user)
- Token (request a token programmatically)
Expand Down Expand Up @@ -90,13 +90,13 @@ IdentityServer also hosts a public demo site that can be used to test various pr

## JavaScript clients

Many cloud-native applications leverage server-side APIs and rich client single page applications (SPAs) on the front end. IdentityServer ships a [JavaScript client](http://docs.identityserver.io/en/latest/quickstarts/4_javascript_client.html) (`oidc-client.js`) via NPM that can be added to SPAs to enable them to use IdentityServer for sign in, sign out, and token-based authentication of web APIs.
Many cloud-native applications leverage server-side APIs and rich client single page applications (SPAs) on the front end. IdentityServer ships a [JavaScript client](https://docs.identityserver.io/en/latest/quickstarts/4_javascript_client.html) (`oidc-client.js`) via NPM that can be added to SPAs to enable them to use IdentityServer for sign in, sign out, and token-based authentication of web APIs.

## References

- [IdentityServer documentation](http://docs.identityserver.io/en/latest/)
- [IdentityServer documentation](https://docs.identityserver.io/en/latest/)
- [Application types](https://docs.microsoft.com/azure/active-directory/develop/app-types)
- [JavaScript OIDC client](http://docs.identityserver.io/en/latest/quickstarts/4_javascript_client.html)
- [JavaScript OIDC client](https://docs.identityserver.io/en/latest/quickstarts/4_javascript_client.html)

>[!div class="step-by-step"]
>[Previous](azure-active-directory.md)
Expand Down
2 changes: 1 addition & 1 deletion docs/architecture/cloud-native/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ All other marks and logos are property of their respective owners.

Authors:

> **Rob Vettor**, Principal Cloud System Architect/IP Architect - [thinkingincloudnative.com](http://thinkingincloudnative.com/about/), Microsoft
> **Rob Vettor**, Principal Cloud System Architect/IP Architect - [thinkingincloudnative.com](https://thinkingincloudnative.com/about/), Microsoft
>
> **Steve "ardalis" Smith**, Software Architect and Trainer - [Ardalis.com](https://ardalis.com)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ Additional topics to consider when using asynchronous communication are message
<https://www.enterpriseintegrationpatterns.com/patterns/messaging/PublishSubscribeChannel.html>

- **Udi Dahan. Clarified CQRS** \
<http://udidahan.com/2009/12/09/clarified-cqrs/>
<https://udidahan.com/2009/12/09/clarified-cqrs/>

- **Command and Query Responsibility Segregation (CQRS)** \
<https://docs.microsoft.com/azure/architecture/patterns/cqrs>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ After the initial architecture and patterns explanation sections, the next secti
<https://azure.microsoft.com/services/api-management/>

- **Udi Dahan. Service Oriented Composition** \
<http://udidahan.com/2014/07/30/service-oriented-composition-with-video/>
<https://udidahan.com/2014/07/30/service-oriented-composition-with-video/>

- **Clemens Vasters. Messaging and Microservices at GOTO 2016 (video)** \
<https://www.youtube.com/watch?v=rXi5CLjIQ9k>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ The use of asynchronous communication is explained with additional details later
<https://docs.microsoft.com/azure/architecture/patterns/compensating-transaction>

- **Udi Dahan. Service Oriented Composition** \
<http://udidahan.com/2014/07/30/service-oriented-composition-with-video/>
<https://udidahan.com/2014/07/30/service-oriented-composition-with-video/>

>[!div class="step-by-step"]
>[Previous](logical-versus-physical-architecture.md)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -359,13 +359,13 @@ The reference app uses [MediatR](https://github.com/jbogard/MediatR) to propagat
<https://www.tonytruong.net/domain-events-pattern-example/>

- **Udi Dahan. How to create fully encapsulated Domain Models** \
<http://udidahan.com/2008/02/29/how-to-create-fully-encapsulated-domain-models/>
<https://udidahan.com/2008/02/29/how-to-create-fully-encapsulated-domain-models/>

- **Udi Dahan. Domain Events – Take 2** \
<http://udidahan.com/2008/08/25/domain-events-take-2/>
<https://udidahan.com/2008/08/25/domain-events-take-2/>

- **Udi Dahan. Domain Events – Salvation** \
<http://udidahan.com/2009/06/14/domain-events-salvation/>
<https://udidahan.com/2009/06/14/domain-events-salvation/>

- **Jan Kronquist. Don't publish Domain Events, return them!** \
<https://blog.jayway.com/2013/06/20/dont-publish-domain-events-return-them/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ There is only one application architecture: the architecture of the system or en
<https://cqrs.files.wordpress.com/2010/11/cqrs_documents.pdf>

- **Udi Dahan. Clarified CQRS** \
<http://udidahan.com/2009/12/09/clarified-cqrs/>
<https://udidahan.com/2009/12/09/clarified-cqrs/>

>[!div class="step-by-step"]
>[Previous](apply-simplified-microservice-cqrs-ddd-patterns.md)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ DDD is a large topic with a rich set of resources for learning. You can start wi
<https://www.amazon.com/Domain-Driven-Design-Quickly-Abel-Avram/dp/1411609255/>

- **Scott Millett, Nick Tune - Patterns, Principles, and Practices of Domain-Driven Design** \
<http://www.wrox.com/WileyCDA/WroxTitle/Patterns-Principles-and-Practices-of-Domain-Driven-Design.productCd-1118714709.html>
<https://www.wiley.com/en-eg/Patterns%2C+Principles%2C+and+Practices+of+Domain+Driven+Design-p-9781118714706>

##### DDD training

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ The following example shows the simplified `CreateOrderCommand` class. This is a
// plus being able to update the data just once, when creating the object
// through the constructor.
// References on immutable commands:
// http://cqrs.nu/Faq
// https://cqrs.nu/Faq
// https://docs.spine3.org/motivation/immutability.html
// http://blog.gauffin.org/2012/06/griffin-container-introducing-command-support/
// https://docs.microsoft.com/dotnet/csharp/programming-guide/classes-and-structs/how-to-implement-a-lightweight-class-with-auto-implemented-properties
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,14 +127,14 @@ Identifying and working with aggregates requires research and experience. For mo

#### Additional resources

- **Vaughn Vernon. Effective Aggregate Design - Part I: Modeling a Single Aggregate** (from <http://dddcommunity.org/>) \
<http://dddcommunity.org/wp-content/uploads/files/pdf_articles/Vernon_2011_1.pdf>
- **Vaughn Vernon. Effective Aggregate Design - Part I: Modeling a Single Aggregate** (from <https://dddcommunity.org/>) \
<https://dddcommunity.org/wp-content/uploads/files/pdf_articles/Vernon_2011_1.pdf>

- **Vaughn Vernon. Effective Aggregate Design - Part II: Making Aggregates Work Together** (from <http://dddcommunity.org/>) \
<http://dddcommunity.org/wp-content/uploads/files/pdf_articles/Vernon_2011_2.pdf>
- **Vaughn Vernon. Effective Aggregate Design - Part II: Making Aggregates Work Together** (from <https://dddcommunity.org/>) \
<https://dddcommunity.org/wp-content/uploads/files/pdf_articles/Vernon_2011_2.pdf>

- **Vaughn Vernon. Effective Aggregate Design - Part III: Gaining Insight Through Discovery** (from <http://dddcommunity.org/>) \
<http://dddcommunity.org/wp-content/uploads/files/pdf_articles/Vernon_2011_3.pdf>
- **Vaughn Vernon. Effective Aggregate Design - Part III: Gaining Insight Through Discovery** (from <https://dddcommunity.org/>) \
<https://dddcommunity.org/wp-content/uploads/files/pdf_articles/Vernon_2011_3.pdf>

- **Sergey Grybniak. DDD Tactical Design Patterns** \
<https://www.codeproject.com/Articles/1164363/Domain-Driven-Design-Tactical-Design-Patterns-Part>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ For example, in the preceding OrderAggregate code example, there are several pri
<https://docs.microsoft.com/archive/msdn-magazine/2013/august/data-points-coding-for-domain-driven-design-tips-for-data-focused-devs>

- **Udi Dahan. How to create fully encapsulated Domain Models** \
<http://udidahan.com/2008/02/29/how-to-create-fully-encapsulated-domain-models/>
<https://udidahan.com/2008/02/29/how-to-create-fully-encapsulated-domain-models/>

> [!div class="step-by-step"]
> [Previous](microservice-domain-model.md)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ For production scenarios check the additional resources below, specific for Rabb
A production-ready solutions with support for RabbitMQ.

- **EasyNetQ** - Open Source .NET API client for RabbitMQ \
<http://easynetq.com/>
<https://easynetq.com/>

- **MassTransit** \
<https://masstransit-project.com/>
Expand Down
4 changes: 2 additions & 2 deletions docs/architecture/modernize-desktop/example-migration-core.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ Once you've migrated the package references, you must check each reference for c

![Screenshot of the NuGet dependencies for the Castle.Windsor package](./media/example-migration-core/nuget-dependencies.png)

To check the package compatibility, you can use the tool <http://fuget.org> that offers a more detailed information about versions and dependencies.
To check the package compatibility, you can use the tool <https://fuget.org> that offers a more detailed information about versions and dependencies.

Maybe the project is referencing older package versions that don't support .NET Core, but you might find newer versions that do support it. So, updating packages to newer versions is generally a good recommendation. However, you should consider that updating the package version can introduce some breaking changes that would force you to update your code.

Expand Down Expand Up @@ -128,7 +128,7 @@ For example, if you use configuration files (*app.config*), you may find some er

Another reason for errors is the use of the `BeginInvoke` and `EndInvoke` methods because they aren't supported on .NET Core. They aren't supported on .NET Core because they have a dependency on Remoting, which doesn't exist on .NET Core. To solve this issue, try to use the `await` keyword (when available) or the <xref:System.Threading.Tasks.Task.Run%2A?displayProperty=nameWithType> method.

You can use compatibility analyzers to let you identify APIs and code patterns in your code that can potentially cause problems at run time with .NET Core. Go to <http://github.com/dotnet/platform-compat> and use the .NET API analyzer on your project.
You can use compatibility analyzers to let you identify APIs and code patterns in your code that can potentially cause problems at run time with .NET Core. Go to <https://github.com/dotnet/platform-compat> and use the .NET API analyzer on your project.

## Migrating a Windows Forms application

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Since its launch in 2002, .NET Framework has evolved through the years to suppor

If you're targeting only one of these platforms, you can use this model. However, in many cases you might need more than one target platform in the same solution. For example, your application may have a desktop admin part, a customer-facing web site that shares the back-end logic running on a server, and even a mobile client. In this case, you need a unified coding experience that can span all this .NET verticals.

By the time Windows 8 was released, the concept of Portable Class Libraries (PCLs) was born. Originally, the .NET Framework was designed around the assumption that it would always be deployed as a single unit, so [factoring](http://en.wikipedia.org/wiki/Decomposition_(computer_science)) wasn't a concern. To face the problem of code sharing between verticals, the driving force was on how to refactor the framework. The idea of contracts is to provide a well-factored API surface area. Contracts are simply assemblies that you compile against and are designed with proper factoring in mind taking care of the dependencies between them.
By the time Windows 8 was released, the concept of Portable Class Libraries (PCLs) was born. Originally, the .NET Framework was designed around the assumption that it would always be deployed as a single unit, so [factoring](https://en.wikipedia.org/wiki/Decomposition_(computer_science)) wasn't a concern. To face the problem of code sharing between verticals, the driving force was on how to refactor the framework. The idea of contracts is to provide a well-factored API surface area. Contracts are simply assemblies that you compile against and are designed with proper factoring in mind taking care of the dependencies between them.

This leads to reasoning about the API differences between verticals at the assembly level, as opposed to the individual API level that we had before. This aspect enabled a class library experience that can target multiple verticals, also known as portable class libraries.

Expand Down
4 changes: 2 additions & 2 deletions docs/core/about.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ The [C#](../csharp/index.yml), [Visual Basic](../visual-basic/index.yml), and [F
- [Visual Studio](https://visualstudio.microsoft.com/vs/?utm_medium=microsoft&utm_source=docs.microsoft.com&utm_campaign=inline+link)
- [Visual Studio Code](https://code.visualstudio.com/download)

Editor integration is provided, in part, by the contributors of the [OmniSharp](https://www.omnisharp.net/) and [Ionide](http://ionide.io) projects.
Editor integration is provided, in part, by the contributors of the [OmniSharp](https://www.omnisharp.net/) and [Ionide](https://ionide.io) projects.

## APIs

Expand Down Expand Up @@ -63,6 +63,6 @@ Many APIs are included that satisfy common needs:

.NET Core binary distributions from Microsoft are built and tested on Microsoft-maintained servers in Azure and follow Microsoft engineering and security practices.

[Red Hat supports .NET Core](http://redhatloves.net/) on Red Hat Enterprise Linux (RHEL). Red Hat builds .NET Core from source and makes it available in the [Red Hat Software Collections](https://developers.redhat.com/products/softwarecollections/overview/). Red Hat and Microsoft collaborate to ensure that .NET Core works well on RHEL.
[Red Hat supports .NET Core](https://developers.redhat.com/topics/dotnet/) on Red Hat Enterprise Linux (RHEL). Red Hat builds .NET Core from source and makes it available in the [Red Hat Software Collections](https://developers.redhat.com/products/softwarecollections/overview/). Red Hat and Microsoft collaborate to ensure that .NET Core works well on RHEL.

[Tizen supports .NET Core](https://developer.tizen.org/development/training/.net-application) on Tizen platforms.
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ The Windows Forms <xref:System.Windows.Forms.RichTextBox> control can display We

### To link to a Web page with the RichTextBox control

1. Set the <xref:System.Windows.Forms.RichTextBox.Text%2A> property to a string that includes a valid URL (for example, "http://www.microsoft.com/").
1. Set the <xref:System.Windows.Forms.RichTextBox.Text%2A> property to a string that includes a valid URL (for example, "https://www.microsoft.com/").

2. Make sure the <xref:System.Windows.Forms.RichTextBox.DetectUrls%2A> property is set to `true` (the default).

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ The following code example demonstrates how to navigate the <xref:System.Windows
## Example

```vb
Me.webBrowser1.Navigate("http://www.microsoft.com")
Me.webBrowser1.Navigate("https://www.microsoft.com")
```

```csharp
this.webBrowser1.Navigate("http://www.microsoft.com");
this.webBrowser1.Navigate("https://www.microsoft.com");
```

## Compiling the Code
Expand Down
2 changes: 1 addition & 1 deletion docs/fsharp/style-guide/conventions.md
Original file line number Diff line number Diff line change
Expand Up @@ -684,7 +684,7 @@ F# has full support for objects and object-oriented (OO) concepts. Although many

[Object Expressions](../language-reference/object-expressions.md) allow you to implement interfaces on the fly, binding the implemented interface to a value without needing to do so inside of a class. This is convenient, especially if you _only_ need to implement the interface and have no need for a full class.

For example, here is the code that is run in [Ionide](http://ionide.io/) to provide a code fix action if you've added a symbol that you don't have an `open` statement for:
For example, here is the code that is run in [Ionide](https://ionide.io/) to provide a code fix action if you've added a symbol that you don't have an `open` statement for:

```fsharp
let private createProvider () =
Expand Down