01、我的.net core学习历程- 环境与知识准备

时间:2020-11-28 14:55:36

 

 我是一名c#老鸟,虽然编程多年,但只会使用c#通过Visual Studio工具开发Windows环境下的桌面应用和网站。

这是我自学.net core的经历,如果你也和我一样,也是刚刚接触.net core,并对此有新区,或许能对你有所帮助。

众所周知,.net也是跨平台的,但是,都是Windows平台。随着.net core的推出,微软终于出了一款真正意义上的跨平台系统,我们也终于有机会将编码迁移到linux系统、甚至更多的平台上。

由于以前未接触过linux系统,也不知道如何使用、运行及维护,更不知道如何部署,所以对于我来说是跨平台学习(Windows与Linux);

学习的目标
1、开发控制台程序的Hello world,能在windows环境下运行,并可以迁移到linux平台上运行
2、开发网站(Hello world),能在windows环境下运行,并可以迁移到linux平台上运行

由于是刚刚接触,日后再考虑性能、反向代理等问题。

为了能够达成目标,我需要确定环境及解题思路。
1、Linux系统我们选用 Ubuntu Server 14。为嘛?听说简单,So…………right……
2、我只有一台电脑,且不会装双系统。为解决此问题,采用了Windows10自带的虚拟机 Hyper-v来安装Ubuntu。
3、我首先要确保我的程序能在Windows平台上跑,然后再迁移到Ubuntu上。
4、先迁移简单的控制台程序,再迁移Web网站

在学习的过程中,借鉴了很多知识,感谢分享知识的大神们,我会在此处说明文章的来源及出处。

环境准备
Windows 10 专业版 (下载地址:

  http://go.microsoft.com/fwlink/?LinkId=691209
  http://download.microsoft.com/download/1/F/E/1FE453BE-89E0-4B6D-8FF8-35B8FA35EC3F/MediaCreationTool.exe


路人甲:“为嘛是Win10专业版?Win7行吗?Win8行吗?家庭版行吗?”
千年酱油:@“ if (能跑Hyper-v && 能装 Ubuntu Server 14 )
            {
                Console.Write("好的,我们继续;");
            }
            Else
            {
                Console.Write("请更换您的操作系统!");
                Return;
            }”

                                

安装Hyper-V
    路人甲:“Hyper-v是什么东东?”
    千年酱油:“Page.Redirect(" https://baike.baidu.com/item/Hyper-V/10508230?fr=aladdin ");”
    
    虚拟化不单单是一个软件的问题,还需要硬件支持,首先需要确定你的电脑是否支持Hyper-V。
        请访问( https://www.ithome.com/html/win10/257307.htm
    确定支持后,我们开始安装Hyper-V。
    
    网上有很多文章,我在这不做介绍了。只提供相关文章地址。
    1、打开硬件支持:BIOS设置

    百度经验,一般情况下有效 http://jingyan.baidu.com/article/8ebacdf0df465b49f65cd5d5.html

    如果修改后不生效,请查看官网 https://msdn.microsoft.com/library/windows/apps/jj863509(v=vs.105).aspx
                        
    2、安装Hyper-V

    百度经验 http://jingyan.baidu.com/article/ac6a9a5e1f164a2b653eac33.html
    如果修改后不生效,请查看官网

        https://docs.microsoft.com/zh-cn/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v

        https://docs.microsoft.com/zh-cn/virtualization/hyper-v-on-windows/index
                                    
Ubuntu 14 下载地址: 建议安装64位系统
                http://mirrors.neusoft.edu.cn/ubuntu-releases/trusty/ubuntu-14.04.5-server-amd64.iso
                http://mirrors.neusoft.edu.cn/ubuntu-releases/trusty/
                
路人甲:“为嘛是64位的?32位的不行吗?”
千年酱油:“我学习的文章用的是X64,我实操的系统是X64,So……………Right……………”;
                
PuTTY - Linux的远程终端  为什么要介绍下这个呢?因为你无法在本地的Windows平台的剪切板内容复制到Hyper-V里。
    下载地址:   http://rj.baidu.com/soft/detail/15699.html?ald

VS2017及相关补丁:VS2017有免费的社区版本,收费的专业版和企业版,这里我们使用免费的社区版即可,他几乎涵盖了开发用的所有功能。
                不同版本的区别请查看: https://www.visualstudio.com/zh-hans/vs/compare/
                                     下载地址: https://aka.ms/vs/15/release/vs_community.exe
    
知识准备
基础英语 - (如果较差自备词典 - www.iciba.com 建议安装词霸客户端 http://download.iciba.com/pc/personal2016/PowerWord.800.12012.exe
Ubuntu - 如果不了解,请查阅 https://baike.baidu.com/item/ubuntu/155795?fr=aladdin
Putty教程 - http://jingyan.baidu.com/article/454316ab5dd974f7a7c03a18.html
Ubuntu命令 - 
        Linux命令大全 : https://linux.cn/topic-commands.html
        如果觉得太多,请查看常用命令 : http://www.cnblogs.com/laov/p/3541414.html
        如果还是觉得太多。。。。算了,列出几个常用的吧
        
        ls - 显示当前所在目录的文件或目录
        
        mkdir [directoryname] - 创建目录
        
        cd [directoryname] - 目录切换,这个基本和DOS差不多。  参考 http://man.linuxde.net/cd 
        
        rm [filename] - 删除文件
        
        rmdir [directoryname] - 删除空目录
        
        rm -r [directoryname] - 不管目录是否为空,将目录和里面的文件一起删除,慎用,当心死的快。
        
        shutdown -h now - 关机
        
        unzip [filename] 解压缩zip格式
        
        tar -zcvf [filename] 解压缩gzip格式
        
        Wget [url] 下载url指向的文件到当前目录
        
        vim [filename] - Ubuntun环境下的记事本
            Insert键:如果当前是命令行模式,则切换到插入模式;如果当前是命令行模式,则在插入和替换模式间切换;
            Esc : 切换到命令行模式
            大家只要记住,如果要改内容,按下Insert键。如果要保存或退出,按下Esc键就行了。
            命令行:
                :wq - 保存并退出
                :q! - 强制退出并忽略所有更改
                :w !sudo tee %    - 当文件处于只读模式时强制保存
                
        Ifconfig     查看你的IP地址

    01、我的.net core学习历程- 环境与知识准备
            
         

Kestrel - 请参考 https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?tabs=aspnetcore2x
        能看懂不?  看不懂?  没事,我TM也看不懂,你就当IIS Express吧。
        之前的调试方式都是F5启动IIS Express服务器,然后IIS Express提供调试或运行环境,现在改成 Kestrel了。

        
反向代理 - 请参考 https://baike.baidu.com/item/%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86/7793488?fr=aladdin
        通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。由于外部网络上的主机并不会配置并使用这个代理服务器,普通代理服务器也被设计为在Internet上搜寻多个不确定的服务器,而不是针对Internet上多个客户机的请求访问某一个固定的服务器,因此普通的Web代理服务器不支持外部对内部网络的访问请求。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。

反向代理服务器 Nginx - 请参考 https://baike.baidu.com/item/nginx/3817705?fr=aladdin
        Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,*使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

        

环境和知识的准备就这些,如果你已经准备好,请继续看下一篇 《我的.net Core的学习 - 安装虚拟机及Ubuntu Server系统》