aehyok.com的成长之路三——框架结构

前言  

  首先奉上个人网站地址传送门:aehyok.com

aehyok.com的成长之路一——开篇 中主要阐述了自己为什么建立自己的网站,以及个人网站的大致方向。

aehyok.com的成长之路二——技术选型 中主要简单概括了自己搭建网站过程中使用或者以后可能使用的技术。

      本篇博客主要简单的来介绍一下,自己目前网站的架构,以及自己的一些想法。当然这其中很大程度受益于大神@郭明峰的开源框架以及他的指点。

框架项目结构简要说明  

1-Infrastructure(基础设施)

1、aehyok.Utility:通用技术工具类     

    说明: 分类封装通用的与技术无关的辅助工具类功能

    依赖项:无

2、aehyok.Model:各种实体类的定义            

    说明:1、业务实体模型                     

       2、数据传输模型                     

       3、展现视图模型

    依赖项:无

3、 aehyok.Core:aehyok框架核心组件

     说明: 1. 定义aehyok框架的核心,是整个框架运行的骨架。

         2. 该骨架提供数据存储、日志、缓存、权限等模块的基础接口或基类,不提供具体实现。

         3. 业务层依赖于此层的接口及基类进行业务操作,而不依赖于具体实现。

         4. 此层定义的接口与基类的具体实现,都是可替换的。以适应不同的业务对基础模块功能的需求。           

    依赖项:aehyok.Utility

4、aehyok.Core.Data.Entity:EntityFramework数据存储组件

       说明: 1.提供aehyok.Core中定义的数据存储功能的EntityFramework的实现方案

         2.数据库初始化策略

                      3.业务实体类映射

     依赖项:  1.aehyok.Utility

               2.aehyok.Model

         3.aehyok.Core

                      4.EntityFramework

2-Application(应用的接口和对应的实现)

5、aehyok.Contracts:服务契约层

    说明: 包含业务功能的接口的定义

      依赖项: 1. aehyok.Utility

           2. aehyok.Core

         3.aehyok.Model

6、 aehyok.Services:服务实现层

     说明: 包含数据功能初始化及服务业务功能实现

     依赖项:1. aehyok.Utility

           2. aehyok.Model

         3. aehyok.Core

         4. aehyok.Core.Data.Entity

         5. aehyok.Contracts

3-Presentation(各种可视化UI展现层)

7、aehyok.WebMvc和aehyok.Admin.Mvc:前后台Web 展现层

             说明: 前后台UI展现层

          依赖项:1.aehyok.Utility

                       2.aehyok.Model

                       3.aehyok.Core

                       4.aehyok.Core.Data.Entity

                       5.aehyok.Contracts 

                       6.aehyok.Services

4-UnitTest 

8、aehyok.UnitTest:单元测试

  说明: 单元测试还在学习摸索中

依赖项:各种可依赖。

简要说明:

  1、面向接口的方式来开发,然后通过IOC来接触模块之间的耦合。

  2、aehyok.Core:提供数据存储、日志、缓存、权限等模块的基础接口或基类。

      3、aehyok.Core.Data.Entity:EntityFramework数据存储组件,很明显该层是实现aehyok.Core中的数据存储组件的接口和基类。为什么这样设计呢?这样就可以很好的被替换掉,比如你现在的项目用的是EntityFramework开发的,项目经理突然说EntityFramework有这样的的问题满足不了我们系统,现在决定使用NHibernate,那么现在就只需要将该层进行研究实现,进行IOC注入就可以了,其他层的任何代码都不需要进行修改(自己想的暂时是这样的,不知道实现起来难度到底有多大)。

  4、aehyok.Core.Logging.Log4Net:Log4Net日志组件,该层也是实现aehyok.Core中日志组件的接口和基类。同样可以很好的替换掉。可以自己实现,也可以采用其他日志组件NLog等等吧,都是可以的。

      5、可能还有会Cache组件、权限组件,当然可能还会有其他的……按道理都是可以被替换的。

      6、aehyok.Contracts和aehyok.Services可以说是业务逻辑层吧。实现中调用各组件进行拼装完成需要的方法。供UI层进行调用即可。

      7、当然对于UI层的展现考虑最好也是可以被替换的。打个比方:现在后台用的是Bootstrap模版进行开发的,然后突然有个公司觉得这框架很不错,想来买你们的源码,但是他们对Bootstrap不熟悉,或者不想用Bootstrap,想用其他的前端UI框架。不清楚通过MVVM能否实现前端UI的良好解耦。

   8、可能还有其他未知的问题吧,暂时考虑的就这么多,还要在以后的实践中不断的思考不断的来完善吧,计划没有变化快,但没有计划怎么来的变化呢?

总结

   自己的小站还在持续不断的更新的,虽然更新速度如蜗牛般缓慢,但是网站还是在一天天的进步,自己也在一点点的积累。以上也只在于技术的学习,而不管其项目大小、技术学习成本等现实因素关联起来,其实我就是为了学习技术,让自己能够进步成长罢了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术博客

系统架构师-基础到企业应用架构-分层[上篇]

      大家好,接近一年的时间没有怎么书写博客了,一方面是工作上比较忙,同时生活上也步入正轨,事情比较繁多,目前总算是趋于稳定,可以有时间来完善以前没有写完...

1712
来自专栏iOS开发笔记

iOS开发之-调用系统打电话功能

调用系统打电话功能有点简单,不需要遵守协议和代理什么的,直接在执行打电话的方法里写上几句代码就可以了

2743
来自专栏BIT泽清

这十个步骤让你的 App 避规ios 4.3被拒问题,亲测顺利过审

ios开发子了解到,最近有大批开发者遇到了因为审核条款 4.3(后文统一简称 4.3)被 App Store 拒绝的情况。这种情况常见于大家上传CP,金融理财类...

9837
来自专栏张善友的专栏

推荐个找代码示例的VS 插件 All-In-One Code Framework Sample Browser

Microsoft All-In-One Code Framework 又称 1code,汇集微软开发平台中各个技术领域的范例程序代码,目前已经累积了超过六百多...

2488
来自专栏智能大石头

XCode v9.6.2017.0830

新生命团队基础框架X组件,包括网络、数据库、安全、多线程、反射、序列化、模版引擎、服务代理、远程过程调用等模块,包括Mvc后台魔方、超级码神工具、消息队列等子系...

1560
来自专栏技术博客

win7 64位系统及开发环境重装后的总结

   话说来这家公司之后就一直使用这个系统,现在感觉这系统跑的实在是有点慢了,运行,调试各种浪费时间呀,不过也用了将近20个月了,这也可以说是我用的最久的一个系...

1226
来自专栏指路者

为渗透测试准备的 10 大黑客工具评论(0)

Fiddler 是一个免费的 Web 代理工具,具有浏览器和平台不可知性的特点。它有许多功能用来辅助渗透测试人员。它是一个跨平台工具(几乎所有操作系统),允许用...

1471
来自专栏Web 开发

iOS抓包新姿势 – rvictl

其原理是将iOS设备的流量,像打日志一样复制一份到Mac上,在Mac上再通过Wireshark就能进行分析。这种做法,不像代理,不会干扰iOS设备正常的网络访问...

1140
来自专栏张善友的专栏

WinRT:WebAuthenticationBroker For OAuth认证

之前开发过QQ互联的OAuth 的.NET/Mono/Windows Phone SDK,具体可以 QQ互联OAuth2.0 .NET SDK 发布以及网站QQ...

2085
来自专栏图像识别与深度学习

《HTML5实战》Lesson11

Week12  2016/11/30上午1-4节 一、复习 二、使用地图 1、window.navigator 对象包含有关访问者浏览器的信息。 JavaS...

2183

扫码关注云+社区

领取腾讯云代金券