+1

Tổng quan về Owin - Open Web Server Interface for .NET

1.Owin là gì ?

Owin (Open Web Interface for Net) là một open-source, nó định nghĩa một chuẩn giao diện giữa webserver và web application. Mục đích của Owin là để tách biệt giữa server và ứng dụng, khuyến khích sự phát triển những modules đơn giản cho phát triển web trong .Net. Cụ thể đó là hai mục đích chính:

  • Thành phần mới có thể dễ dàng hơn để phát triển và sử dụng
  • Ứng dụng có thể dễ dàng chuyển qua các hosts khác nhau và các nên tảng có thể hỗ trợ.

Lưu ý rằng, Owin là một đặc tả, không phải là một implementation. Như vậy, Owin mô tả một tập hợp tối thiểu các Types và một Single application delegate thông qua những tương tác giữa thành phần ứng dụng và server.

2.Các định nghĩa trong Owin

Owin cung cấp những định nghĩa chung cho các thành phần phần mềm trong một ứng dụng Owin-based như sau:

Server: HTTP Server cái mà giao tiếp một cách trực tiếp với client và tiếp theo sử dụng Owin để xử lý requests. Server có thể yêu cầu một tầng chuyển đổi để converts tới các đặc tả trong Owin.

Web Framework: Một thành phần khép kín phía trên Owin phô bày các object model hoặc API cái mà các ứng dụng có thể sử dụng để tạo điều kiện xử lý request. Web Frameworks có thể yêu cầu một tầng chuyển đổi để convert từ các đặc tả trong OWin

Web Application: Một ứng dụng cụ thể,có thể được xây dựng trên một web framework, cái mà chạy bởi Owin máy chủ tương thích.

Middleware: Đi qua các thành phần tạo thành một luồng giữa máy chủ và ứng dụng để kiểm tra, định tuyến, sửa đổi request và respone message cho một mục đích cụ thể.

Host: Quá trình một ứng dụng và server thực thi bên trong, chủ yếu chịu trách nhiệm trong việc khởi động ứng dụng.

3.OWIN Environment

Host trong một ứng dụng Owin-compatility cung cấp một Environment Dictionary

IDictionary<string, object>

Nó chứa tất cả các thông tin liên quan về request, response và server/host. Đặc tả Owin định nghĩa một tập tối thiểu của keys và values có trong dictionary. Tuy nhiên, môi trường servers, host, middleware và code ứng dụng có thể thêm, hoặc sửa đổi dữ liệu trong dictionary như một kết quả của việc xử lý.

4.OWIN Application Delegate Function

Như đã đề cập ở trên, Owin cũng chỉ định một giao diễn chính, Application Delegate (được biết như AppFunc). Những tương tác giữa server và các thành phần ứng dụng xảy ra thông qua việc gọi tới AppFunc delegate.

Một hàm Application Deletegate sẽ có một IDictionary<string, object> là đối số, sử dụng thông tin request/response có trong Environment Dictionary để thực hiện bất kì xử lý nào được yêu cầu và trả về một Task khi xử lý là hoàn thành.

Application Delegate Function được định nghĩa bởi Owin:

Func<IDictionary<string, object>, Task>

5.Host OWIN in IIS

Trong những mục trên, chúng ta đã trình bày một số định nghĩa, thành phần của Owin. Trong mục này chúng ta bắt đầu một demo nhỏ để thực hiện việc host Owin trong IIS. Đầu tiên, tạo project mới với VS 2012

owin01.png

Trong cửa sổ New ASP.NET, chọn Empty template:

owin02.png

Tiếp theo chúng ta add một nuget package. Vào Tool menu, chọn Library Package Manager, chọn Package Manager Console và gõ lệnh sau:

install-package Microsoft.Owin.Host.SystemWeb –Pre

Tất cả các package được yêu cầu sẽ được thêm vào project.

Tạo một Startup Class

using System;
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(OwinApp.Startup))]

namespace OwinApp
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
          app.Run(context =>
          {
              context.Response.ContentType = "text/plain";
              return context.Response.WriteAsync("Hello, world.");
          });
        }
    }
}

Cuối cùng, khi chạy web trên trình duyệt, kết quả sẽ hiển thị như hình bên dưới:

owin05.png

6.Self-Host OWIN trong một ứng dụng Console

Trong Visual Studio tạo new project Window application console, cài đặt các package cần thiết cho Owin với lệnh:

Install-Package Microsoft.Owin.SelfHost -Pre

Thêm StartUp Class như phần trên.

Implement phương thức Main như bên dưới:

class Program
{
    static void Main(string[] args)
    {
        using (Microsoft.Owin.Hosting.WebApp.Start<Startup>("http://localhost:5000"))
        {
            Console.WriteLine("Press [enter] to quit...");
            Console.ReadLine();
        }
    }
}

Khi chúng ta chạy ứng dụng console, server sẽ lắng nghe trên địa chỉ http://localhost:5000. Nếu gõ trên trình duyệt ta sẽ nhận được chuỗi Hello world như phần trên

owin07.png

7.Kết luận

Owin là công nghệ khá mới trong .Net giúp cho việc xây dựng các Middlewares tách biệt với web server, giúp chúng ta có dễ dàng chuyển đổi host (host in IIS hoặc self-host) trong các ứng dụng application web-based. Trên đây là những tìm hiểu bước đầu. Hy vọng các bạn sẽ có một cái nhìn tổng quan về Owin. Các kiến thức sâu hơn mình sẽ trình bày trong những phần sau.

Tài liệu tham khảo:

http://johnatten.com/2015/01/04/asp-net-understanding-owin-katana-and-the-middleware-pipeline/ http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana http://owin.org/html/spec/owin-1.0.html#2-definitions


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí