zoukankan      html  css  js  c++  java
  • OWIN 中 K Commands 与 OwinHost.exe 相等吗?

    • 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.

    K Commands 是 APS.NET 5 引出的,根据说明知道它是加载与启动 OWIN 组件的一个命令,那 OwinHost.exe 是什么?它其实是之前 OWIN 的实现 Katana 项目中的一个东西,这个东西是什么?看一下源码结构:

    摘自 Program.cs 中的一段源代码:

    using System;
    using System.Collections.Generic;
    using System.Diagnostics.CodeAnalysis;
    using System.Globalization;
    using System.IO;
    using System.Linq;
    using System.Reflection;
    using Microsoft.Owin.Hosting;
    using Microsoft.Owin.Hosting.Services;
    using Microsoft.Owin.Hosting.Starter;
    using Microsoft.Owin.Hosting.Utilities;
    using OwinHost.Options;
    
    namespace OwinHost
    {
        public static class Program
        {
            public static void RunServer(StartOptions options)
            {
                if (options == null)
                {
                    return;
                }
    
                string boot;
                if (!options.Settings.TryGetValue("boot", out boot)
                    || string.IsNullOrWhiteSpace(boot))
                {
                    options.Settings["boot"] = "Domain";
                }
    
                ResolveAssembliesFromDirectory(
                    Path.Combine(Directory.GetCurrentDirectory(), "bin"));
                WriteLine("Starting with " + GetDisplayUrl(options));
    
                IServiceProvider services = ServicesFactory.Create();
                var starter = services.GetService<IHostingStarter>();
                IDisposable server = starter.Start(options);
    
                WriteLine("Started successfully");
                WriteLine("Press Enter to exit");
                Console.ReadLine();
    
                WriteLine("Terminating.");
    
                server.Dispose();
            }
        }
    }
    

    可以看到,它其实和 Microsoft.AspNet.Hosting/Program.cs 中的配置代码很相似,但不相同,Microsoft.AspNet.Hosting 是 OWIN Host 的所有概念实现,而 OwinHost 只是一个控制台启动程序,用来加载所有的 OWIN 组件,但它不包含任何的实现,比如 Host 中的 Builder、Server、Startup 等一些操作,再看下面一张图就明白了:

    对,没错,OwinHost 依赖于 Microsoft.Owin.Hosting,OwinHost 中所有的 Host 操作都在 Microsoft.Owin.Hosting 中进行完成了,说白了,OwinHost 没多少东西,就是一个开启命令,和 Microsoft.AspNet.Hosting 完全不是一个概念问题,那 OwinHost 和 K Commands 相等吗?其实也不相等,只是很类似,但这个类似点只是体现在加载 OWIN 组件的时候,OwinHost 的工作就是干这个的,并且只能干这个,而 K Commands 却不仅仅如此,它还包含了其他的一些命令管理,比如“gen”、“ef”等。

    其他相关资料:

  • 相关阅读:
    SGU 495 Kids and Prizes 概率DP 或 数学推理
    poj 2799 IP Networks 模拟 位运算
    uva 202 Repeating Decimals 模拟
    poj 3158 Kickdown 字符串匹配?
    uva 1595 Symmetry 暴力
    uva 201 Squares 暴力
    uva 1594 Ducci Sequence 哈希
    uva 1368 DNA Consensus String 字符串
    数字、字符串、列表的常用操作
    if条件判断 流程控制
  • 原文地址:https://www.cnblogs.com/xishuai/p/OWIN-K-Commands-OwinHost.html
Copyright © 2011-2022 走看看