随着Linux操作系统的普及和低成本特性,越来越多的开发者选择在Linux上构建和部署他们的应用程序。本文将介绍如何在Linux环境下使用.NET Core构建一个网站和一个网络爬虫,以及如何在Raspberry Pi上部署.NET Core应用程序。
Linux是一个开源的操作系统,它不仅免费,而且可以在各种硬件上运行,包括服务器和嵌入式设备如Raspberry Pi。.NET Core是一个跨平台的开源框架,可以在Linux、Windows和macOS上运行。结合Linux和.NET Core,可以构建出既经济又高效的应用程序。
选择在Ubuntu服务器上构建网站,因为Ubuntu是一个流行的Linux发行版,而且Linode提供了每月5美元的低价服务器。以下是构建网站的步骤:
以下是获取HTML页面并解析数据的C#代码示例:
HttpClient client = new HttpClient();
using (var response = await client.GetAsync(url)) {
using (var content = response.Content) {
var result = await content.ReadAsStringAsync();
var document = new HtmlDocument();
document.LoadHtml(result);
var nodes = document.DocumentNode.SelectNodes("//div[@class='item-inner clearfix']");
var storeData = new List<store>();
foreach (var node in nodes) {
Store _store = ParseHtml(node);
storeData.Add(_store);
}
HttpResponseMessage resp = await client.PostAsJsonAsync<List<store>>(
"http://www.fairnet.com/deal/api/stores", storeData);
}
}
解析HTML的方法:
private static Store ParseHtml(HtmlNode node) {
var _store = new Store();
_store.Image = node.Descendants("img").ElementAt(imgIndex).OuterHtml;
_store.Link = node.Descendants("a").Select(s => s.GetAttributeValue("href", "not found")).FirstOrDefault();
_store.Title = node.Descendants("a").ElementAt(titIndex).InnerText;
_store.Price = node.Descendants("span").ElementAt(pricIndex).InnerText;
_store.RetailPrice = node.Descendants("span").ElementAt(retpricIndex).InnerText;
return _store;
}
Raspberry Pi是一个低成本的单板计算机,非常适合运行Linux和.NET Core应用程序。以下是在Raspberry Pi上部署.NET Core应用程序的步骤:
以下是在Raspberry Pi上安装.NET Core 2的命令:
# 更新Raspbian安装
sudo apt-get -y update
# 安装.NET Core所需的软件包
sudo apt-get -y install libunwind8 gettext
# 下载.NET Core 2的夜间构建二进制文件
wget https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-linux-arm.tar.gz
# 创建一个文件夹来存放.NET Core 2的安装
sudo mkdir /opt/dotnet
# 将dotnet压缩包解压到安装文件夹
sudo tar -xvf dotnet-runtime-latest-linux-arm.tar.gz -C /opt/dotnet
# 设置一个符号链接到路径上的目录,以便可以调用dotnet
sudo ln -s /opt/dotnet/dotnet /usr/local/bin
运行dotnet --info命令,查看在Raspbian上安装的版本。