0x01 前言
雖說現在有很多軟件也可以訂閱一些自己喜歡的新聞,要安裝到手機,還是挺麻煩的。所以就突發奇想,把一些新聞資源
整合一下,省時省力,就根據RSS訂閱,用h5結合ASP.NET Core做個小站點,方便一下自己,順便拿dotNET Core練練手。
開發環境:win10+vs2015+sqlite+redis(windows)
部署環境:centos7+.net core sdk+jexus+redis(linux)
0x02 開發
由於數據量不會大,所以就選用了sqlite,用起來還是挺方便的。
RSS的內容都是來自各大新聞網站,不能每次訪問都去請求一次,所以要緩存起來。
數據庫操作選擇Dapper、UI框架選擇了jquery-weui、還用到了一個js模板引擎art-template。
單元測試用的xUnit.net。
為了創建項目時,不添加太多東西,所以我是用Xamarin Studio建的項目,然后在VS2015上開發,
需要什么東西,自己在添加上去,按需加載。下面是整體結構圖:
所以就簡單用XDocument去處理這些內容:
1 public async Task<IList<Models.Item>> GetItems(string url, int count) 2 { 3 string xmlStr = await GetXMLStringByUrl(url); 4 XDocument doc = XDocument.Parse(xmlStr); 5 //the channel image 6 string imgUrl = doc.Element("rss").Element("channel").Element("image").Element("url").Value; 7 //the rss item 8 var results = doc.Element("rss").Element("channel").Elements("item").Select(x => new Models.Item 9 { 10 title = x.Element("title").Value, 11 link = x.Element("link").Value, 12 description = x.Element("description").Value, 13 pubDate = x.Element("pubDate").Value, 14 guid = x.Element("guid").Value, 15 ImgUrl = imgUrl 16 }); 17 18 return results.Take(count).ToList(); 19 }
在處理依賴注入時,用的是微軟自家的,並沒有用Autofac,具體如下。
1 public void ConfigureServices(IServiceCollection services) 2 { 3 services.AddMvc(); 4 services.AddScoped<IRSSItemRepository, RSSItemRepository>(); 5 services.AddScoped<IUserRepository, UserRepository>(); 6 services.AddScoped<IRSSSourceRepository, RSSSourceRepository>(); 7 //the cache 8 services.AddScoped<ICache, RedisCache>(); 9 }
開發的時候,由於要用到redis,我本人是在電腦上裝了一個windows版本的,方便調試。
操作用的是StackExchange.Redis,自己曾簡單封裝了一些基本用法,不過這個還不是正式版。
其他部分應該都是比較簡單,所以就不說明了。
下面來看看在CentOS7下部署。
0x03 部署
上一篇來份dotNETCore嘗嘗,用到的部署方式是純粹的.NET Core SDK的方式。
今天換一種方式來試試用Jexus+.NET Core SDK來部署(當然,也有不安裝.NET Core的部署方式)。
先把剛才的項目發布一下:
這個程序集是不是太多了啊,希望微軟能在下一版本改進一下這個。
在jexus下面的siteconf文件夾添加一個配置easyrss
多加了一行AppHost,就可以讓jexus支持asp.net core了,更多關於這個的介紹可以參考http://linuxdot.net/bbsfile-4459
加上這一句之后,啟動這個網站就可以了。
AppHost={CmdLine=dotnet /var/www/easyrss/Catcher.EasyRSS.WebSite.dll;AppRoot=/var/www/easyrss;port=5000}
啟動easyrss這個網站:./jws start easyrss
還有重要的一步,啟動redis,不然死活都跑不起來。
啟動redis: ./redis-server
打開瀏覽器就能看到效果了
操作相當的簡單吧。趕緊動手試試吧。
再放幾張效果圖(畢竟也花了大半天時間)
0x04 總結
1、部署成功后遇到過一個問題,樣式和腳本無法正常加載。請求外網的資源比較耗時(網絡渣),只好將生產環境的樣式
換成本地加載了,然后就正常了。
2、ASP.NET Core和ASP.NET MVC在開發的時候,沒有太大的區別,應該是很容易過渡的,應該慢慢的也會有更多的用dotNET Core來開發了。