Oxite 项目结构分析
Oxite中有6个Project,每个项目各自作为项目架构中的不同的层。下面我们来各自的分析一下这6个项目。
我们可以看到这六个项目分别是Oxite,LinqToSqlDataProvider,MVC,Test,OxiteSite,(Oxite.Database 需要安装SQL Server2005)。
1. Oxite
该项目中包含了Routing的定义,Model和Services服务层的代码,还有Oxite运行时的后台服务类,配置类,同时,在该项目中也定义了数据访问层的接口,但并没有实现。
- BackgroundServices 定义了插件的服务类,
- Extensions 则是各种常用方法的扩展,如IP地址,字符串,以及反射。
- Handlers 对HttpHandler进行重载的类。用于对用户请求进行操作。
- Infrastructure 本目录中有大量的类,定义了公用方法,
- Model 这个对OO来说最容易理解,就是对象的定义,在MVC中的M。
- Repositoris Oxite的数据访问层接口,使用了Repository模式,和Linq2SQL配合。
- Routing 对Routing规则的定义和扩展。,同时也有相应的约束。
- Services Oxite的服务层,也就是传统三层架构中的中间服务层。内有服务的接口和具体实现。
- Validation 一些常用的验证方法。
2. LinqToSqlDataProvider
This project contains implementations of all the repositories and uses LinqToSql for data access. Currently it doesn't map the database directly to the entity objects but rather to an intermediate set of objects which are then translated into the standard Oxite entites. This is one of the areas we're looking at changing in a future release.
该项目包据了数据访问层的实现,并用LinqToSql 进行数据库的操作。
这个Project中用到了LinqToSql,在项目架构中充当的是数据访问层的实现。
3. MVC
本项目中包含控制器和视图层的所有代码,用于Controllers到Views的数据通信,并包含用WCF所写的MetaWeblog API用于提供对外服务。
- ActionFilters 定义了各种拦截器
- Controllers 所有的Controllers都在这个目录下定义。
- Extensions MVC框架中的一些方法扩展 BlogML,DateTime,HtmlHelper,HttpCookie
- Infrastructure 基础类
- ModelBinders 作用是将客户端提交的一个数据转化成Model,简单或复杂类型。为Action生成复杂对象参数
- Results ?
- Services 对外的一些服务接口。
- Skinning 对主题皮肤操作的一些方法
- ViewModels 从Controller中的数据绑定到View时所用到。
- ContainerFactory 反射工厂
- OxiteApplication.cs 将Globle中的方法转移到这里,将Site项目只负责项目的显示。
4.MVC.Test
该项目定义了整个解决方案的测试类,使用Xunit.net 测试框架。
5.Site
该项目包含视图,主题和Web.Config文件。并将所有的C#代码放在了Oxite.Mvc项目中。
- Site项目中是没有C#代码的,只负责视图的显示。
- Content 一些公用的内容,像公用图片,公用脚本,公用资源
- Skins 皮肤。里面包含了主题所使用的样式文件和Scripts。 (我个人感觉将一些公用的Scripts放到Content下更合适。)
- Views 视图Shared 公用的东东。像Error,MasterPage
6. Oxite.Database
数据库项目,方便数据库架构、数据的对比、更新与部署。