.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跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328019.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用jstack分析线程状态

转载自 如何使用jstack分析线程状态背景 记得前段时间,同事说他们测试环境的服务器cpu使用率一直处于100%,本地又没有什么接口调用,为什么会这样?cpu使用率居高不下,自然是有某些线程一直占用着cpu资源,那…

JAVA网络编程实战(笔记)

计算机网络简介 网络编程的目的: 无限电台。。。。传播交流信息,数据交换。通信 想要达到这个效果需要什么: 1.如何准确的定位网络上的一台主机 ip地址192.168.16.124: 端口,定位到这个计算机上的某个资源 2.找到…

让 Java 应用运行更快:性能调优工具及实践

转载自 让 Java 应用运行更快:性能调优工具及实践Java 应用性能优化是一个老生常谈的话题,笔者根据个人经验,将 Java 性能优化分为 4 个层级:应用层、数据库层、框架层、JVM 层。通过介绍 Java 性能诊断工具和思路,给…

github 公钥 私钥_github快速使用

##第一次使用github推荐方式Git第一步:下载git工具,这里是链接,选择适合自己的版本进行安装。第二步:安装完成后,鼠标右键找到Git bash,双击打开。第三步:设置SSH key众所周知ssh是加密传输。加…

ASP.NET Core 之 Identity 入门(一)

前言 在 ASP.NET Core 中,仍然沿用了 ASP.NET里面的 Identity 组件库,负责对用户的身份进行认证,总体来说的话,没有MVC 5 里面那么复杂,因为在MVC 5里面引入了OWIN的东西,所以很多初学者在学习来很费劲&…

蓝桥杯JAVA省赛2013-----B------2(马虎算式)

二、马虎的算式 【解析】&#xff1a;暴力穷举即可 枚举每个位上的数字、组合判断、暴力穷举 【答案】&#xff1a;142 方法一&#xff1a;暴力穷举 package com.kuang.Test; public class Test{public static void main(String[] args) {int ans 0;for(int a 1; a < …

简单解决“无法打开内核设备:\\Global\\vmx86”错误

简单解决“无法打开内核设备:\\Global\\vmx86”错误 本文链接&#xff1a;https://blog.csdn.net/tristan_tian/article/details/79434715 我是win10系统&#xff0c;在小娜搜索“服务”后右击选择使用管理员打开。然后在一大串服务中找到vm开头的服务项&#xff0c;全部都启…

按钮右对齐_Python Tkinter Button按钮

简介BUTTON小工具时使用的按钮添加到各种类型的Python应用&#xff0c;Python允许用户配置按钮的按我们的要求&#xff0c;各种选项可以被设置或重置的要求。BUTTON 小工具时使用的按钮添加到各种类型的Python应用。Python允许用户配置按钮的按我们的要求。各种选项可以被设置或…

Java 内存查看与分析

转载自 Java 内存查看与分析1&#xff1a;gc日志输出在jvm启动参数中加入 -XX:PrintGC -XX:PrintGCDetails -XX:PrintGCTimestamps -XX:PrintGCApplicationStopedTime&#xff0c;jvm将会按照这些参数顺序输出gc概要信息&#xff0c;详细信息&#xff0c;gc时间信息&#xff…

【长文干货】浅析分布式系统

测试开发者的共同关注&#xff01; 作者&#xff1a;wadehan&#xff0c;腾讯后台开发高级工程师 商业转载请联系腾讯WeTest获得授权&#xff0c;非商业转载请注明出处。 WeTest导读 我们常常会听说&#xff0c;某个互联网应用的服务器端系统多么牛逼&#xff0c;比如QQ、微信、…

hibernate配置详情2(Dept.hbm.xml)

<?xml version"1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package"org.hibernate_on…

Spring Boot 入门 IDEA 版本 2小时学会springBoot 代码上传至gitee 或者github 事务没做出来

SpringBoot简化了xml的配置可以快速开发&#xff0c;节省很多的时间&#xff0c;springboot的配置速度更快&#xff0c;SpringMvc已经不如springboot了&#xff0c; 市面上更多的是使用spingboot这个框架了。 springboot是springmvc的升级版&#xff0c;但是2者没有必然的联…

华为云微认证答题_158人次通过华为认证考试!今年,湖北这所高校频现大动作...

从2005全国职教工作会上"校企合作"的提出&#xff0c;到2013年"产教融合"的最早出现&#xff0c;再到党的十九大&#xff0c;"产教融合、校企合作"已经逐渐成为教育新趋势。相信有许多家长和大学生都很想了解这种新的教育模式。本期推送&#xf…

在传统.NET Framework 上运行ASP.NET Core项目

新的项目我们想用ASP.NET Core来开发&#xff0c;但是苦于我们历史的遗产很多&#xff0c;比如《使用 JavaScriptService 在.NET Core 里实现DES加密算法》&#xff0c;我们要估计等到.NET Core 1.2我们才会有大部分的API&#xff0c;通过NodeJs方式有点曲线救国的味道&#xf…

JVM 调优系列之图解垃圾回收

转载自 JVM 调优系列之图解垃圾回收摘要: jvm必知系列&#xff0c;总结一些常见jvm回收机制&#xff0c;方便查阅从这篇开始我们开始探讨一些jvm调优的问题。在jvm调优中一个离不开的重点是垃圾回收&#xff0c;当垃圾回收成为系统达到更高并发量的瓶颈时&#xff0c;我们就需…

JAVA注解和反射(笔记)

注解简介 Annotation是从JDK5.0开始引入的新技术). Annotation的作用 : 不是程序本身(可以对程序作出解释.(这一点和注释(comment)没什么区别)可以被其他程序(比如:编译器等)读取. Annotation的格式: 注解是以"注释名"在代码中存在的, 还可以添加一些参数值,例如:S…

车提示检测轮胎气压_水淹车估价中心_辽宁中车检

首页 > 新闻中心发布时间&#xff1a;2021-01-02 00:57:13 导读&#xff1a;辽宁中车检为您提供水淹车估价中心的相关知识与详情&#xff1a;在行车过程中,汽车受到振动,可能会引起前照灯部件的安装位置发生变动,从而改变光束的正确照射方向.同时,灯泡在使用过程中会逐步老化…

.NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法

0x00 为什么需要Map&#xff08;MapWhen&#xff09;扩展 如果业务逻辑比较简单的话&#xff0c;一条主管道就够了&#xff0c;确实用不到Map。不过当业务逻辑比较复杂的时候&#xff0c;有时候我们可能希望根据情况的不同使用特殊的一组中间件来处理HttpContext。这种情况下如…