ASP.NET Core 2中的Startup.cs和Program.cs有什么区别?

17

我查阅了微软网站上的文档,发现有两个位置可以设置配置。

我们可以在Startup.cs或者Program.cs中进行设置。但是,Program.cs中有与Startup.cs相同的方法可用。

public class Program
{
    public static void Main(string[] args)
    {
        BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .ConfigureServices(services =>
            {
                //same as ConfigureServices method in Startup.cs
                services.AddAutofac();
            })
            .Configure(app =>
            {
                //same as Configure method in Startup.cs
                app.UseMvc();
            })
            .Build();
}

"Startup.cs"的唯一存在目的是将部分配置移到 "Program.cs" 之外吗?我们能否完全删除这个文件,将整个配置保留在 "Program.cs" 中呢?

2个回答

15

我们能彻底删除这个类并将整个配置留在 Program.cs 中吗?

可以的。

文档说明:

便捷方法

要在不使用 Startup 类的情况下配置服务和请求处理管道,请在主机生成器上调用 ConfigureServicesConfigure 便捷方法。多次调用 ConfigureServices 会相互附加。如果有多个 Configure 方法调用,则使用最后一个 Configure 调用。

它更多关于生成器的配置,而不是实际的Program.cs。那只是用于保存应用程序的主入口的默认模板类。

参考ASP.NET Core 中的应用程序启动


当前链接页面的最新版本甚至不再提及Startup.cs。微软现在更倾向于在Program.cs中完成所有操作。 - Eike

4

Program.cs是应用程序的起点。

Startup.cs是大量配置发生的地方。

这种分离的想法基于SOLID原则的第一个原则-SRP(单一职责原则)。 SOLID原则 使软件设计更易理解、灵活和可维护。

单一职责原则(SRP) 表示类或方法只应该做一件事情(或只有一个工作)。如果您查看Startup.cs,它确切地做到了这一点,使得代码易于阅读和理解。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接