亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

OWIN 中 K Commands(OwinHost.exe)與 Microsoft.AspNet.Hosting 的角色問題

2019-11-17 01:58:38
字體:
來源:轉載
供稿:網友

OWIN 中 K Commands(OwinHost.exe)與 Microsoft.aspNet.Hosting 的角色問題

問題詳情:K Commands(OwinHost.exe)是不是 OWIN 中的 Host 角色?如果是,那 Microsoft.AspNet.Hosting 對應的是 OWIN 中的哪個角色?

OWIN 中,除了 Host 和 Server 的概念容易混淆,K Commands(OwinHost.exe)與 Microsoft.AspNet.Hosting 也是很容易混淆的一點,先看一下它們的概念:

  • OwinHost.exe: While some will want to write a custom PRocess to run Katana Web applications, many would prefer to simply launch a pre-built executable that can start a server and run their application. For this scenario, the Katana component suite includes OwinHost.exe. When run from within a project’s root directory, this executable will start a server (it uses the HttpListener server by default) and use conventions to find and run the user’s startup class. For more granular control, the executable provides a number of additional command line parameters.
  • K Commands: Whenever you want to run your app in command line using K* commands, you will use k run. The K command is your entry point to the runtime. To run an application you can use K run to build you can use K build, and all other commands that are about taking your application and running it.
  • Microsoft.AspNet.Hosting: The Hosting repo contains code required to host an asp.net vNext application, it is the entry point used when self-hosting an application.

上面是從網上各個地方搜刮的概念,再來結合 Microsoft.AspNet.Hosting/Program.cs 的源碼

using System;using System.IO;using System.Threading;using System.Threading.Tasks;using Microsoft.Framework.ConfigurationModel;using Microsoft.Framework.DependencyInjection;using Microsoft.Framework.DependencyInjection.Fallback;using Microsoft.Framework.Logging;using Microsoft.Framework.Runtime;namespace Microsoft.AspNet.Hosting{    public class Program    {        private const string HostingIniFile = "Microsoft.AspNet.Hosting.ini";        private readonly IServiceProvider _serviceProvider;        public Program(IServiceProvider serviceProvider)        {            _serviceProvider = serviceProvider;        }        public void Main(string[] args)        {            var config = new Configuration();            if (File.Exists(HostingIniFile))            {                config.AddIniFile(HostingIniFile);            }            config.AddEnvironmentVariables();            config.AddCommandLine(args);            var services = HostingServices.Create(_serviceProvider, config)                .BuildServiceProvider();            var appEnv = services.GetRequiredService<IApplicationEnvironment>();            var hostingEnv = services.GetRequiredService<IHostingEnvironment>();            var context = new HostingContext()            {                Services = services,                Configuration = config,                ServerName = config.Get("server"), // TODO: Key names                ApplicationName = config.Get("app")  // TODO: Key names                    ?? appEnv.ApplicationName,                EnvironmentName = hostingEnv.EnvironmentName,            };            var engine = services.GetRequiredService<IHostingEngine>();            var loggerFactory = services.GetRequiredService<ILoggerFactory>();            var appShutdownService = _serviceProvider.GetRequiredService<IApplicationShutdown>();            var shutdownHandle = new ManualResetEvent(false);            var serverShutdown = engine.Start(context);            appShutdownService.ShutdownRequested.Register(() =>            {                try                {                    serverShutdown.Dispose();                }                catch (Exception ex)                {                    var logger = loggerFactory.Create<Program>();                    logger.WriteError("TODO: Dispose threw an exception", ex);                }                shutdownHandle.Set();            });            var ignored = Task.Run(() =>            {                Console.WriteLine("Started");                Console.ReadLine();                appShutdownService.RequestShutdown();            });            shutdownHandle.WaitOne();        }    }}

K Commands(OwinHost.exe)的作用就是啟動并加載 OWIN 組件,使你的應用程序處于運行狀態,看上面 Program.cs 代碼,就會發現 Microsoft.AspNet.Hosting 其實就是一個控制臺項目,當然除此之外還會包含 Builder、Server、Startup 等一些操作,這些構成了基本的 OWIN Host,它是一個進程,負責啟動并加載 OWIN 組件(在之前的博文中有說明),而 K Commands(OwinHost.exe)只不過是一個命令,用來去開啟它,就像一個車鑰匙,用來發動汽車一樣。結合 IIS 的一些東西,K Commands(OwinHost.exe)就像我們點擊“啟動”、“停止” 的后臺處理命令,當然還有一些 URL 綁定等,這些都通過命令去加載,過程大概是這樣:K Commands -> project.json -> Microsoft.AspNet.Hosting -> Started。

在之前曾說過,如果采用 IIS 的部署,那 ASP.NET 5 的 project.json 配置,就是下面這么簡單:

{    "webroot": "wwwroot",    "dependencies": {        "Microsoft.AspNet.Server.IIS": "1.0.0-beta1"    }}

你會發現,沒有了 Microsoft.AspNet.Hosting、Microsoft.AspNet.Server.WebListener,也沒有了 Commands,為什么呢?因為 IIS 既是 Host,又是 Server,IIS 與 ASP.NET 5 的 OWIN 管道處理,是通過 Microsoft.AspNet.Server.IIS(AspNet.Loader.dll)打通的,所以 OWIN 的處理組件都是通過 IIS,這時候的 ASP.NET 5 其實就不是純粹的 OWIN。

回答上面的問題,K Commands(OwinHost.exe)不是 OWIN 中的 Host 角色,Microsoft.AspNet.Hosting 才是,應該準確的說,K Commands(OwinHost.exe)和 OWIN 中的 Host 不存在概念問題,它只是一個命令,用來開啟 Microsoft.AspNet.Hosting,Microsoft.AspNet.Hosting 是 OWIN 中 Host 概念的具體體現。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
最近2019年好看中文字幕视频| 久久久久久噜噜噜久久久精品| 视频在线观看一区二区| 精品国产户外野外| 亚洲老板91色精品久久| 成人精品在线视频| 成人激情av在线| 538国产精品一区二区免费视频| 夜夜躁日日躁狠狠久久88av| 最近2019中文字幕mv免费看| 有码中文亚洲精品| 91亚洲国产成人久久精品网站| 成人在线国产精品| 浅井舞香一区二区| 欧美猛交免费看| 久久久久久亚洲精品中文字幕| 中文字幕日韩在线观看| 亚洲偷熟乱区亚洲香蕉av| 91精品国产乱码久久久久久蜜臀| 色先锋久久影院av| 国产午夜精品美女视频明星a级| 国产精品黄色影片导航在线观看| 国产精品高清免费在线观看| 日韩成人中文字幕| 色噜噜狠狠色综合网图区| 亚洲成av人片在线观看香蕉| 午夜精品理论片| 欧美在线欧美在线| 久久精品亚洲94久久精品| 亚洲free性xxxx护士hd| 欧美在线视频导航| 91在线精品播放| 一道本无吗dⅴd在线播放一区| 成人网址在线观看| 亚洲欧美日韩图片| 色悠久久久久综合先锋影音下载| 2019日本中文字幕| 亚洲一区二区在线| 97在线视频免费| 国产日韩欧美日韩大片| 日韩美女写真福利在线观看| 日韩av男人的天堂| 亚洲国产美女精品久久久久∴| 最近中文字幕日韩精品| 欧美日本在线视频中文字字幕| 国产精品久久久久久久久借妻| 日韩电影第一页| 国产成人涩涩涩视频在线观看| 亚洲一级片在线看| 日韩精品久久久久| 欧美激情一区二区三级高清视频| 欧美日韩亚洲91| 国产日韩中文在线| 欧美成人在线网站| 日韩美女视频在线观看| 成人久久一区二区三区| 国产一区二区黄| 欧美亚洲视频一区二区| 国产精品久久久久久久久免费看| 91在线观看免费高清| 国产一区二中文字幕在线看| 国产成人精品在线播放| 久久国产精品首页| 欧美日韩国产精品一区二区不卡中文| www.欧美精品一二三区| 日韩av在线免费播放| 精品国产自在精品国产浪潮| 中文字幕亚洲天堂| 中文字幕日韩av综合精品| 国产精品aaa| 亚洲欧美中文日韩在线v日本| 欧美成人激情视频免费观看| 亚洲精品国产精品乱码不99按摩| 97视频色精品| 国产一区二区在线免费视频| 日韩av色综合| 福利视频一区二区| 亚洲男人天堂2024| 国产一区二区日韩精品欧美精品| 亚洲精品mp4| 夜夜嗨av色一区二区不卡| 国产精品第二页| 日韩电影免费在线观看| 日韩免费黄色av| 国产成人久久久| 国产精品日韩在线| 久久久国产视频| 久久青草精品视频免费观看| 精品呦交小u女在线| 国产精品久久电影观看| 日韩成人激情在线| 中文字幕日韩专区| 欧美猛男性生活免费| 亚洲男人的天堂在线播放| 亚洲免费中文字幕| 欧美日韩性生活视频| 欧美精品久久久久久久久| 欧美视频免费在线| 欧美午夜宅男影院在线观看| 国产精品劲爆视频| 久久久在线免费观看| 久久久亚洲国产天美传媒修理工| 亚洲女成人图区| 亚洲免费小视频| 精品国产鲁一鲁一区二区张丽| 久久天天躁狠狠躁夜夜爽蜜月| 久久久久久久亚洲精品| 亚洲精品日产aⅴ| 韩剧1988在线观看免费完整版| 久久综合电影一区| 国产精品黄视频| 亚洲网站在线播放| 在线观看欧美日韩国产| 成人在线国产精品| 中文字幕亚洲色图| 国产+人+亚洲| 中文字幕日本精品| 米奇精品一区二区三区在线观看| 成人在线激情视频| 国产视频精品在线| 97热精品视频官网| 亚洲第一网中文字幕| 亚洲国产成人精品一区二区| 九九九热精品免费视频观看网站| 亚洲欧洲美洲在线综合| 国产91色在线| 在线视频日本亚洲性| 国产日韩在线看片| 日韩精品中文字幕久久臀| 国产精品视频网| 亚洲已满18点击进入在线看片| 视频在线观看一区二区| 国产精品免费视频xxxx| 激情亚洲一区二区三区四区| 91免费视频国产| 久久成人综合视频| 8090成年在线看片午夜| 日韩精品一区二区视频| 欧美精品做受xxx性少妇| 国产小视频国产精品| 国产亚洲免费的视频看| 亚洲综合一区二区不卡| 国产97在线|亚洲| 成年无码av片在线| 狠狠色狠狠色综合日日五| 色婷婷成人综合| 69av在线播放| 亚洲精品久久在线| 欧美孕妇孕交黑巨大网站| 欧美激情亚洲一区| 国产精品久久视频| 中文字幕亚洲无线码在线一区| 狠狠色狠狠色综合日日五| 精品呦交小u女在线| 亚洲精品成人av| 日本一区二区三区四区视频| 日韩久久午夜影院| 91久久在线观看| 国产精品亚洲第一区| 亚洲成成品网站| 欧美性xxxxx极品| 欧美日韩国产中文精品字幕自在自线| 国产精品久久久999| 最新国产精品亚洲|