.NET Core开发:项目实践
初始化項目
本來想詳細講一講dotnet core的,但我對于dotnet core的研究還不到一星期,半吊子,腦子又笨,就不寫那些理論出來誤人子弟了,還是直接來一篇實踐給大家做個參考。廢話不多說,直接上項目,這里我設計了一個簡單的控制臺應用程序,抓取
http://f.apiplus.cn
的雙色球信息,并持久化到SQL Server,同時還引用了Json.NET和Dapper兩個外部組件。
使用dotnet new新建項目,并入下圖所示新建Common、Persistent、Service三個文件夾:
Common文件夾中用于存放公共組件類;
Persistent用于存放實體和實體操作類;
Service用于處理實現抓取業務并將數據通過Common將數據插入到數據庫總。
接著,我們需要引入Json.NET和Dapper兩個外部組件,傳統的.net項目可以通過nuget來管理,.net core項目也是如此,但是他并不會像.net項目那樣把package下載到項目的根目錄下,而是package下載到用戶根目錄下集中管理(例:C:\Users\Administrator\.nuget),不得不說,這一套和maven很像,這樣的好處是管理起來方便,實現了依賴包的復用,項目看起來也更為清爽,不過如果你需要引入自己開發的項目,就需要使用dotnet pack先對項目進行打包后再做本地引入,project.json的配置如下:
{
? ? "version": "1.0.0-*",
? ? "buildOptions": {
? ? ? ? "debugType": "portable",
? ? ? ? "emitEntryPoint": true,
? ? ? ? "copyToOutPut": "appconfig.json"
? ? },
? ? "dependencies": {
? ? ? ? "Newtonsoft.Json": "9.0.1",
? ? ? ? "Dapper": "1.50.2",
? ? ? ? "System.Data.SqlClient": "4.1.0",
? ? ? ? "Microsoft.Extensions.Configuration": "1.0.0-rc2-final",
? ? ? ? "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0-rc2-final",
? ? ? ? "Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final",
? ? ? ? "System.Text.Encoding.CodePages": "4.0.1"
? ? },
? ? "frameworks": {
? ? ? ? "netcoreapp1.0": {
? ? ? ? ? ? "dependencies": {
? ? ? ? ? ? ? ? "Microsoft.NETCore.App": {
? ? ? ? ? ? ? ? ? ? "version": "1.0.0"
? ? ? ? ? ? ? ? }
? ? ? ? ? ? },
? ? ? ? ? ? "imports": "dnxcore50"
? ? ? ? }
? ? },
? ? "runtimes": {
? ? ? ? "win7-x64": {},
? ? ? ? "osx.10.11-x64": {}
? ? },
? ? "publishOptions": {
? ? ? ? "include": [
? ? ? ? ? ? "appconfig.json"
? ? ? ? ]
? ? }
}
我們可以看到在project.json的dependencies節點中定義了項目依賴,以"Dapper": "1.50.2"為例,Dapper是我們需要引用的包的名稱,1.50.2是引入的版本號,不過請務必使用 https://www.nuget.org 上的名稱和版本號,并確認當前包包是否支持.net core。按照微軟的官方說法是他們打算在未來啟用這個project.json,不過有興趣的同學可以訪問:
https://docs.microsoft.com/en-us/dotnet/articles/core/tools/project-json
查看有關它的詳細介紹。
數據庫設計
創建Lotto數據庫,并執行腳本如下:
USE [Lotto]
? ? CREATE TABLE [dbo].[UnionLotto](
? ? [Id] [bigint] IDENTITY(1,1) NOT NULL,
? ? [SN] [bigint] NOT NULL,
? ? [PublishDate] [datetime] NOT NULL,
? ? [Red1] [int] NOT NULL,
? ? [Red2] [int] NOT NULL,
? ? [Red3] [int] NOT NULL,
? ? [Red4] [int] NOT NULL,
? ? [Red5] [int] NOT NULL,
? ? [Red6] [int] NOT NULL,
? ? [Blue1] [int] NOT NULL,
?CONSTRAINT [PK_UnionLotto] PRIMARY KEY CLUSTERED?
(
? ? [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
?編碼實現
在Common文件夾下新建QuickConfig和QuickBrowser類,QuickBrowser用于發起Http請求抓取數據,QuickConfig用于獲取系統配置:
?QuickBrowser
在QuickBrowser中,可以看到我并未使用WebRequest.GetResponse()去抓取使用,而是使用了BeginGetResponse的異步方法進行操作,因為.net core中并未發現GetResponse()方法,看來微軟在重新設計.net core時,該方法被摒棄了,所以在使用.net core時還是小心為好。
?QuickConfig
在QuickConfig中,我們可以看到配置文件的獲取方式也和.net有了很大的不同,可以使用mermory、json、xml等多種方式,具體可以參考博客園大神
http://www.cnblogs.com/artech/p/new-config-system-01.html
的文章,本例中會去加載自定義的appconfig.josn文件。
使用VS Code新建Class真的很麻煩,namespace和class的聲明均需要自己去拼寫,不知道有沒有人知道什么簡便的方法。
在Presistent下新建UnionLotto、UnionLottoFactory和UnionLottoDbWork類:
?UnionLotto
?UnionLottoFactory
?UnionLottoDbWork
在Servie下新建DataSpiderService和UnionLottoService類:
?DataSpiderService
?UnionLottoService
在根目錄下添加appconfig.json文件:
?appconfig.json
appconfig.json中定義了項目數據庫鏈接和api抓取地址,回顧一下project.json中的配置,我們可以發現publishOptions.include配置,因為發布時appconfig.json并不會被拷貝到發布包中,需要手動將其引入進來。
執行
最后在Program中調用:
?Program
使用dotnet publish后,在..\bin\Debug\netcoreapp1.0\win7-x64\publish下找到JokeBuy.exe執行后,數據成功插入到數據庫:
執行成功!
原文地址:http://www.cnblogs.com/krockey/p/5985136.html
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
總結
以上是生活随笔為你收集整理的.NET Core开发:项目实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RabbitMQ消息队列应用
- 下一篇: 在传统.NET Framework 上运