zoukankan      html  css  js  c++  java
  • 我的开发框架(WinForm)

    我的开发框架(WinForm)

    近来,看园子里,好多同学,展示自己工作中的开发框架,有的功能强大,有的短小精悍,我也来凑个热闹,望各位大侠指点一二。

    一、指导思想

         1、尽量减少程序员对数据库的依赖,或者说尽力少的写sql 语句。根据以前做项目的经验,大概10%的代码时间,在拼sql,主要是想利用现有的ORM技术,使得程序员能摆脱大部分拼sql的工作。

         2、支持多种数据比如Sqlerver、Oracle等。公司是做项目为主,不同的项目甲方要求的数据库可能会不同,所以必须支持多数据库。sqlserver和oracle是最常用的,优先支持。

         3、模块化,功能模块间可插拔设计。系统的各个模块间没有必然的联系,可以通过复制一个dll或几个dll,简单的配置一下权限,有的甚至不需要配置,即可使用。

         4、集成日志和权限功能。这两块是系统框架最基本的东西,必须有的。

         5、针对接口编程。有些功能不是从底层写的,是基于第三方的软件进行二次开发的,比如GIS,CAD,不同的项目,选用的平台会有不同。如果更换了二次开发的平台,那么将相关的接口再实现一遍,不影响其他模块。

         6、面向业务。做项目的公司,不做业务,就没饭吃了。因此,程序员的主要精力应该是理解业务和实现业务。

         7、要易于扩展易于部署。技术是不断发展的,业务也是不断变化的,不同的地区,不同的公司的业务是千差万别的,领导的想法也是不断变化的,因此必须容易修改,方便部署。

    二、框架设计

    下面是我针对CS模式的一个设计,

    image

    你也许已经看过很多架构示意图,我的这个算是比较简陋的一个了,但我觉得能说明的我的设计的东西。整个图分为三块:图例、整体结构、单模块结构。

    首先左上角的是图例,右上角的是一个模块的结构,下面的部分是整体的。

    先说说图例,蓝色方块 标示定义的接口,没有真正的实现代码。橙色方块是针对接口的实现。橙色到蓝色的渐变方块 是既有接口又有默认实现。

    模块分为3种:核心模块、非业务模块和业务模块。顾名思义,核心模块定义了一系列的通用接口,和部分默认的实现。非业务模块是指和业务无关的模块,用于支撑业务的实现。比如数据操作模块。主要封装数据库的操作。业务模块指针对项目的需求进行实现的模块。

    • 核心模块: Core模块,主要定义了数据操作的接口,日志接口、配置的接口、权限的接口。
    • 非业务模块:Data模块,这个模块主要实现针对实体的一个增删改查的操作,不同的数据库有不同的实现。
    •                Auth模块,实现权限管理的模块。

    在一个业务模块中包括以下内容

         Menu(菜单):模块汇总包括哪些菜单,或者说实现了哪些业务的功能。单击一个菜单后,执行什么操作,展示哪些界面等。

         Tool(工具条):模块包括哪些工具,执行什么操作,展示哪些界面等。

        Control:模块中的子界面。

    三、用到的技术

         基于.net4.0实现。用到的组件

         1、Mef。 插件机制的实现,.net4.0自带

         2、ServiceStack.OrmLite。 Orm映射的实现,之所以选他是因为,它是针对单表设计的,比较简单易用,不用配置。NHibernate配置太多,容易搞错,EntityFramework目前只支持Sqlserver,不符合要求。

         3、Autofac。Ioc组件

         4、Log4Net。这个不用多说了。

    四、项目组织

        不多说啦,上图

    image

    在实现过程中,增加了Common组件,提取通用的功能,Core.Map组件,提取地图相关的接口。

     
     
    分类: .Net
  • 相关阅读:
    5-python基础—获取某个目录下的文件列表(适用于任何系统)
    Automated, Self-Service Provisioning of VMs Using HyperForm (Part 1) (使用HyperForm自动配置虚拟机(第1部分)
    CloudStack Support in Apache libcloud(Apache libcloud中对CloudStack支持)
    Deploying MicroProfile-Based Java Apps to Bluemix(将基于MicroProfile的Java应用程序部署到Bluemix)
    Adding Persistent Storage to Red Hat CDK Kit 3.0 (在Red Hat CDK Kit 3.0添加永久性存储)
    Carve Your Laptop Into VMs Using Vagrant(使用Vagran把您笔记本电脑刻录成虚拟机)
    使用Python生成一张用于登陆验证的字符图片
    Jupyter notebook的安装方法
    Ubuntu16.04使用Anaconda5搭建TensorFlow使用环境 图文详细教程
    不同时区的换算
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3283234.html
Copyright © 2011-2022 走看看