1..NET Core基本介绍

  a 作为一个.NET的开发者,在以前的开发中,我们开发的项目基本都是部署在windows服务器上,但是在windows服务器上的话某些比较流行的解决访问量的方案基本都是先出现在linux上,而后才能迁移出现windows上,而且效率处理方面也不再一个级别。曾经让.NET的开发者非常无奈可又不得不遵循,随着时间的推移,后来第三方公司开发了.NET可以依赖跨平台的技术Mono,我们可以简单地对其开发的程序实现跨平台。关于Mono部署ASP.NET跨平台的技术我曾经写过一篇博客,大家可以研究之(http://www.cnblogs.com/hanyinglong/p/5456757.html),后来微软换了新的首席执行官(纳德拉),微软整个公司都开始转型实现面向服务化的公司,而不是局限在以前故步自封的地步中徘徊不前,而他的出现也推进了跨平台的实现,在微软将第三方公司的Mono收购之后,微软创举性的推出来ASP.NET Core跨平台的技术,它的出现顺应了现在开源的大趋势,也使的大部分的程序员对这门技术充满了期待和期望,所谓工欲善其事不必先利其器,下面我们简单来说一下ASP.NET Core吧。
  b ASP.NET Core是一个新的开源和跨平台的框架,用于构建互联网的架构,ASP.NET Core应用可运行于.NET FrameWork之上,它对原来的ASP.NET MVC和WebAPI进行了重构,使其可以在windows、Mac、Linux上跨平台开发和运行你的ASP.NET Core引用。
  c .NET Core为了跨平台在架构上做了一些改变,这些改变在下面我们就能够感觉到,他不在依赖于System.Web.dll,而是都基于颗粒化的包实现,我们在project.json中就可以看到他的引用,(在最新版的.NET Core下已经将project.json转换成msbuild来实现),等稳定版出来之后我将会对这块也去做一个了解,并且升级项目。
  d .NET Core官方网站:https://www.microsoft.com/net/core
  e 在.NET Core快速发展的时候,我们也开始学习使用.NET Core开发Web引用,当然我们的开发只是为了学习ASP.NET Core而去开发的商城,在开发这个商城中我们学到了很多东西,在这里真心的感谢小伙伴们和我一起开发测试和完善(开发是我和波波以及阿伟,测试俊涛,前端KeyBaby(非专业))。我们的网址地址如下:http://www.chuxinm.com/ ,下面我就简单介绍一下这个项目中所使用的东西以及架构,后面如果有机会我将会继续阐述本项目中的技术点

2.初心源商城项目框架结构

  a ASP.NET Core是一个全新的框架,我们在使用Visual Studio 2015创建.NET Core项目如下图所示,我们在创建的时候选择一个空的项目架构之后,然后在空的项目架构基础上在进行开发。
   

  

  b 当项目创建完成之后,我们发现项目文件夹的依赖和以前的只有一点不同,如下所示:大家基本都能够理解这些文件夹下的信息,如图所示,下面我对系统架构做一个简单的介绍
  
    b.1 Repository解决方案文件夹下的接口和实现类库为仓储,主要实现的功能就是对数据库进行基本操作的封装(增删改查)以及扩展的操作数据库实现。
    b.2 Service解决方案文件夹下的接口和实现类库为服务,主要实现的功能就是对业务功能的封装,所有的业务功能都在这一层,不允许在仓储和控制器中处理业务,为了以后更方便的开放接口,如下图所示:
      
    b.3 Pls.Entity类库是实体类库,所有生成数据库的类库以及映射文件都在此类库下面,用于生成数据库(codefirst),以及接口的接收参数和相应参数实体都在其此类库下。
    b.4 Pls.UnitOfWor类库为工作单元的实现,主要是简单封装了一下工作单元的实现,使其实现统一的事务管理
    b.5 Pls.Utils类库为公共类的实现,主要是简单封装了公共类、读取配置文件、邮件发送、七牛云的和redis的封装方法实现。
    b.6 ProgrammersLiveShow为主项目,主要是.NET Core的MVC架构,因为现在整个项目前端和后端的管理都是在一个配置文件下,没有做读写分离,所以整个架构就如上图所示(这里计划在后期的时候如果做读写分离,我们可以在创建一个ProgrammersLiveShowWebApi的项目提供服务)。

3.初心源商城项目主项目说明

  a 上面我们简单介绍了本项目的框架结构,下面我们介绍一下主项目的简单架构,使大家能够简单熟悉项目文件夹以及文件的作用,下面简单说明一下几个不同的配置
    a.1 launchSettings.json 此文件在Properties下,主要作用是ASP.NET Core的应用配置,用于应用启动准备工作,包括环境变量,开发端口以及启用某些验证等,在此配置文件中修改和开发者使用右键属性修改之后提交的内容基本一致,支持同步更新。
    a.2 wwwroot文件夹下为一个存放静态内容的文件夹,例如css、js、img等文件。这样做的好处就是做动态分离的时候非常方便,而且外部JS以及CSS的引用都可以使用bower.json实现,但是本项目很遗憾的配置bower.json未成功,这是因为在配置之后,手动配置引用JS的版本在加载的时候非常的慢,而且每台机器加载的版本也有问题,不知道是什么原因,如果大家知道,欢迎留言告诉我,所以在这里我基本使用的是免费的CDN网站提供的JS路径以及所有的包环境部署在项目中。
    a.3 autofac 依赖注入我们没有使用.NET Core自带的依赖注入,而是使用了AutoFac,对于依赖注入的选择我选择了AutoFac来注入。
    a.4 component组件配置,创建类并且继承自ViewComponent,我非常喜欢这个功能,因为可以组件化配置,封装很多公用的页面模块来使用。
    a.5 document 本项目文件配置说明,包括项目规范和数据库文件以及开发项目必读等信息。
    a.6 filter 自己写的一些拦截器,做了权限控制的拦截等信息
    a.7 job 定时任务,我们使用的是Pomelo.AspNetCore.TimedJob定时插件来实现购买之后7天内未回复评价以及未支付订单定时删除实现。
    a.8 Startup.cs文件为.NET Core的启动入口文件,项目启动运行的时候编译器会在程序集中自动查找Startup.cs文件读取启动配置,除了构造函数之外,他还可以定义Configure和ConfigureServices方法。
    a.9 nlog 日志配置文件,我们使用NLog.Extensions.Logging插件来实现服务的配置
    a.10 appsettings.json 公共配置信息的书写,可以配置Sql连接字符串以及其它公共信息。
  b 项目中使用了很多的技术性的东西,上面只是简单地列举以及说明,后面如果有机会我将会再次深入的阐述内部所实现的作用。

4.初心源商城暂留疑问

  疑问1:我在使用bower.json管理JS文件的时候,在配置文件中配置了各种JS的版本之后,在本机器的依赖项中动态生成,在其它不同的机器获取代码之后动态生成JS之后会发现有时候依赖的版本不对,解决了好长的时间,不知道什么原因?
  疑问2:配置文件的使用非常不方便,在以前的appsetting配置中我们可以很容易的调用到配置的信息,而在.NET Core中配置文件中配置之后,我们在其它类库需要调用很麻烦,有没有什么更简单的方法呢?

5.初心源商城使用的技术和部署的环境

  
  a 在项目一期开发中我们使用都了以上这些技术,后面二期三期我们会使用更多的技术来完善系统,关于以上技术如果谁有任何疑问或者学习可以加我QQ我们一起交流。
  b 源码管理我们使用的Git进行管理,部署在开源中国,方便多人共同开发
  c 本项目地址:http://www.chuxinm.com ,由于本项目要承担服务器和域名的费用,故而源码收点辛苦费,还请见谅,所有拿到源码的人都可以对源码进行任意的操作,系统简单截图如下:
           
    
      
 
 
                                      下篇博客我将阐述如何将.NET Core项目部署到linux(Centos系统下)。
 
 
 

.NET Core跨平台:使用.NET Core开发一个初心源商城总括的更多相关文章

  1. .net core跨平台应用研究-ubuntu core下配置.net core运行时

    引言 年初研究了一阵子.net core跨平台应用,先后发表了几篇应用研究的文章.因工作原因,忙于项目上线,有一阵子没来博客园写文章了.最近项目基本收尾,抽空翻了下自己的博客,廖廖几篇文章,真让人汗颜 ...

  2. .NET Core跨平台:.NET Core项目部署到linux(Centos7)

    1.开篇说明 a 上篇博客简单的说明了一下 使用.NET Core开发的一个总结,地址是:(http://www.cnblogs.com/hanyinglong/p/6442148.html),那么这 ...

  3. 用vue开发一个公众号商城SPA——1.前期准备和写页面

    使用vue开发公众号商城 第1篇记录项目准备.搭建,写页面遇到第问题以及总结,持续更新 公司最近接了个商城项目,包括PC端商城.微信公众号网页商城.后台管理系统.这几天在做微信公众号商城,又新接触了很 ...

  4. 拥抱.NET Core,如何开发一个跨平台类库 (1)

    在此前的文章中详细介绍了使用.NET Core的基本知识,如果还没有看,可以先去了解“拥抱.NET Core,学习.NET Core的基础知识补遗”,以便接下来的阅读. 在本文将介绍如何配置类库项目支 ...

  5. [.net 面向对象程序设计深入](9).NET Core 跨平台开发环境搭建

    [.net 面向对象程序设计深入](9).NET Core 跨平台开发环境搭建 1.概述 读前必备:认识.NET Core 上篇介绍了.NET 新的生态环境:包括.NET Framework..NET ...

  6. 《ASP.NET Core跨平台开发从入门到实战》Web API自定义格式化protobuf

    <ASP.NET Core跨平台开发从入门到实战>样章节 Web API自定义格式化protobuf. 样章 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于 ...

  7. .Net Core 跨平台:一个简单程序的多平台(windows、Linux、osx)发布

    .Net Core 跨平台:一个简单程序的多平台(windows.Linux.osx)发布 .Net Core 3.0 已于2019年9月23日发布了,包含了一些新特性,具体参见Announcing ...

  8. 使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序

    使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻 ...

  9. 用VSCode开发一个基于asp.net core 2.0/sql server linux(docker)/ng5/bs4的项目(1)

    最近使用vscode比较多. 学习了一下如何在mac上使用vscode开发asp.netcore项目. 这里是我写的关于vscode的一篇文章: https://www.cnblogs.com/cgz ...

随机推荐

  1. 更深入一点理解switch语句及c/c++对const的处理

    首先看一到用 c 编写的程序/* -------------------- filename : ta.c --------------- */int switch_test_first( int x ...

  2. BZOJ2720: [Violet 5]列队春游

    2720: [Violet 5]列队春游 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 173  Solved: 125[Submit][Status] ...

  3. TF-IDF算法 笔记

    TF-IDF:Term Frequency-Inverse Document Frequency(词频-逆文档频度):主要用来估计一个词在一个文档中的重要程度. 符号说明: 文档集:D={d1,d2, ...

  4. Linux FTP 服务器配置简单说明

    一.  FTP 说明 linux 系统下常用的FTP 是vsftp, 即Very Security File Transfer Protocol. 还有一个是proftp(Profession ftp ...

  5. SQL四种语言

    1.DDL(Data Definition Language)数据库定义语言statements are used to define the database structure or schema ...

  6. BUG--tomcat更改目录失败

    1.问题描述 按照通用的做法,tomcat可以配置运行的网站目录.但是配置后不能正确运行. 配置过程如:http://www.cnblogs.com/SimonGao/p/4905887.html 2 ...

  7. mysql授权远程用户连接(权限最小化原则)

    1.进入MySQL,创建一个新用户root,密码为root: 格式:grant 权限 on 数据库名.表名 to 用户@登录主机 identified by "用户密码"; gra ...

  8. 2015年15+最佳的响应式HTML5网站模板

    015年最好的免费响应式HTML5模板通常用于创建新潮的网站. HTML5是HTML用于创建现代化网站的最新版本.随着这一现代标记语言的出现,网上冲浪的趋势变得越来越智能化越来越酷.几乎每个web开发 ...

  9. Angular - - ngInclude、ngTransclude

    这两个都是HTML DOM嵌入指令 ngInclude 读取,编译和插入外部的HTML片段. 格式:ng-include=“value”<ng-include src=”value” onloa ...

  10. OC类方法的调用

    有个Person类,有个Phone类,Person类想使用Phone类中打电话和发短信的方法 1.Phone.h         Phone有kind和color属性  ,方法定义的时候将用到的参数都 ...