在企业内部的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. QLoo graphql engine了解

    参考架构图 处理流程 使用gloo注册服务api 发现断电以及serverless 函数 更新graphql schema 在qloo的resolvermap 中连接schema定义的字段 特性 不用 ...

  2. .net下所有DLL(API)查询,转换C#代码

    地址: http://www.pinvoke.net/default.aspx/coredll.SetDevicePower 实例: SetDevicePower (coredll)   coredl ...

  3. 黄聪:360浏览器、chrome开发扩展插件教程(2)为html添加行为

    转载:http://www.cnblogs.com/walkingp/archive/2011/04/02/2002668.html 上一节我们已经讲了Chrome扩展的基础知识,并构建了基础的htm ...

  4. charles 小米手机安装Charles证书

    1.手机Wi-Fi设置手动代理,添加IP和端口号 此处是:192.168.63.143:8888, 2.保存证书,PC端访问 chls.pro/ssl 下载pem证书,发送到手机 adb push c ...

  5. WebDriverAgent原理

    传输层:HTTP/HTTPS/HSF/Socket 安全性:HTTP/HTTPS 功能.单元 性能-限流.加服务器 目的:稳定的服务的TPS摸高测试(短时间的极限,不可持续) API接口测试-施压-服 ...

  6. 六.jQuery源码分析之jQuery原型属性和方法

    97 jQuery.fn = jQuery.prototype = { 98 constructor: jQuery, 99 init: function( selector, context, ro ...

  7. java构造函数是否可继承,以及子类构造函数可否不使用super调用超类构造函数

    问题一:java的构造函数能否被继承? 笔者初学java看的一本书说:“java的子类自然的继承其超类的“非private成员”. 通常java的构造函数被设置为public的(若你不写构造函数,ja ...

  8. RabbitMQ 信道(channel)挂掉,但连接仍然存在,同时出现错误:Received remote Channel.Close (406): PRECONDITION_FAILED - unknown delivery tag x 的问题

    该问题经过一番试验,发现是消费者(consumer)程序逻辑错误导致:在消息处理的回调函数中多次ack或nack. 开启Python日志,并在回调函数中两次ack得到如下信息: F:\software ...

  9. Linux安装Python虚拟环境virtualenv

    1.安装virtulenv.virtulenvwrapper包 pip install virtualenv virtualenvwrapper 2.virtualenvwrapper是virtual ...

  10. 配置mysql环境变量

    配置mysql环境变量(非必要) 说明:给mysql配置环境变量后我们就可以在cmd里运行mysql(开启.停止等操作) 1. 和其实环境变量的配置方法一样,我们打开环境变量配置窗口(组合键win+P ...