• Asp.net MVC 搭建属于自己的框架(一)


    网址:https://www.cnblogs.com/sggx/p/4555255.html

    为什么要自己搭框架?

      大家伙别急,让我慢慢地告诉你!大家有没有这种感觉,从一家跳槽到另一家公司,公司的框架往往是不相同的,这样你必须就得摒弃原来的,学习新的框架。

    问题是你用习惯了一种框架,比如封装的扩展方法、工厂模式、实体映射等等,你用得很爽,但是跳槽到新的公司,又得学习他们公司的框架,往往你在这上面

    要花费不少时间。

    所以我才有了搭建自己的框架的想法,我的框架用到了EntityFramework6.0+Asp.NET MVC4+Autofac等,下面是我的框架结构:

    MyFrame.Domain 实体模型层

    MyFrame.DataMapping 数据映射层:映射实体类和数据库表关系,数据库上下文存放在该层

    MyFrame.IDao 数据访问接口层

    MyFrame.Dao 数据访问层

    MyFrame.IService 业务逻辑接口层

    MyFrame.Service 业务逻辑层

    MyFrame.Common 通用扩展层

    MyFrame.Web UI层

    层与层之间的引用关系

      Domain(最低层)=》每个层调用;IDao=>Dao,Service; IService=>Service ; IDao,IService=>Web

    实体基类
      MyFrame.Domain.DomainBase:实体基类,实体类都需要继承DomainBase,现在这个类只有两个属性,等之后慢慢扩展完善  

     DomainBase

    数据访问基类接口 

    MyFrame.IDao.IDaoBase:封装了增删改查方法以及分页等

     IDaoBase

    数据访问实现基类

    MyFrame.Dao.DaoBase:需要继承IDaoBase,IDisposable

     DaoBase

    数据库访问上下文

    MyFrame.DataMapping.DataBaseContext

     DataBaseContext
     UserMap

    扩展帮助类

    MyFrame.Common.Helper:封装了一些常用的方法,我自己用起来比较顺手,增加自己的开发效率

     Helper

    分页控件

    我用得是PagedList,Nuget里搜索安装PagedList.MVC即可,然后自己封装了一下,封装得在DaoBase里SelectPageList()

    为了让这个控件扩展性更强,写了一个分部试图_PageList,定义了一个分页Model,

    为什么要自己写个而不是用它自己封装好的,因为后期页码可能需要跳转“首页”,”末页“等

     PageListModel
     _PageList

    分页css

     PageList

    怎么调用呢?跟调用分部试图方法一样,只是需要传进一个PageListModel

     Controller
     Index

    Autofac组件

    控制反转,类似于Ioc容器的组件,通过配置接口对应具体的实现类

    然后调用我们只需要调接口就行了,降低耦合性。

    组件Nuget里有自己下载安装就行

    在Globl.asax里配置

     View Code

    通过控制器里的构造方法,调用即可

     View Code

    其实配置接口对应哪个具体实体的关系,应该放到config文件比较好,这个后期再慢慢优化把。

    结尾

    这是一个初级版本,后期肯定要再好好完善,比如加入Transaction事务管理,排序,条件查询等等。

    大家如果有什么好的建议,尽管提,互相促进互相学习。

    转载请注明出处,谢谢!

    源代码下载地址:http://yun.baidu.com/share/link?shareid=2761504180&uk=2820969304

  • 相关阅读:
    135.002 智能合约设计-——多员工薪酬系统
    131.007 Unsupervised Learning
    131.006 Unsupervised Learning
    131.005 Unsupervised Learning
    135.001 智能合约设计-——单员工薪酬系统
    131.004 监督学习项目 | 为CharityML寻找捐献者
    131.003 数据预处理之Dummy Variable & One-Hot Encoding
    Chromebook 阿里云ECS 配置 jupyter Notebook
    Python之实现迭代器协议
    使用生成器创建新的迭代模式
  • 原文地址:https://www.cnblogs.com/zxtceq/p/9104501.html
Copyright © 2020-2023  润新知