合肥程序员群:49313181。    合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入,申请备注填写姓名+技术+工作年限)
Q  Q:408365330     E-Mail:egojit@qq.com

概述:

  为了研究跨平台.NET 开发,我打算利用.NET core 编写一个跨平台的cms,这个CMS我也秉着开源的原则放到github上面,为.NET 开源社区做点小小的贡献吧。如果有兴趣的可以联系我一起为.NET开源和跨平台做点小小的贡献吧。EgojitCMS传送门  github地址:https://github.com/egojit8/EgojitCMS.git

技术架构和设计选型   ASP.NET MVC core+EntityFramework core+mysql/sqlite

连接mysql 数据库和嵌入式的Sqlite 这2个数据库支撑cms完全的足够并且都是开源跨平台。机构使用最初接触.NET开发是时候的经典三层架构,只不过这里面没有了SqlHelper类了,这个架构作为开发cms的架构完全适合,我们只是开发一个简单的CMS无需把框架整的太过复杂,神马领域驱动模式(DDD)开发,命令职责查询分离模式(CQRS)开发在这里就不用了(我也用不好,哈哈……)我一直都认为最适合项目的框架才是最好的框架,一堆技术人员总是为了追求封装而封装把简单的项目搞的太过复杂,没必要,累死自己还累死团队人员并且也增加了项目的出问题概率。

数据库操作通过EF 这个超级好用的ORM框架,类比如java web开发中的hibernate 或者 mybatis,只不过EF更加智能。为什么选择EF?因为它让我们很好的去操作数据库,并且通过设置不同的Provider可以实现多数据库的操作,切换数据库so easy!而且这个CMS是新开发,所有没有现成的数据库,那么用EF进行Code First开发,让开发人员更多的关注面向对象的类设计,而无需和二维关系表做斗争(让这个工作成为专业的DBA的工作吧)。

mac 下vs code 多层架构编程:

  很多人初步接触.NET core脱离了visual studio这个宇宙最强IDE后不知道怎么去组织自己的项目了,因为这里我们是经典三层机构编程,但是这里我们使用开源跨平台的vs code没有vs那么无敌智能,一切回归到最原始和最本质状态,我们必须得了解怎样组织我们的项目结构和编译脚步的调整。

.NET core使用文件目录形式管理项目,它更加的简单明了更加还原本质;我们的项目根目录是EgojitCMS,所以我们要在我们的项目中新建目录为了适应VS我们适当的调整目录。在EgojitCMS目录新建一个src目录作为源码目录,然后就是大家所了解的BLL,DLL,Comm,Models,Web如图:

大家好奇不是三层么,三代指多,哈哈……,如果要较真就是多层架构。Web顾名思义就是web层,里面就是mvc相关的代码和结构,其它都是库文件层。就不每一层一一介绍了,为什么建这些层就不说了,只拿Models层来说事。新建project.json这个是层的配置文件,可以简单的理解成java web开发中的maven 配置文件,它管理引用库和一些工具配置,如下:

{
"version": "1.0.0-*",
"dependencies": {
"Microsoft.EntityFrameworkCore": "1.0.0",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
"Pomelo.EntityFrameworkCore.MySql": "1.0.0"
},
"tools": {
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
"Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
}, "frameworks": {
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0-*"
}
}
//"imports": "dnxcore50"
}
}
}

很多东西可以到官网说明文档去学习比我说要好进入官网传送门

配置好后可以加入相关类文件

这个库算是建好了,那怎么被Web层或者其它层应用呢?需要在web层中的project.json中配置

然后通过 dotnet restore重置获取相关库。这样web层就可以使用Models层的类了。MVC模板项目通过yo aspnet 命令去新建,前一篇文章已经说了。记得一定要进入Web层去执行yo aspnet把mvc模板结构建到Web中去。请查看下面gif动画可以看到有智能提示并且显示User:

然后基本框架搭建完成。最终的机构如下图:

但是这个时候如果直接F5运行会报错的。因为自动生成的launch.json中配置的路径不正确,需要手动修改根据你的项目根目录下面的机构进行修改配置:

同时对tasks.json进行修改:

这样就可以直接F5进行断点调试和运行

最后:

以上都是对EgojitCMS的铺垫,时间仓促.希望.NET 开源和跨平台越走越远。

.NET跨平台之mac 下vs code 多层架构编程的更多相关文章

  1. EF 下的code fist 模式编程

    EF 分两种模式 codefirst(就是不知道数据是啥,也没有数据库)  和 database fist (数据已经设计好了) 首先打开vs  新建一个项目 创建一个控制台程序 然后 新建一个Tea ...

  2. 推荐个Mac OSX下的Code Editor:Atom

    首先只是当Editor用,不是整成IDE级. 先说几个大家耳熟能详的: 1.Sublime,Sublime在Mac下的安装并不完全,CLI启动需要自己ln个链接.还有一些其他原因,比如Packages ...

  3. 在Mac下运行ASP.NET Core应用程序

    在Mac下运行ASP.NET Core应用程序 通过参照.NET Core相关官方文档,在我的Mac电脑上用Visual Studio Code创建了我的第一个ASP.NET应用. 开发环境搭建 首先 ...

  4. Mac下运行ASP.NET Core应用程序

    Mac下运行ASP.NET Core应用程序 在Mac下运行ASP.NET Core应用程序 通过参照.NET Core相关官方文档,在我的Mac电脑上用Visual Studio Code创建了我的 ...

  5. mac下Fiddler的安装-启动

    使用教程参考:http://www.cnblogs.com/TankXiao/archive/2012/02/06/2337728.html#request 环境安装 Mono安装 首先,Mac下需要 ...

  6. mac 下安装mongodb

    转载自https://segmentfault.com/a/1190000002547229 概念 MongoDB 是一个跨平台的,面向文档的数据库,提供高性能,高可用性和可扩展性方便. MongoD ...

  7. appium mac 下 安装及踩坑

    Appium Appium是一个开源.跨平台的测试框架,可以用来测试原生及混合的移动端应用.Appium支持IOS.Android及FirefoxOS平台.Appium使用WebDriver的json ...

  8. Mac下也能用抓包工具Fiddler

    一直以来都是在Windows底下工作,对于抓包工具,自然而然当属Fiddler最最出色.不过Fiddler是在.Net runtime环境下运行的,所以想要在Mac下使用,有些困难. 在试过了Char ...

  9. 2016年最新mac下vscode配置golang开发环境支持debug

    网上目前还找不到完整的mac下golang环境配置支持,本人配置成功,现在整理分享出来. mac最好装下xcode,好像有依赖关系安装Homebrew打开终端窗口, 粘贴脚本执行/usr/bin/ru ...

随机推荐

  1. python 学习(json)(转)

    Json简介:Json,全名 JavaScript Object Notation,是一种轻量级的数据交换格式.Json最广泛的应用是作为AJAX中web服务器和客户端的通讯的数据格式.现在也常用于h ...

  2. Dynamics AX 2012 R2 窗体系列 - 在窗体上修改字段时所触发的方法及其顺序

        在这个系列里,Reinhard将和大家一起探索在AX的窗体上执行操作时,都会触发窗体.窗体数据源和表上的哪些方法,并且是以怎样的顺序触发的.     这次,我们来看看在窗体上修改或录入数据的情 ...

  3. socket网络编程

    一.客户端/服务器架构 C/S架构,包括 1.硬件C/S架构(打印机) 2.软件C/S架构(Web服务) 最常用的软件服务器就是Web服务器,一台机器里放了一些网页或Web应用程序,然后启动服务,这样 ...

  4. linux的mount(挂载)命令详解

    本文介绍mount命令的用法,以及技巧光盘镜像文件.移动硬盘及U盘的方法. 挂接命令(mount) 首先,介绍一下挂接(mount)命令的使用方法,mount命令参数非常多,这里主要讲一下今天我们要用 ...

  5. 学习Linux系列--Python资源收集

    本系列文章记录了个人学习过程的点点滴滴. 回到目录 玩Linux,不懂一门脚本语言是不行的,我这里选择的是Python. 10.入门资源 下面前三遍是比较系统的文档,后面是一些心得,我看了好几天,终于 ...

  6. Submit Text 快捷键总结

    Ctrl+D : 选择单词,重复可增加选择下一个相同的单词Ctrl+F : 查找内容Ctrl+G : 跳转到指定行Ctrl+H : 替换    Ctrl+J : 合并行(已选择需要合并的多行时)Ctr ...

  7. laravel框架总结(十四) -- 数据迁移和数据填充

    一.数据迁移 1.创建一个迁移 1>使用artisan命令make:migration来创建一个新的迁移: php artisan make:migration create_sutdents_ ...

  8. sql中文日期格式转换(xxxx年x月x日)

    ) set @dd='2014年10月1日' select replace(replace( replace(@dd,'日',''),'月','-'),'年','-') 别人的方法 )='2012年1 ...

  9. WebForm Application Viewstate 以及分页(功能性的知识点)

    Application: 全局公共变量组 存放位置:服务器 特点:所有访问用户都是访问同一个变量,但只要服务器不停机,变量一直存在于服务器的内存中,不要使用循环大量的创建Application对象,可 ...

  10. all ,any,abs的使用

    #!/usr/bin/env python #all循环参数,如果每个元素都为真,那么all的返回值为真 r = all([True,'sad','asd']) print(r) #any 只有一个真 ...