合肥程序员群: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. GDB的深入研究

    GDB的深入研究 一.GDB代码调试 (一)GDB调试实例 在终端中编译一个示例C语言小程序,保存为文件 gdblianxi.c 中,用GCC编译. 在上面的命令行中,使用-o参数指定了编译生成的可执 ...

  2. centos6.x开机卡死

    问题描述: centos6.x开机卡死在进度条处 远程登录,查看系统日志,看看卡在哪儿 通过远程连接,tail -fn 20 /var/log/messages 发现报错: init: prefdm ...

  3. c++的多线程和多进程

    一.多进程和多线程对比 多进程:进程不止一个,开销比较大,通信方式比较复杂(可以用过管道.文件.消息队列进行通信),维护成本不高. 多线程:利用共享内存的方式进行指令的执行,开销比较低,但是维护起来比 ...

  4. TensorFlow白皮书

    TensorFlow [1] is an interface for expressing machine learning algorithms, and an implementation for ...

  5. TortoiseSVN客户端重新设置用户名和密码

    TortoiseSVN客户端重新设置用户名和密码 在第一次使用TortoiseSVN从服务器CheckOut的时候,会要求输入用户名和密码,这时输入框下面有个选项是保存认证信息,如果选了这个选项,那么 ...

  6. ImageLoader图片加载

    http://blog.csdn.net/liu1164316159/article/details/38728259       转载请注明http://write.blog.csdn.net/po ...

  7. QT笔记之解决QT5.2.0和VS2012中文乱码 以及在Qt Creator中文报错

    转载:http://bbs.csdn.net/topics/390750169 VS2012 中文乱码 1.方法一: 包含头文件 #include <QTextCodec> ....... ...

  8. JavaScript中数组迭代方法(jquery)

    var arr = [1,2,4,5,6]; //1.forEach(让数组中的每一项做一件事)arr.forEach(function(item,index){    console.log(ite ...

  9. web前端之HTML的大框架(body元素与frameset元素)

    web前端之HTML的大框架      body元素与frameset元素 对于从事html的人员来说,我们一般熟悉的框架是先声明html ,然后在<html>标签对里包着<head ...

  10. js巧用apply方法实现数组最值以及合并

    尽管js的apply方法在平常的使用中并不多见,但是在某些地方使用的还是很有帮助性的,这里就和大家说两个比较实用的例子:1.数组最大最小值 求数组中的最大最小值,js有相应的方法:Math.min() ...