发八个github上无与伦比用golang达成的o2o项目

说在头里的话。
无意,已经写了8年的代码了,从初期的WebForm,到后来的MVC3,一路晋升到现行反革命的MVC5;ORM也从在此以前的ADO.Net,到EntityFramework
Model
First,到以往转到Dapper;项目分层也从最简便的三层架构,到今日用DDD。
技巧一贯在迭代立异,也会关切.Net
Core,而除了.Net开垦,还学会的Android、iOS开采,即便都不是很驾驭,但是付出一般的选用都以没难题。但是共同走来,开掘繁多知识点在逐年的淡漠,所以,2018的对象就是学会写作,把这么多年学到的技艺、知识点都通过Blog的款型记录下来,希望能产生一站式的知识点,以此鞭策本身。

前言

 

  • 本体系源自对EF6
    CodeFirst的探赜索隐,但新兴开采在温馨项目中创设的时候蒙受了部分标题以及部分解决措施,由此想作为三个名目比比较多写下去。
  • 本类别并非教您怎么做架构划设想计,但足以参照一下里边的主意。本种类只是为了声明那些本事应用而创设的三个轻巧易行的消除方案。EF连串大都采纳DDD的营造格局,那也是当下最盛行的。假设你想对DDD有所了然,能够在园子个中寻觅那个DDD方面包车型客车稿子可能是在CodePlex上下载相关的DDD设计模型源码进行钻探。
  • 假让你是贰个新人或许是一向不用过EF6
    CodeFirst的人,那么本体系将带您一步一步营造友好的缓慢解决方案平台。假设你是对EF有色金属研讨所究的人,那么不正之处,招待指教。

 

What’s Go2o

Golang combine simple o2o DDD domain-driven design realization,
including multi-channel (businesses), multi-store, multi-member
commodity, Promotions, orders, coupons implementation also includes a
micro framework in package “ops/cf”, providing ORM, Reporting, Web
Framework,Rpc Framework.

Golang 结合DDD领域驱动设计的简要o2o达成,包含多路子,多门店,多会员.商品,
巨惠,订单,巨惠券的落实,同有时间蕴涵二个小型框架gof,提供ORM,报表,Web
Framework,冠道pc Framework. gof已经独自为叁个代码货仓.

解决方案目录

yzc579亚洲城官网 1

杀鸡取卵方案目录

整整方案分为7个目录

  1. Core,主倘诺大局通用的Utility、Cache、Extensions等类,适用于具有的花色。
  2. Domain,领域层,满含仓库储存Repository,以及目迷五色逻辑的瑟维斯。
  3. Framework,为Web服务,Controller的基类,Filter,以及Html和Url的扩大类。
  4. Presentation,表现层,比方说Web,网址项目;恐怕WinTools,四个工具类项目。
  5. InternalService,后台服务,开垦一些类别会时时必要后台任务,举例说发送邮件,生产总结数据等。
  6. Tests,测量试验项目,如今那块是毛病,还未曾实际的测量试验代码
  7. Global,这几个是用来存款和储蓄一些静态的文本,比方SQL。该类型决不编写翻译。

系统场景

 

  当我们对系统实行设计的时候,往往会考虑到它的权限设计,本连串就本着三个简约的权力场景来对总个系统开展统一企图和技巧中央的完毕。

  • 要求列表

1.  系统具备管理员和操作员的角色;

2.  一个系统用户只能属于某个角色;

3.  一个角色用户可以操作多个业务模块,一个业务模块可以被多个角色用户操作;

4.  业务模块和角色用户之间可以进行配置;

5.  系统日志维护

6.  系统字典维护

 

 

 

 

 

 

 

  • UML用例图

  yzc579亚洲城官网 2

  • PD数据库设计

  yzc579亚洲城官网 3

  • EF实体对象模型

  yzc579亚洲城官网 4

  • 系统框架搭建

  yzc579亚洲城官网 5

  1.   Common
    系统通用类库层:首要寄放一些体系的内需的通用访谈的赞助类问价,比方本示例选拔的主键编码为长整形的编码法则类、客商密码加密和解密的帮助类等;
  2.  
    Abstract领域抽象层:也正是大家常说的接口层,首纵然概念业务完成方式的接口;
  3.   Concrete领域落到实处层:对天地工作的兑现类以及世界模型的创设;
  4.   Entities实体层:贮存领域模型的实业;
  5.   Mapper实体映射层:EF对实业的关联安顿后的映射,本示例选取的是EF
    Fluent API的艺术来对实业在数据库中的映射做详细安排;
  6.   Initializer开头化数据层:由于数据库是通过微软的ORM框架Entity
    Framework映射生成的,所以在数据库伊始化时,大家能够增添我们所急需的起先化数据;
  7.   Factory 工厂反射层:首要用于服务层调用领域实现层的解耦操作;
  8.   Service服务层:注意这里只是贰个演示,具体能够动用WCF、Web
    Api、Web瑟维斯来作为服务层,本示例就用WebService来做一下表明;
  9.   Web表现层:主假若应用Asp.net
    mvc4+EasyUI来作为前端页面包车型地铁功力显示和操作。

   瞩目:建设方案文件夹在本地球磁性盘不会自动生成,这里我们手动创立一下,然后把各自的工程构建在相应的文本夹里面。

  yzc579亚洲城官网 6

  • 亲自过问情况
  1.  系统:Windows 7 X64 旗舰版
  2.  开采工具:Visual studio 二〇一二 锋跃型
  3.  数据库:Sql Server 2008 r2
  4.  ORM框架:Entity Framework 6上述版本
  5.  IOC容器:Ninject 3.2.0.0
  6.  展现层:Asp.net MVC4 +EasyUI 1.4.3
  7.  代码管理:Visual Studio Online(TFVC)

  注意:那是本人本机的本子,大家的支出处境或许不啻天渊。Visual
studio只要能支撑Visual Studio Online(TFVC)的就行,

  后边会讲到怎么着利用。数据库能够是2006 二零零六 二〇一三版本的应有都可以支撑映射。EasyUI能够是1.3.5之上的本子。Asp.net


  MVC采取的是4的本子,Ninject就用它当中自带的版本呢。

 

Deploy

线上布署的示例见:

开荒情形表达

  • 运用Visual Studio 2017支付,.Net Framework的本子是4.7.1
  • 数据库是MS SQL Server 二〇一二 福睿斯2。
  • 源码使用Git,项目地址是:https://github.com/RaulSteven/StevenDDDSite

系统目的

 

  • 运用EF6达成作业实体到多少库表的总体映射
  • yzc579亚洲城官网,利用Ninject和工厂反射情势产生对接口和落到实处类的解耦,减弱注重
  • 贯彻各模块的基本操作和页面设计
  • 贯彻分歧剧中人物客户登入种类后方可对两样的页面模块举行操作

 

1.Complied

    git clone https://github.com/newmin/go2o.git /home/usr/go2o    export GOPATH=$GOPATH:/home/usr/go2o/    cd /home/usr/go2o    go build server.go

知识点

开采要写的东西重重,所以先把能写的点都列出来,然后再就每一种知识点一步步张开来说,顺序上可能会有局地糊涂,完成全数知识点后会重新书写。

  • 领域划分、仓库储存应用、Services层定义
  • 图表管理,缩略图的拍卖,是先链接后生成图片,照旧一介雅士成图片后链接。
  • 依赖注入,关于Autofac,构造注入以及品质注入
  • 网址配置,怎么样保管网址的一一配置项

备注

 

  • 由于代码须求架设到云端,所以我们必需注册三个微软的账号来报到Visual
    Studio
    Online管理大家的代码,固然示例演示的时候唯有一位,可是Visual
    Studio Online可以无需付费提供5个账号的集团使用权。
  • 本来想着轻便点的,但确实谈起来的时候开采东西依旧挺多的。前边就能够服从那个共同体的演示来所有人家讲明,等完毕后会提供代码的下载。不过不了解会有个别许篇幅,为了让大家不怎么不嫌烦琐,小编也许先截取多少个名堂图吧,希望大家多多援救和求教。yzc579亚洲城官网 7

  yzc579亚洲城官网 8

  yzc579亚洲城官网 9

   yzc579亚洲城官网 10

2.Running Service

    Usage of ./server:      -debug=false: enable debug      -help=false: command usage      -mode="sh": boot mode.'h'- boot http service,'s'- boot socket service      -port=1001: web server port      -port2=1002: socket server port

3.Add http proxy by nginx

    server {          listen          80;          server_name     *.ts.com;          location / {             proxy_pass   http://localhost:1001;             proxy_set_header Host $host;          }    }

4.Add test hosts

    vi /etc/hosts    127.0.0.1   wly.ts.com static.ts.com img.ts.com partner.ts.com    member.ts.com www.ts1.com www.ts2.com api.ts.com wsapi.ts.com

Access Entry

Partner Management

partner.ts.com

Member Center

member.ts.com

Partner Sales

wly.ts.com

you can add host to table “pt_host” use MySql Workbench.

Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注