.NetCore控制台应用程序

1、使用Visual Studio创建.NET Core控制台应用程序

这里的话我再创建一个普通的控制台应用程序,与.NetCore控制台应用程序做对比。

两者的对比:

比较两个控制台应用程序的program.cs文件,会发现.netcore控制台应用程序没有引用更多的命名空间。

2、.netcore控制台应用程序——实现猜拳的功能:

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] fistType = new string[] { "石头","布","剪刀"};
            Console.WriteLine("***************************趣味猜拳游戏***************************");
            Console.WriteLine("请输入您的出拳数字(1-石头,2-布,3-剪刀,4-退出)");
            string inputFist = Console.ReadLine();
            while (inputFist!="4")
            {
                //电脑随机生成出拳
                Random random = new Random();
                int computerFist = (int)random.Next(1, 3);//随机数
                try
                {
                    int personFist = Convert.ToInt32(inputFist);
                    //判断数字是否是1-4的数字
                    if (personFist>0&&personFist<5)
                    {
                        //猜拳判断
                        if (personFist<computerFist)
                        {
                            if (personFist==1&&computerFist==3)
                            {
                                Console.WriteLine("你出了:{0},电脑出了:{1},结果你赢了!",fistType[personFist-1],fistType[computerFist-1]);
                            }
                            else
                            {
                                Console.WriteLine("你出了:{0},电脑出了:{1},结果电脑赢了!", fistType[personFist - 1], fistType[computerFist - 1]);
                            }
                        }
                        else if (personFist==computerFist)
                        {
                            Console.WriteLine("你出了:{0},电脑出了:{1},结果你和电脑平局!", fistType[personFist - 1], fistType[computerFist - 1]);
                        }
                        else
                        {
                            if (personFist==3&&computerFist==1)
                            {
                                Console.WriteLine("你出了:{0},电脑出了:{1},结果电脑赢了!", fistType[personFist - 1], fistType[computerFist - 1]);
                            }
                            else
                            {
                                Console.WriteLine("你出了:{0},电脑出了:{1},结果你赢了!", fistType[personFist - 1], fistType[computerFist - 1]);
                            }
                        }
                    }
                    else
                    {
                        Console.WriteLine("你输入的数字有错误,请重新输入……");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                Console.WriteLine("------------------------------------------------------------------------------------");
                Console.WriteLine("请输入您的出拳数字(1-石头,2-布,3-剪刀,4-退出)");
                inputFist = Console.ReadLine();
            }
        }
    }
}

 效果图:

 3、.netcore控制台应用程序——实现万年历:

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("*****************************欢迎使用万年历*****************************");
            Console.WriteLine("\n请选择年份:");
            int year = int.Parse(Console.ReadLine());
            Console.WriteLine("\n请选择月份:");
            int month = int.Parse(Console.ReadLine());
            int days = 0;//存储当月的天数
            Boolean isRn;
            //判断是否为闰年
            if (year%4==0&&!(year%100==0)||year%400==0)
            {
                isRn = true;//闰年
            }
            else
            {
                isRn = false;//平年
            }
            //计算输入的年份之前的天数
            int totalDays = 0;
            for (int i = 1900; i < year; i++)
            {
                //判断闰年或平年,并进行天数累加
                if (i%4==0&&!(i%100==0)||i%400==0)
                {
                    totalDays = totalDays + 366;//闰年为366天
                }
                else
                {
                    totalDays = totalDays + 365;//平年为365天
                }
            }
            //计算输入月份之前的天数
            int beforeDays = 0;
            for (int i = 1; i <=month; i++)
            {
                switch (i)
                {
                    case 1:
                    case 3:
                    case 5:
                    case 7:
                    case 8:
                    case 10:
                    case 12:
                        days = 31;
                        break;
                    case 2:
                        if (isRn)
                        {
                            days = 29;
                        }
                        else
                        {
                            days = 28;
                        }
                        break;
                    default:
                        days = 30;
                        break;
                }
                if (i<month)
                {
                    beforeDays = beforeDays + days;
                }
            }
            totalDays = totalDays + beforeDays;//距离1900年1月1日的天数
            //计算星期几
            //存储当月第一天是星期几:星期日为0,星期一到星期六为1-6
            int firstDayOfMonth;
            int temp = 1 + totalDays % 7;//从1900年1月1日起推算
            if (temp==7)
            {
                //求当月第一天
                firstDayOfMonth = 0;//周日
            }
            else
            {
                firstDayOfMonth = temp;
            }
            //输出日历
            Console.WriteLine("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
            for (int nullNo = 0; nullNo < firstDayOfMonth; nullNo++)
            {
                Console.Write("\t");
                //输出空格
            }
            for (int i = 1; i <= days; i++)
            {
                Console.Write(i+"\t");
                if ((totalDays+i-1)%7==5)
                {
                    //如果当天为周六,输出换行
                    Console.WriteLine();
                }
            }
            Console.ReadLine();
        }
    }
}

4、ASP.NET Core 概述
ASP.NET Core 是一个跨平台的高性能开源框架,用于生成基于云且连接 Internet 网络的新式应用程序。

使用ASP.NET Core 可以实现以下需求:
(1)创建 Web 应用程序和服务、loT 应用和移动后端。
(2)在 Windows、macOS 和 Linux 上使用喜爱的开发工具。
(3)部署到云或本地。
  (4)在.NET Core 或.NET Framework 上运行。


5、APS.NET Core 的优点
ASP.NET Core 是重新设计的 ASP.NET 4.X,微软重构了整个ASP.NET体系结构,形成了更精简的模块化框架,
它具有以下优点:
(1)Web UI 应用开发和 Web API 应用开发使用统一的编程模型。
(2)支持针对可测试性进行构建。
 (3)Razor Pages 可以使页面的编码方式更简单高效。
(4)支持 Blazor 框架,Blazor 允许在浏览器中使用 C#和 JavaScript。共享全部使用.NET编写的服务器端和客户端应用逻辑。
(5)能够在 Windows、macOS 和 Linux 上进行开发和运行。
(6)支持开放源代码和以社区为中心。
(7)集成新式客户端框架和开发工作流。
(8)支持使用 gRPC 协议远程过程调用。
(9)基于环境的云就绪配置系统。
(10)内置依赖项注入。
(11)支持轻型的高性能模块化 HTTP 请求管道。
(12)能够托管到 Kestrel、IIS、HTTP.sys、Nginx、Apache 和 Docker 等服务器或容器中。
(13)支持并行版本控制。
(14)支持新式 Web 开发工具,如 Visual Studio Code。 

6、创建.net core mvc项目

目录结构如下:

 运行效果图:

ASP.NET Core 应用程序本质上是一个独立的控制台应用程序,它不是必须由 IIS 内部托管运行。

ASP.NET Core应用程序拥有一个内部的自托管(Self-Hosted)的 Web 服务器,由该服务器负责处理外部请求,这个 Web服务器称为 Kestrel Web 服务器,并且.NET Core 支持的所有平台和版本均支持 Kestrel。
ASP.NET Core 应用程序的程序入口在 Program.cs 的文件中,代码如下所示:



从上面代码可知,ASP.NET Core 应用程序的启动主要包含以下三个步骤:
(1)调用 CreateHostBuilder()方法创建 IWebHostBuilder 实例。
(2)  调用 Build()方法,IWebHostBuilder 实例负责创建 |WebHost 实例对象。
(3)调用 Run()方法,启动 1WebHost 实例。
在CreateHostBuilder()方法中,先通过 CreateDefaultBuilder()方法创建 IWebHostBuilder 实例,再
通过 ConfigureWebHostDefaults()方法来使用 Startup 类中所定义的环境、中间件和服务配置。

7、Startup类
ASP.NET Core 为开发者的应用程序提供了处理每个请求的完整控制,而 Startup 类是应用程序的入口(entrypoint),这个类可以设置配置(configuration)并且将应用程序中将要使用的服务连接起来,开发者可以在Startup 类中配置请求管道,该管道将用于处理应用程序的所有请求。

ASP.NET Core 会在主程序集中搜索名为“Startup”的类,开发者也可以指定一个其他程序集用于检索,只需要配置 Hosting:Application配置键。ASP.NET Core 并不关心 Startup 类是否定义为 public,如果它符合命名规范,ASP.NET 将继续加载它,如果有多个 Startup 类,也不会触发异常,ASP.NET将基于命名空间选择其中一个。

注意:
ASP-NET 将基于命名空间选择以匹配项目的框命名空间优先,否则使用第一个按字母排列的命名空间中的类。



 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值