From 6f16541cab62ec52a1accaeb09a2d55ea5e55125 Mon Sep 17 00:00:00 2001 From: neozhu Date: Wed, 13 Feb 2019 11:16:44 +0800 Subject: [PATCH] xx --- docs/index.html | 2 +- docs/static/js/manifest.b9eec7482e0ddb4a0954.js.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/index.html b/docs/index.html index 2f0c7d75..6ddf4317 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1 +1 @@ -Vue Presentation

功能特点

  • 与Visual Studio.Net 2017无缝集成
  • 快速生成标准的C.R.U.D代码
  • 轻量级并且符合DDD规范的架构
  • 前端JavaScript升级ES6规范
  • 运行环境.Net framework 4.7.1+
  • 支持Sql Server,My Sql,Oracle等主流数据库

Visual Studio.Net 集成

  • 扩展Visual Studio.Net Scaffolding组件
  • 定义了完整的代码模板
  • 支持Visual Studio.net 2013-2017

代码模板

根据Entity定义生成代码

模板功能
Controller.cs.t4MVC controller
EntityQuery.cs.t4查询逻辑的封装
EntityRepositoryExtension.cs.t4实现对数据处理逻辑和业务逻辑分离
IEntityService.cs.t4业务逻辑接口
EntityService.cs.t4业务逻辑代码实现
Index.cs.t4UI布局和前端JS

RUF.NET架构

运行环境

  • .net framework 4.7.1以上
  • Windows Server 2008R2以上
  • IIS

数据库支持

  • 采用Entity Framework 6.2.0
  • MS Sql Server 2008以上的任何版本
  • Oracle(修改部分配置)
  • My SQL(修改部分配置)

企业级系统架构

  • 软件开发过程中架构的重要性
  • 好的架构需要满足什么条件
  • 流行的架构有哪些

好的架构需要满足什么条件

  • Clean Code
  • Code Analysis
  • No Over-Engineering
  • SOLID Principles
  • DRY Principle (Don't repeat yourself)
  • KISS Principle (Keep it simple, stupid)
  • YAGNI Principle (You aren't gonna need it)
  • Ubiquitous Language
  • DDD (Domain-Driven Design)
  • Dependency Injection
  • Logging
  • Object Mapping
  • Response Compression
  • Response Caching

Microservices Architecture

ABP架构

领域模型设计

重要升级

  • 项目开始与2014年
  • Controller升级异步执行采用(async/await)
  • 使用Microsoft Unity DI & IoC
  • 前端采用Smart Admin模板
  • 前端输入/输出控件采用Easyui组件
  • 前端Js Callback改成箭头函数(Arrow Function)加入(async/await)方法

新增配置项

配置项说明


选项功能
GenerateMasterDetailRelationship生成一对多关系的完整代码
FormViewCols生成表单编辑列数
PopupModel新增修改采用弹出方式还是内嵌编辑方式
Title设置导航菜单栏

细节提升

  • 更简洁的语法
  • 输入控件input回车转Tab功能
  • 更友好更详细的提示信息
  • 支持多种操作方式
  • 支持多种样式

Demo

Demo

Demo

Demo

Demo

引用第三组件

  • URF.NET
  • Z.EntityFramework
  • jquery.easyui
  • Unity
  • Hangfire
  • LazyCache
  • SwaggerUI

持续改进计划

  • 支持MVC Areas
  • 丰富Web API接口
  • 支持Asp.Net Core
  • 完善多语言框架

案例项目

TMS无车承运人系统

TMS无车承运人系统

供应链协同

供应链协同

供应链协同

关务系统

关务系统

关务系统

Thanks

\ No newline at end of file +Vue Presentation

功能特点

  • 与Visual Studio.Net 2017无缝集成
  • 快速生成标准的C.R.U.D代码
  • 轻量级并且符合DDD规范的架构
  • 前端JavaScript升级ES6规范
  • 运行环境.Net framework 4.7.1+
  • 支持Sql Server,My Sql,Oracle等主流数据库

Visual Studio.Net 集成

  • 扩展Visual Studio.Net Scaffolding组件
  • 定义了完整的代码模板
  • 支持Visual Studio.net 2013-2017

代码模板


模板功能
Controller.cs.t4MVC controller
Web API Controller.cs.t4Web Api controller
Resource.cs.t4多语言资源库
EntityQuery.cs.t4查询逻辑的封装
EntityRepositoryExtension.cs.t4实现对数据处理逻辑和业务逻辑分离
IEntityService.cs.t4业务逻辑接口
EntityService.cs.t4业务逻辑代码实现
Index.cs.t4UI布局和前端JS

RUF.NET架构

运行环境

  • .net framework 4.7.1以上
  • Windows Server 2008R2以上
  • IIS

数据库支持

  • 采用Entity Framework 6.2.0
  • MS Sql Server 2008以上的任何版本
  • Oracle(修改部分配置)
  • My SQL(修改部分配置)

企业级系统架构

  • 软件开发过程中架构的重要性
  • 好的架构需要满足什么条件
  • 流行的架构有哪些

好的架构需要满足什么条件

  • Clean Code
  • Code Analysis
  • No Over-Engineering
  • SOLID Principles
  • DRY Principle (Don't repeat yourself)
  • KISS Principle (Keep it simple, stupid)
  • YAGNI Principle (You aren't gonna need it)
  • Ubiquitous Language
  • DDD (Domain-Driven Design)
  • Dependency Injection
  • Logging
  • Object Mapping
  • Response Compression
  • Response Caching

Microservices Architecture

ABP架构

领域模型设计

重要升级

  • 项目开始与2014年
  • Controller升级异步执行采用(async/await)
  • 使用Microsoft Unity DI & IoC
  • 前端采用Smart Admin模板
  • 前端输入/输出控件采用Easyui组件
  • 前端Js Callback改成箭头函数(Arrow Function)加入(async/await)方法

新增配置项

配置项说明


选项功能
GenerateMasterDetailRelationship生成一对多关系的完整代码
FormViewCols生成表单编辑列数
PopupModel新增修改采用弹出方式还是内嵌编辑方式
Title设置导航菜单栏

细节提升

  • 更简洁的语法
  • 输入控件input回车转Tab功能
  • 更友好更详细的提示信息
  • 支持多种操作方式
  • 支持多种样式

Demo

Demo

Demo

Demo

Demo

引用第三组件

  • URF.NET
  • Z.EntityFramework
  • jquery.easyui
  • Unity
  • Hangfire
  • LazyCache
  • SwaggerUI

持续改进计划

  • 支持MVC Areas
  • 丰富Web API接口
  • 支持Asp.Net Core
  • 完善多语言框架

案例项目

TMS无车承运人系统

TMS无车承运人系统

供应链协同

供应链协同

供应链协同

关务系统

关务系统

关务系统

Thanks

\ No newline at end of file diff --git a/docs/static/js/manifest.b9eec7482e0ddb4a0954.js.map b/docs/static/js/manifest.b9eec7482e0ddb4a0954.js.map index 3f6eece0..8caf1172 100644 --- a/docs/static/js/manifest.b9eec7482e0ddb4a0954.js.map +++ b/docs/static/js/manifest.b9eec7482e0ddb4a0954.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap e07f3e8bc13a399bc288"],"names":["parentJsonpFunction","window","chunkIds","moreModules","executeModules","moduleId","chunkId","result","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","shift","__webpack_require__","s","installedModules","3","exports","module","l","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","p","oe","err","console","error"],"mappings":"aACA,IAAAA,EAAAC,OAAA,aACAA,OAAA,sBAAAC,EAAAC,EAAAC,GAIA,IADA,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,EAAAC,KACQD,EAAAN,EAAAQ,OAAoBF,IAC5BF,EAAAJ,EAAAM,GACAG,EAAAL,IACAG,EAAAG,KAAAD,EAAAL,GAAA,IAEAK,EAAAL,GAAA,EAEA,IAAAD,KAAAF,EACAU,OAAAC,UAAAC,eAAAC,KAAAb,EAAAE,KACAY,EAAAZ,GAAAF,EAAAE,IAIA,IADAL,KAAAE,EAAAC,EAAAC,GACAK,EAAAC,QACAD,EAAAS,OAAAT,GAEA,GAAAL,EACA,IAAAI,EAAA,EAAYA,EAAAJ,EAAAM,OAA2BF,IACvCD,EAAAY,IAAAC,EAAAhB,EAAAI,IAGA,OAAAD,GAIA,IAAAc,KAGAV,GACAW,EAAA,GAIA,SAAAH,EAAAd,GAGA,GAAAgB,EAAAhB,GACA,OAAAgB,EAAAhB,GAAAkB,QAGA,IAAAC,EAAAH,EAAAhB,IACAG,EAAAH,EACAoB,GAAA,EACAF,YAUA,OANAN,EAAAZ,GAAAW,KAAAQ,EAAAD,QAAAC,IAAAD,QAAAJ,GAGAK,EAAAC,GAAA,EAGAD,EAAAD,QAKAJ,EAAAO,EAAAT,EAGAE,EAAAQ,EAAAN,EAGAF,EAAAS,EAAA,SAAAL,EAAAM,EAAAC,GACAX,EAAAY,EAAAR,EAAAM,IACAhB,OAAAmB,eAAAT,EAAAM,GACAI,cAAA,EACAC,YAAA,EACAC,IAAAL,KAMAX,EAAAiB,EAAA,SAAAZ,GACA,IAAAM,EAAAN,KAAAa,WACA,WAA2B,OAAAb,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAL,EAAAS,EAAAE,EAAA,IAAAA,GACAA,GAIAX,EAAAY,EAAA,SAAAO,EAAAC,GAAsD,OAAA1B,OAAAC,UAAAC,eAAAC,KAAAsB,EAAAC,IAGtDpB,EAAAqB,EAAA,GAGArB,EAAAsB,GAAA,SAAAC,GAA8D,MAApBC,QAAAC,MAAAF,GAAoBA","file":"static/js/manifest.b9eec7482e0ddb4a0954.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t3: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap e07f3e8bc13a399bc288"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap 40f481463c0df8d26d06"],"names":["parentJsonpFunction","window","chunkIds","moreModules","executeModules","moduleId","chunkId","result","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","shift","__webpack_require__","s","installedModules","3","exports","module","l","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","p","oe","err","console","error"],"mappings":"aACA,IAAAA,EAAAC,OAAA,aACAA,OAAA,sBAAAC,EAAAC,EAAAC,GAIA,IADA,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,EAAAC,KACQD,EAAAN,EAAAQ,OAAoBF,IAC5BF,EAAAJ,EAAAM,GACAG,EAAAL,IACAG,EAAAG,KAAAD,EAAAL,GAAA,IAEAK,EAAAL,GAAA,EAEA,IAAAD,KAAAF,EACAU,OAAAC,UAAAC,eAAAC,KAAAb,EAAAE,KACAY,EAAAZ,GAAAF,EAAAE,IAIA,IADAL,KAAAE,EAAAC,EAAAC,GACAK,EAAAC,QACAD,EAAAS,OAAAT,GAEA,GAAAL,EACA,IAAAI,EAAA,EAAYA,EAAAJ,EAAAM,OAA2BF,IACvCD,EAAAY,IAAAC,EAAAhB,EAAAI,IAGA,OAAAD,GAIA,IAAAc,KAGAV,GACAW,EAAA,GAIA,SAAAH,EAAAd,GAGA,GAAAgB,EAAAhB,GACA,OAAAgB,EAAAhB,GAAAkB,QAGA,IAAAC,EAAAH,EAAAhB,IACAG,EAAAH,EACAoB,GAAA,EACAF,YAUA,OANAN,EAAAZ,GAAAW,KAAAQ,EAAAD,QAAAC,IAAAD,QAAAJ,GAGAK,EAAAC,GAAA,EAGAD,EAAAD,QAKAJ,EAAAO,EAAAT,EAGAE,EAAAQ,EAAAN,EAGAF,EAAAS,EAAA,SAAAL,EAAAM,EAAAC,GACAX,EAAAY,EAAAR,EAAAM,IACAhB,OAAAmB,eAAAT,EAAAM,GACAI,cAAA,EACAC,YAAA,EACAC,IAAAL,KAMAX,EAAAiB,EAAA,SAAAZ,GACA,IAAAM,EAAAN,KAAAa,WACA,WAA2B,OAAAb,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAL,EAAAS,EAAAE,EAAA,IAAAA,GACAA,GAIAX,EAAAY,EAAA,SAAAO,EAAAC,GAAsD,OAAA1B,OAAAC,UAAAC,eAAAC,KAAAsB,EAAAC,IAGtDpB,EAAAqB,EAAA,GAGArB,EAAAsB,GAAA,SAAAC,GAA8D,MAApBC,QAAAC,MAAAF,GAAoBA","file":"static/js/manifest.b9eec7482e0ddb4a0954.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t3: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 40f481463c0df8d26d06"],"sourceRoot":""} \ No newline at end of file