Khi code web asp.net thì ta chỉ có 1 lựa chọn web server duy nhất là IIS
Nhưng mà công nghệ ngày một phát triển, các lập trình viên đã sáng chế ra một phương thức mà web asp.net giờ đây không phải host trên IIS nữa. Tên của sáng chế đó là OWIN - Open Web Interface for .NET
Theo định nghĩa ngắn gọn của các chuyên gia thì :
OWIN is a open source specification that is not defined by microsoft and is not an actual implementation
OWIN là một đặc tả mã nguồn mở không phải hàng chính hãng Microsoft cơ mà đã được đưa vào thực tế ngon ngẻ rồi nha
Katana là tên một dự án mã nguồn mở xây dựng các tập công cụ theo đặc tả được mô tả trong OWIN.
Vậy túm lại thì OWIN chỉ là một đặc tả thôi, nó mới là lý thuyết trên giấy. Còn đây mà là hero nè : Katana
Chúng ta sẽ dần dần tìm hiểu các công cụ này bằng một project web api demo nhé
Bước đầu tiên là ta cần install 2 package sau bằng cách gõ lệnh trên Package Manager
PM> Install-Package Microsoft.Owin.SelfHost
PM> Install-Package Microsoft.AspNet.WebApi.OwinSelfHost
Sau đó thì ta tạo 1 class cấu hình với tên là Startup để cấu hình router cho web api như bình thường
Bước đầu tiên là ta cần install 2 package sau bằng cách gõ lệnh trên Package Manager
PM> Install-Package Microsoft.Owin.SelfHost
PM> Install-Package Microsoft.AspNet.WebApi.OwinSelfHost
Sau đó thì ta tạo 1 class cấu hình với tên là Startup để cấu hình router cho web api như bình thường
using System.Web.Http;
using Owin;
namespace AspNetSelfHostDemo
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
// Configure Web API for self-host.
var config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
app.UseWebApi(config);
}
}
}
Sau đó ta tạo một controller web api như bình thường
using System.Collections.Generic;
using System.Web.Http;
namespace AspNetSelfHostDemo
{
public class DemoController : ApiController
{
// GET api/demo
public IEnumerable<string> Get()
{
return new string[] { "Hello", "World" };
}
// GET api/demo/5
public string Get(int id)
{
return "Hello, World!";
}
// POST api/demo
public void Post([FromBody]string value)
{
}
// PUT api/demo/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/demo/5
public void Delete(int id)
{
}
}
}
Và bước cuối cùng đơn giản không kém đây, ta tạo một class để khởi động (class này gọi ra đặc tả WebApp.Start trong Katana project đó) nhồi vào Start là tên class cấu hình <Startup> với tham số là thông tin host và port tự đặt để chạy chương trình
using System;
using Microsoft.Owin.Hosting;
namespace AspNetSelfHostDemo
{
class Program
{
static void Main(string[] args)
{
using (WebApp.Start<Startup>("http://localhost:8080"))
{
Console.WriteLine("Web Server is running.");
Console.WriteLine("Press any key to quit.");
Console.ReadLine();
}
}
}
}
Thật là đơn giản phải không nào, ta chạy chương trình và bật postman lên thưởng thức thành quả thôi nào
http://localhost:8080/api/demo
Chúc các bạn một ngày nghiên cứu thật vui vẻ

No comments:
Post a Comment