初始化项目

  本来想详细讲一讲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开发:项目实践相关推荐

  1. 嵌入式开发使用python开发 +项目实践

    目录 背景 项目实践一 例如:将以下.txt脚本使用python脚本转化 转化Excel后 python 脚本代码(未完成) 背景 最近项目项目中需要将芯片打印flash擦读写时间进行一个统计,思考后 ...

  2. Egg开发项目实践纪实

    博客版文档在线阅读地址:egg开发实践文档-by山岚 Egg开发实践文档 目前项目中 Node.js 的需求是越来越多,简单的内部系统.Socket 通信服务.官网等,开发难度也越来越大,而 Egg. ...

  3. 【渝粤教育】广东开放大学 Android移动开发项目实践 形成性考核 (58)

    题库查询系统退出 选择题 题目:下列选项中,属于Android Studio工具中创建项目时选择的按钮的是(). 答案: A.Start a new Android Studio project 题目 ...

  4. 基于 abp vNext 和 .NET Core 开发博客项目 - Blazor 实战系列(四)

    基于 abp vNext 和 .NET Core 开发博客项目 - Blazor 实战系列(四) 转载于:https://github.com/Meowv/Blog 上一篇完成了博客的分页查询文章列表 ...

  5. 基于 abp vNext 和 .NET Core 开发博客项目 - 统一规范API,包装返回模型

    基于 abp vNext 和 .NET Core 开发博客项目 - 统一规范API,包装返回模型 转载于:https://github.com/Meowv/Blog 在实际开发过程中,每个公司可能不尽 ...

  6. .NET Core开发实战(定义API的最佳实践)Source Generators版

    前言 极客时间上的<.NET Core开发实战>是一门非常好的课程,作者肖伟宇在第31课(https://time.geekbang.org/course/detail/100044601 ...

  7. .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现...

    本篇我将带着大家一起来对Dapper进行下封装并实现基本的增删改查.分页操作的同步异步方法的实现(已实现MSSQL,MySql,PgSQL).同时我们再实现一下仓储层的代码生成器,这样的话,我们只需要 ...

  8. 项目实践精解:ASP.NET应用开发

    前 言 作者从事软件设计开发工作十多年,最近才萌发了写书的想法.因为作者希望推广一种最有效的学习捷径,这就是Project-Driven Training,也就是用项目实践来带动理论学习的方法.基于此 ...

  9. ASP.NET 3.5 新特性开发向导实践(附项目源码下载)

    ASP.NET 3.5 新特性开发向导实践(附项目源码下载) 本篇文章将演示ASP.NET 3.5 部分新功能.新特性,包括LINQ.ListView控件.LinqDataSource.DataPag ...

  10. Python爬虫开发与项目实践

    百度网盘 链接:https://pan.baidu.com/s/1D3T0SA4AOHaGisODxY11kQ 密码:u3yo 本教程详细介绍Python的爬虫开发与项目实践,从安装到文件操作到IO编 ...

最新文章

  1. SAP的client概念
  2. n个人选k个c语言_leetcode之第k个缺失的正整数
  3. apache arm 交叉编译_arm apache php交叉编译
  4. progressIndicator in SalesPipeline
  5. 容器化分布式日志组件ExceptionLess的Angular前端UI
  6. 机器学习超级复习笔记
  7. 我国三大常用坐标系区别(北京54、西安80和WGS-84)
  8. Java实现Word画折线图(非图片)
  9. js的Base64编码
  10. linux的ib网卡驱动安装,安装IB驱动
  11. 好用的医药管理软件都有哪些特点
  12. RSA加密算法流程图
  13. 【SAR综述】复杂场景单通道SAR目标检测与鉴别方法
  14. 剑指21.调整数组顺序使奇数位于偶数前面 python leetcode
  15. OpenStack创建卷报错
  16. Too many re-renders. React limits the number of renderers to prevent an infinite loop...
  17. 高等代数 多项式环(第7章)3 一元多项式的根与不可约多项式
  18. OpenCV 颜色检测| color detection
  19. DW大学生网页作业制作设计 ——旅游门户网站(21页)HTML+CSS+JavaScript
  20. office 高效办公智慧树_智慧树知到《OFFICE高效办公》见面课答案

热门文章

  1. Elixir Ecto: 范围数据类型
  2. Ubuntu系统备份和恢复
  3. 【转】URL编码(encodeURIComponent和decodeURIComponent)
  4. zookeeper集群部署监控与选举同步流程等工作原理
  5. 如何查找业务用例和业务执行者
  6. 战神II导演 首席程序员访谈(转自www.npc6.com )
  7. 微软开发者的年度回顾
  8. .NET内存性能分析指南
  9. 如何在 Entity Framework 中计算 时间差 ?
  10. .Net微服务实战之可观测性