There is a significant amount of growth in open-source web stacks at the moment. Microsoft is also working to update its web application stack, and has released a number of new framework components.
Even though Microsoft’s Asp.Net is mature, it lacks few key characteristics like portability, modularity, and scalability.
The creation of OWIN, a specification on how to build an Asp.Net application and server hosting system that can function independently of each other and without the need for large runtime components, has emerged as a result of this trend.
OWIN specification will make ASP.NET more modular, offer better scalability, portability, and compete with open source alternatives.
OWIN’s other goals include helping the .net open source community with their participation, which extends to their tooling and framework support.
Table of Contents
OWIN is short form for Open Web Interface for .NET. OWIN is a kind of an open-source framework. It is not a framework, but rather a specification that belongs to the community. OWIN proposes a simple delegate structure to help decouple web servers and applications through an interface specification.
Now, let’s consider the particulars of the classic ASP.NET framework’s design problems, and how OWIN is intended to mitigate them.
ASP.NET has huge dependence on IIS. This limits the deployment of ASP.NET applications only in IIS. The portability of ASP.NET applications was impossible because of this heavy IIS dependency. Most ASP.NET applications rely on the System.Web assembly, which in turn is built on top of IIS and its myriad of web infrastructure features, including request/response filtering, logging, and more.
Even if they are not utilized in the application, System.Web assembly includes many pre-configured components that are automatically plugged into the HTTP pipeline. The existence of certain unwanted features in the pipeline for every request results in poor performance.
At the same time, there are greatly improved the performance of current open-source counterparts, such as NodeJs, Ruby, and the likes. This has given an impression of making web applications in ASP.NET framework like a waste of time.
Open Web Interface, OWIN was developed to make ASP.NET more modular by having a loosely coupled system by removing dependencies. OWIN initially removes the ASP.NET applications’ dependency on the System. Web assembly.
However, OWIN is not intended to entirely replace the ASP.NET framework or IIS, so when working with the OWIN model, we will still be making ASP.NET web applications in the same way we always have, but with a change in the infrastructure services of the ASP.NET framework.
The second significant disadvantage of the System. Web assembly is that it is bundled as part of the package for installing .NET Framework . The Microsoft Asp.Net team found the delivery of updates and bug fixes to ASP.NET components difficult and time-consuming due to this problem.
Since Microsoft no longer relies on the System. Web assembly, its web stack updates are now delivered more quickly through the Nuget package manager.
OWIN is not a standalone product. The Application Delegate defines a simple delegate structure, which is also known as AppFunc and is used for web server-application interaction with less dependency. Below you will find a sample AppFunc delegate signature.
using AppFunc = Func<IDictionary<string, object>, Task>
The delegate uses a single argument called Environment Dictionary to use a dictionary and returns a task object. The dictionary object can be altered, as it is mutable. Every application should make this delegate part of the OWIN standard.
An OWIN host will populate the environment dictionary with the request’s necessary information and execute it. In essence, it is the point of entry for the application, which is where the application’s initialization happens.
As a result, this has been dubbed the Startup class. When the application is run, it can make changes to or populate the dictionary with new content. The host will populate some of the environment dictionary’s mandatory keys and values before calling the application.
Based on the OWIN specification, there are four layers of components in the OWIN standard. The following list describes the components of OWIN-based applications..
Host
Server
Web Framework
Middleware
Web Application
Lets see in detail below,
Hosts are low-level components of an operating system that perform tasks like in charge of all underpinning system operations. Set up OWIN modules and handle requests by controlling server selection. Microsoft’s OWIN implementation Katana enables three different types of hosting.
IIS/ASP.NET
Custom Host
OwinHost.exe
The HTTP server acts as a middleman and communicates directly with the client before using OWIN semantics to process requests. An adapter layer may be required by servers in order to convert to OWIN semantics.
An object model or API, which can be used by applications to handle requests, developed on top of OWIN. An adapter layer may be required to convert OWIN semantics in web frameworks.
An application built on a web framework and run on OWIN-compatible servers.
Middleware in OWIN is a set of components that stand between a server and the application and are used to route, inspect, or modify the messages in the pipeline for a specific purpose.
Our ASP.NET application needs to be OWIN compliant, which means that the application delegate AppFunc should be implemented. We require the actual OWIN implementation for the host, asp.net application, and infrastructure service components, all of which are included in the current framework components. Thus, creating an OWIN compliant application is not simply a matter of using the AppFunc delegate. Other components are required. This specification’s implementation by Microsoft, known as Project Katana.
The OWIN middleware pass-through components must be used to handle ASP.NET’s infrastructure services, such as authentication, authorization, routing services, and other request and response filtering to eliminate ASP.NET’s reliance on Internet Information Server.
The middleware components in the new ASP.NET pipeline look like the old HTTP modules. The same as HttpModule events subscription in classic ASP.NET applications, they are called in the same order they are added to the Startup class.
In our application, the OWIN AppFunc delegate implementation we call in the Startup class.
The newer versions of ASP.NET, ASP.NET Core, has adopted Project Katana’s innovations.
Lets look on the brief history of OWIN implementation, which started with Project Katana and ended with ASP.NET Core releases.
Microsoft’s own implementation of the OWIN specification, which is also known as Project Katana, is delivered as Nuget packages. Those working on the project can include these packages from Nuget and begin their work.
Microsoft had long planned to release the next version of ASP.NET, which will support OWIN and will supersede ASP.NET 4.6. As a result, Project Katana started. The Katana libraries will continue to be used in projects as normal.
.NET Core is a modular, portable, open-source framework with a new implementation of the Common Language Runtime. The ASP.NET core has the ability to run on .NET Core framework and the latest versions of the runtime. Framework 4.6.2 net
After being re-written from scratch, Microsoft renamed the previously-named Asp.Net 5.0 to Asp.Net Core. Since it is delivered as a Nuget package, ASP.Net Core can be used on Windows and Linux. The.NetCore 1.0 and.NetFramework 4.5.1+ frameworks. Asp.Net Core, the latest edition of Asp.Net, has been officially christened.
OWIN and Project Katana, despite having been released years ago, have undergone several changes in their implementation since then.
OWIN is a brand-new, open-source web server-to-application interface. It’s a way to uncouple ASP.NET from IIS, which is currently very tightly coupled. Other OWIN-enabled frameworks, such as Nancy, can run on IIS now that IIS supports OWIN.
Due to Microsoft’s web frameworks being based on OWIN rather than IIS, they can be run in other environments, such as on a web server running Linux Mono or self-hosting within a process.
By separating the server and application, OWIN aims to make it easier for developers to build small and focused application components that can be used as part of the server’s HTTP request-routing pipeline.
OWIN is already used by SignalR and Web API, so they can be self-hosted and do other cool things.
.NET Web applications and Web servers can communicate with each other via OWIN which is an open-source project with a strong sense of community ownership.
By using the OAuth authorization framework, a third-party application can gain restricted access to an HTTP service.
OWIN’s primary objective is to break the link between the server and the application, allowing the server to better route incoming HTTP requests through the processing pipeline.
OWIN is nothing more than a set of rules. At its core, OWIN based on the idea that you can build a framework for handling web requests regardless of where they are hosted by using a few language constructs such as delegates and dictionaries. We can even run an OWIN application from a console app.
Since OWIN separates the application from the server, it’s perfect for people who prefer to host their own websites.
OWIN can act as a host for WEBAPI, nancy, or can serve even as ftp server. It’s up to you.
You can use your own process to host the application, rather than relying on IIS, such as a Windows service.
Application portability between hosts and operating systems is made simple.
Reduces the number of middleware components and operates as if it were a pipeline.
Pipelines make workflow simple, and reducing pipelines improves efficiency.
OWIN authentication middleware has the advantage of allowing other components hosted on OWIN to share security features. In forms authentication, a user agent cookie stores a representation of the identity of the user.
OWIN establishes a common interface between.NET web servers and web based applications. The OWIN interface aims to separate server and application development, promote the creation of simple .NET web development modules, and stimulate the open source.NET web development tool ecosystem through its openness.
We hope that you found this article on OWIN in .NET Core really helpful in understanding OWIN application development in .NET.
OWIN (Open Web Interface for .NET) is an interface between web servers and web applications…
JSON (JavaScript Object Notation) is a commonly used data exchange format that facilitates data exchange…
The CAP theorem is also known as Brewer's theorem. What is CAP Theorem? CAP theorem…
Some of the Key factors that need to consider while architecting or designing a software…
The Interface Segregation Principle (ISP) is one of the SOLID principles of object-oriented design. The…
The Single Responsibility Principle (SRP), also known as the Singularity Principle, is a software design…