.Net Core简介
- 跨平台: 可以在 Windows、macOS 和 Linux 操作系统上运行。
- 跨体系结构保持一致: 在多个体系结构(包括 x64、x86 和 ARM)上以相同的行为运行代码。
- 命令行工具: 包括可用于本地开发和持续集成方案中的易于使用的命令行工具。
- 部署灵活: 可以包含在应用或已安装的并行(用户或系统范围安装)中。 可搭配 Docker 容器使用。
- 兼容性: .NET Core 通过 .NET Standard与 .NET Framework、Xamarin 和 Mono 兼容。
- 开放源代码: .NET Core 平台是开放源代码,使用 MIT 和 Apache 2 许可证。 .NET Core 是一个 .NET Foundation 项目。
- 由 Microsoft 支持: .NET Core 由 Microsoft 依据 .NET Core 支持提供支持。
环境说明
开发环境 :Win10 > Visual Studio 2019 > .Net Core 2.1
运行环境:Linux > CentOS 7
演示Demo:使用.Net Core 开发一个网络爬虫工具,将指定网址的所有图片下载到本地
在CentOS上部署.Net Core运行时环境
1、打开CentOS 通过root登入系统
2、右键打开终端
3、注册Microsoft签名密钥,然后添加Microsoft产品Feed。
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc sudo sh -c 'echo -e "[packages-microsoft-com-prod] name=packages-microsoft-com-prod baseurl=https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod enabled=1 gpgcheck=1 gpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'
4、更新可用于安装的产品列表,安装.NET Core所需的组件,然后安装.NET Core 运行时环境。
sudo yum update sudo yum install libunwind libicu sudo yum install dotnet-sdk-2.1
后续更新提示,确认(y)即可
5、安装完毕后我们可以通过“dotnet --version”命令来测试是否安装成功(结果如图安装成功)
创建.Net Core应用程序
1、选择.Net Core控制台程序
2、写一个demo用于获取指定贴吧中的所有图片
1 using System; 2 using System.IO; 3 using System.Net; 4 using System.Text.RegularExpressions; 5 using System.Threading; 6 7 namespace WebSpider 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 var l_strSaveDir = "imgs"; 14 var l_strHostName = "http://tieba.baidu.com/"; 15 16 using (var l_webClient = new WebClient()) 17 { 18 l_webClient.BaseAddress = l_strHostName; 19 20 if (!Directory.Exists(l_strSaveDir)) 21 Directory.CreateDirectory(l_strSaveDir); 22 23 Console.WriteLine("正在加载网络资源..."); 24 25 new Thread(() => 26 { 27 var l_strHtml = l_webClient.DownloadString(l_strHostName + "f?kw=java"); 28 var l_strMtchImgPattern = "<img src="(\S+)""; 29 var l_mtchImgs = Regex.Matches(l_strHtml, l_strMtchImgPattern, RegexOptions.IgnoreCase); 30 31 var l_iImgCount = l_mtchImgs.Count; 32 Console.WriteLine("资源加载完毕,正在下载"); 33 for (int i = 0; i < l_iImgCount; i++) 34 { 35 var l_strImgUrl = l_mtchImgs[i].Groups[1].Value; 36 l_webClient.DownloadFile(l_strImgUrl, Path.Combine(l_strSaveDir,Guid.NewGuid()+"."+Path.GetExtension(l_strImgUrl))); 37 Console.WriteLine(string.Format("正在下载({0}/{1})", (i + 1).ToString(), l_iImgCount.ToString())); 38 } 39 Console.WriteLine(string.Format("图片已全部下载完毕,保存地址{0}",l_strSaveDir)); 40 41 }).Start(); 42 } 43 } 44 } 45 }