故而MVC5+EF6+WebApi 做一个稍作用(三) 项目搭建

文章由作者马志国以博客园底原创,若转载请叫大庭广众处于标记出处:http://www.cnblogs.com/mazg/

相应的视频教程地址(土豆网):http://list.youku.com/albumlist/show/id_51453937.html

相似一个色起前都见面出启动会,需求交底等等,其中会发一个环节,大开口特讲起目的意义,然后取一个宏大上之花色名字,咱立刻是一个聊作用谈不达到项目,但是名字不克太抠门了。好吧,就为Trump吧。没有其它意义,玩嘛!

1.1 编译环境与开发工具

花色分结构吧只要当这里说一下,这次是有些作用学DDD的旁模式,一定牢记自己说的凡仿。因为自啊未懂DDD,我不怕画个皮。

1.1.1 Go语言编译器

下载地址:http://liteide.org/cn/doc/install/

出于Go语言支持Windows、mac和Linux等主流操作系统,所以我们需要根据操作系统选择不同之安包文件。以win10 64号操作系统也例,选择的装置包文件也:go1.8.3.windows-amd64.msi。点击默认安装即可。

对接下,配置环境变量GOPATH。右击”此电脑”选择属性,然后选择左边列表中之高等系统装置,接下去当弹出的对话框中点击环境变量按钮。在系变量中,点击新建按钮。在弹出的对话框中,变量名写GOPATH,变量值写设置的Go项目路线。

 Go项目路线下约定来三个子目录:

1) src 存放源代码(比如:.go .c .h .s当)

2) pkg存放编译后生成的文件(比如:.a)

3) bin 存放编译后生成的可执行文件(为了推行好,可以把此目录在到 path 环境变量遭受)

 Go常用之老三个令:

  1. go run:直接运行程序
  2. go build:编译生成可执行程序
  3. go get:获取远程包(需提前设置
    git或hg)

 

DDD这个东西中文名字应该让天地让设计,园子很多格外神分享过、讲解了。看了广大博客很多题,依然没尽清楚这么复杂的事物(没有实行,纸上得来算觉浅)。这里大概说说自己之知道,把业务逻辑尽量的汇总在世界层(Domain),如果项目是肉体,那世界层就是人身的大脑了,以今天之科技,身上的零件除了大脑基本还只是替换。也许得拿大脑易到其他一个人身上,但是,整个身子要如听大脑的挥。如果人尚未了大脑,基本上就是是一滩肉,失去了当机体的意义。

1.1.2 LiteIDE

下载地址:http://liteide.org/cn/

LiteIDE是相同慢简单,开源,跨平台的Go IDE。

同因为win10 64各类操作系统也例,选择的装包文件也:liteidex32.2.windows-qt5.zip。直接解压,在里头的bin目录下,点击liteide.exe即可运行。

更安装GOPATH后,liteIDE不见面自动更新,也急需再行安”查看”->”编辑时条件”。Go工具对管的检索打src目录开始。

 

此外当一个机体,还远没上想电脑那样的低耦合度,所以大部分组件更换的本钱且生高。即使是如出一辙尊计算机,要更换零件也是设考虑到整平台的架等等信息,所以说到低位耦合,可替换的时候在非是迫于情况下,使用的几乎带领非常有点。

1.1.3 Git工具

下载地址:https://git-scm.com/download/win

盖win10 64位操作系统为条例,选择的设置包文件也:Git-2.8.1-64-bit.exe。  

使用Git工具得到Go的远程包。Git是同缓免费、开源的分布式版本控制系统,方便之自https://github.com/赢得源代码。gitHub是一个面向开源和民用软件类之托管平台,因为就支持git
作为唯一的版库格式进行托管,故称为gitHub。

 

放开项目落得的一个事例,比如引入工作单元、仓储层的定义,就是为隔离领域以及数据持久化,但是诚项目及丝,要替换数据持久化的那么同样重叠谈何容易。因项目现有应用场景,然后开展技能选型的时,要综合支出效率,开发成本,可扩展性,可维护性等等,并无是什么惊天动地上虽因此什么,什么概念都要提到,那样只见面成同摆技术点堆砌而难以实际用。

1.2 第一个Go程序

以传统的“Hello World”为条例,开始Go语言编程的同。

 

package main

import "fmt"

func main() {
fmt.Println("Hello 世界")
}

 

 代码解读:

每个Go源文件都归因于同等长长的package声明语句开始,表示该源文件属于哪个包。包类似于任何语言的堆栈或者模块。这个事例也package main。main包比较奇特,它定义了一个单身可尽之次序,而不是仓库。

跟着是如出一辙文山会海导入包语句子,用于导入该次所据的保证。由于本示例程序用到了Println()函数,所以需要导入该函数所属的fmt包。需要小心的是,不可知包含在源代码中无下的管教,否则Go编译器会报编译错误。

以main包,有以只是来一个main( )函数,是Go程序执行的输入。在main()函数中调用Println()函数打印输出 Hello,世界。我们特意使用了汉语“世界”,这意味Go语言原生支持Unicode,可以拍卖全世界任何语言的文件。另外,Go语句不需加分号表示晓句子结束。在Go语言中,所有函数以重点字func开头。一个正常化的函数定义包含以下一些:

func 函数称为(参数列表)(返回值列表){

    //函数体

}

 而main函数既没有参数,也尚未回值。

Go代码注释与C语言保持一致,同时支持以下简单栽用法:

//行注释

/*

片注释即多履行注释

*/

以身作则go build go install go
run命令,并较其分别。

go build 编译包,并且于当前目录下生成可执行文件

go run 直接运行,但令后以及的是文件,而不是目录(包)

go install 会在src同级目录下的package目录下生成.a包文件,在同级的bin目录生成可执行文件。这样可于自由目录直接实施顺序。

随我们这类型,就是一个粗的效用,现在可预估的用户量就是你我他,你不要当还尚未上丝没有成型就考虑百万层用户的扩大,估计这个类型永远都没法上丝了。

1.3 项目管理

以一个简易的计算器程序为条例演示如何运用liteIDE开发以及管制项目。如果用管住几近个档次,个人认为多单类别同步用一个src目录比较好。使用liteIDE打开$GOPATH目录。在src目录下创造计算器程序项目,目录组织如下:

godev

  |->bin

  |->pkg

 |->src

     |->其它项目…

     |->mycalc

          |->main

              |->main.go

          |->math

              |->add.go

              |->sub.go

          |->math2

              |->mul.go

main.go

package main

import (
    "fmt"
    "mycalc/math"
    "mycalc/math2"
)

func main() {
    fmt.Println("请输入两个整数:")
    var a, b int
    fmt.Scanf("%d %d", &a, &b)
    fmt.Println(a, "+", b, "=", math.Add(a, b))
    fmt.Println(a, "-", b, "=", math.Sub(a, b))
    fmt.Println(a, "*", b, "=", math2.Mul(a, b))

}

add.go代码清单

package math

func Add(a int, b int) int {
    return a + b
}

sub.go代码清单

package math

func Sub(a int, b int) int {
    return a - b
}

mul.go代码清单  

package math2

func Mul(a int, b int) int {
    return a * b
}

瞩目:需要给表面使用的Add、Sub和Mul函数首配母大写。

艺尚未好坏,只有切合不吻合!当然,php是极端好之语言,这是世间真理!

以同一种领域专家、设计人员、开发人员都能分晓的通用语言作为相互交流之家伙,在交流的长河遭到窥见世界概念,然后用这些概念设计成一个天地模型;
由世界模型驱动软件设计,用代码来促成该领域模型;

有鉴于此,领域让设计的主导是成立对的小圈子模型

要是详细了解DDD的定义好打开上面的链接,包括下方图片,也是自文章中贴过来的,在这我们只是用他的子,并不曾实施DDD。

 

天地让设计的经文分层架构

 

多少作用的分段

 

咱们以此微品种分四层,分别吗

  • Trump.Domain 主要存放在模型,不引用任何类型
  • Trump.EF 实现数量持久化内容,本案被采用EF6,所以这边会见生出大量EF
    CRUD实现的操作,依赖Domain项目
  • Trump.Application
    实现数据与UI的互相,经过EF处理的数码以即时同一重叠转接为DTO返回到UI层,依赖Domain、EF项目
  • Trump.ExamApp UI层实现,使用MVC5+Web
    Api+jQuery+Bootstrap构建,依赖Domain、Application层。

诚如品种受到还见面发出一个赞助类似的档次,提供一些常用方法封装,扩展方法齐,并无作为其它项目独有,所以这边虽无排出来了。

 

始建解决方案和创造项目(Vs 2017)

来吧来吧,新建空白解决方案,然后上加MVC项目,名字为Trump.ExamApp,这个好基础非常基础的,只排一下留意点

1.选ASP.NET Web应用程序.NET Framework
,上面十分是风传着之跨平台版本。比较落后,看了几回视频都是第几聚。

2.选择MVC,同时勾选Web
API(不勾选亦足,可以经Nuget添加),身份验证那里选择未开展身份验证。()

 

身份验证:

非开展身份验证:不以net自带的位置管理

个人用户账号:集成Asp.Net Identity v2(.NET Framework) or v3+(.NET
Core)版本

3.创建了后只要图

4.采用Nuget管理项目蒙的援

当品种达右键,管理Nuget程序包,移除“Microsoft.ApplicationInsights”。Application
Insights 是不过扩大的应用程序性能管理 (APM) 服务,可吃 Web
开发人员在差不多只平台上生成和管制采取。暂时用不至,但是package有一些单,习惯性移除掉,然后便是升级一下除了jQuery外所有的管。

注意:为兼容性问题,jQuery版本不要管更改

 

好了。到这个结束,这个类别为主竣工,接下就遵循预约的讳创办其他几个种类,选择项目为类库(.NET
Framework)。

 

且创了后,刷新一下,然后变解决方案。把Web项目安装为启动项目,F5开行调试,我们尽项目之气基本搭建完毕。