在企业内部的ERP系统开发中,如果使用MS的技术,那么Winform + DevExpress + IIS + WCF +EF 就是懒人的黄金组合了,EF使用数据库优先,一般ERP应用主要关注点在数据,下面介绍的本人最近搭建的一个开框架,主要涉及UI、通讯、数据访问等,本框架不涉及那些让人迷糊OO,DI,AOP,ORM,基本上是个.net程序员都能搭建,而且皮实耐用,采用三层结构也提供了很好的扩展性(话说N年都没扩展过),当然也不防碍你往里面添加上面的DI,AOP,ORM等xxxx,如果你要折腾技术的话。

先说UI

当然要做出看上去不那么原始的UI,整套DevExpress是必须的

DevExpress使用简单功能强大(当然这些都是广告--学习还是要化力气的,不过最好化点小钱去买现成的中文学习资料省点力气自己折腾,珍惜生命把)
上面UI就是拖几个控件就搞定了,导航里面按系统分多个组,每个组里面是一个树形菜单,可以挂任意多功能

功能与菜单UI的数据库结构

主要有Funs与Catalog两张表,Catalog是一个多级分类表第一级就是上面菜单导航的组,而Funs是具体的功能,一般对应某个Form,程序里采用反射来创建窗体,这样你就可以把XX,YY系统,分装到不同的项目里(dll里),每个Fun需要指定挂到那个Catalog分类下,就是上面UI看到的。

关于权限控制:
   上面针对一类用户能建立一个FunsConfig,ConfigItems保存了该配置下有那些Funs,UI上根据分配的Funs生成对应的树型目录,(算法是,首先生成一棵完整的目录与功能树,然后使用Queue 遍历树,标记那些存在于ConfigItems表中的Funs,同时标记这些被标记节点的祖先节点,然后移除那些未标记的节点)当然你需要的话可以建立角色,然后将Funs关联到角色,用户再关联到多个角色。一般ERP框架中权限分配到模块就算完事了,如个别模块有数据权限的需求兄弟就自己写代码实现把,或者找那个“犀利哗啦日哥”买个。

项目的功能划分:
一般一套ERP可能涉及物流(采购,销售,仓库...),人事,生产管理,财务...等模块,项目做下来可能有N多的窗体,Service,接口等,  这个时候我们一般对按系统进行划分,建立多个项目,由于采用了三层结构每个功能模块一般有如下几个项目, xxx.Hr.Forms.dll, xxx.Hr.Models.dll, xxx.Hr.IService,xxx.Hr.Service.dll
相信从patshop学会所谓OOD宇宙真理的兄弟应该很容易看明白, Forms与是放在客户端的而Service是放在IIS上的,其他的两端都会部署的。

-----------------

这篇到这里,下一篇讲下WCF,怎么使用no svc 来避免一堆的xml(做个erp整百一个service是必需的),以及wcf中的认证,大数据传输的一些配置,后面再讲点数据库访问,数据库优化的东西当然都是适合2B程序员IQ范围的。

懒人的ERP开发框架--2B&苦B程序员专用的更多相关文章

  1. 苦B程序员的数据验证之路

    发生了什么事 在一次苦B程序员和苦C程序员的结对编程中发生的一段对话 代码是这样的: public void deleteAllExtendAclsFromContent(String content ...

  2. 给IT新男的15点建议:苦逼程序员的辛酸反省与总结

    很多人表面上看着老实巴交的,实际上内心比谁都好强.自负.虚荣.甚至阴险.工作中见的多了,也就习惯了. 有一些人,什么事都写在脸上,表面上经常得罪人,甚至让人讨厌.但是他们所表现的又未必不是真性情. 我 ...

  3. C# 嵌入dll 动软代码生成器基础使用 系统缓存全解析 .NET开发中的事务处理大比拼 C#之数据类型学习 【基于EF Core的Code First模式的DotNetCore快速开发框架】完成对DB First代码生成的支持 基于EF Core的Code First模式的DotNetCore快速开发框架 【懒人有道】在asp.net core中实现程序集注入

    C# 嵌入dll   在很多时候我们在生成C#exe文件时,如果在工程里调用了dll文件时,那么如果不加以处理的话在生成的exe文件运行时需要连同这个dll一起转移,相比于一个单独干净的exe,这种形 ...

  4. 联想Z470安装10.11懒人版成功!!特此分享!!

    折腾黑苹果也断断续续好几个月了,在远景也爬了好多贴,遇到问题基本上靠自己解决,自己组的台式机已基本完美,大学期间买的联想Z470现在是“食之无味,弃之可惜”,想想也来试试装个黑苹果玩玩,之前装过10. ...

  5. 【原创】窥视懒人的秘密---android下拉刷新开启手势的新纪元

    小飒的成长史原创作品:窥视懒人的秘密---android下拉刷新开启手势的新纪元转载请注明出处 **************************************************** ...

  6. 懒人小工具:自动生成Model,Insert,Select,Delete以及导出Excel的方法

    在开发的过程中,我们为了节约时间,往往会将大量重复机械的代码封装,考虑代码的复用性,这样我们可以节约很多时间来做别的事情.最近跳槽到一节webform开发的公司,主要是开发自己公司用的ERP.开始因为 ...

  7. 懒人小工具:T4自动生成Model,Insert,Select,Delete以及导出Excel的方法

    之前写了篇文章,懒人小工具:[自动生成Model,Insert,Select,Delete以及导出Excel的方法](http://www.jianshu.com/p/d5b11589174a),但是 ...

  8. 懒人小工具:T4生成实体类Model,Insert,Select,Delete以及导出Excel的方法

    由于最近公司在用webform开发ERP,用到大量重复机械的代码,之前写了篇文章,懒人小工具:自动生成Model,Insert,Select,Delete以及导出Excel的方法,但是有人觉得这种方法 ...

  9. 懒人小工具1:winform自动生成Model,Insert,Select,Delete以及导出Excel的方法

       懒人小工具2:T4自动生成Model,Insert,Select,Delete以及导出Excel的方法    github地址:https://github.com/Jimmey-Jiang/J ...

随机推荐

  1. 自定义redis session

    1.思路 2.程序实现 1.用户系统类 这里模拟一个蹩脚的用户系统类(userSystem),如下: #coding=utf-8 #Redis实现用户系统 __author__ = 'beginman ...

  2. graphql-yoga 项目简单使用&&集成docker

      graphql-yoga 是一个实现了grahql的框架,使用简单,便捷 具体源码参考github https://github.com/rongfengliang/graphql-yoga-do ...

  3. ballerina 学习二十四 监控ballerina

    ballerina 服务的监控还是比较方便的,以及集成了Prometheus Grafana Jaeger Elastic Stack 监控服务监控的集成 主要包含以下几个步骤 a. 安装docker ...

  4. 时间记录 APP:爱今天脑图

    时间记录 APP:爱今天脑图 爱今天 时间记录 以时间记录为主线 晨音 总结 目标 标签 统计 日统计 周统计 月统计 技能培养 一万小时定律 睡眠状态 番茄钟 时间间隔提醒 15 分钟 30 分钟 ...

  5. python删除x天前文件及文件夹

    #!/usr/bin/env python # -*- coding:utf-8 -*- import os, time, sys, shutil def delFiles(beforeSec, di ...

  6. 华硕主板P8H61(P8H61-M_LX3_PLUS_R2.0)成功禁用USB口

    公司大批这个型号的主板,在百度上搜索了一下,其中有一篇帖子说华硕客服说这个型号的USB控制XX是集成成南桥上面没法禁止. 经过研究发现官网上的0802版可以支持禁止usb,并且可以根据需要为每一个US ...

  7. C语言 字符串处理函数 转自 http://blog.chinaunix.net/uid-25885064-id-3175049.html

     C字符串处理函数 2012-04-13 18:14:16 分类: C/C++ void *memccpy (void *dest, const void *src, int c, size_t n) ...

  8. 黄聪:wordpress如何防止发布文章时候自动清除<P>、<br>换行标签

    1.安装[TinyMCE Advanced]插件 2.进入[后台]--[设置]--[TinyMCE Advanced]把这个选项勾上保存即可.

  9. 介绍一个开源的 C++ 开发框架 openFrameworks 。

    作为一个图形图像方向的研究生,我经常都在和 OpenGL .OpenCV 等多种 C++ 库打交道.这些库遵循着不同的规则和用法:另外,为了让自己的程序具有更多的交互能力,编写界面也是一个家常便饭的工 ...

  10. cuDNN下载地址和指南

    我出现了报错 Could not find 'cudnn64_7.dll'. TensorFlow requires that this DLL be installed in a directory ...