随笔-119  评论-1060  文章-1  trackbacks-99

简单学习下Oxite的项目结构-1

Oxite出来有一段时间了,今天抽点时间看了下。项目的整体结构如下:

image

按顺序由上到下大概说一下吧。

image

Oxite项目算是一个核心的东西吧,分别来看一下:

image

BackgroundServices是一个后台服务类,为下图的Oxite.BackgroundServices项目服务:

image

具体的关系大概如下:

image

IBackgroundService接口提供一个Run方法,然后由BackgroundServiceExecutor使用Timer来管理Run()方法的执行、停止于超时处理。具体的实现就去看BackgroundServiceExecutor类和BackgroundServicesExecutor类吧。

Oxite项目下的Configuration文件夹,就是web.config中的Oxite配置节,没什么好说的,略过。

Oxite项目下的Data目录:

image

我们看到里面几乎全是接口。这是由于这里使用了Repository模式,同时为了和Linq2SQL配合,直接来看看Linq2SQL项目中的一些代码大概你就明白了:

partial class oxite_Tag : ITag
{
    #region ITag Members

    public ITag Parent
    {
        get
        {
            return oxite_Tag1;
        }
        set
        {
            oxite_Tag1 = (oxite_Tag)value;
        }
    }

    public Guid ID
    {
        get
        {
            return TagID;
        }
        set
        {
            TagID = value;
        }
    }

    public string Name
    {
        get
        {
            return TagName;
        }
        set
        {
            TagName = value;
        }
    }

    public DateTime? Created
    {
        get
        {
            return CreatedDate == SqlDateTime.MaxValue.Value ? (DateTime?)null : CreatedDate;
        }
        set
        {
            if (value == null)
            {
                CreatedDate = SqlDateTime.MaxValue.Value;
            }
            else
            {
                CreatedDate = value.Value;
            }
        }
    }

    #endregion

    partial void OnCreated()
    {
        CreatedDate = SqlDateTime.MaxValue.Value;
    }
}

注意上面的是partial类和partial方法。

在Data目录里面还有一个IOxiteDataProvider类,里面定义所以必须的Repository,Linq2SQL的DataProvider实现类图如下:

image

下面顺便看一下Oxite.LinqToSqlDataProvider项目:

image

Oxite项目下的Handlers目录主要就是XMLRPC(RPC是Remote Procedure Call的缩写,翻译成中文就是远程过程调用)和IMetaWeblog的实现,用于支持用Windows Live Writer之类的软件来发表文章。里面还有一个RedirectHttpHandler用于301跳转。

Oxite项目下的Routing文件夹:

image

这个就是将我们在Global.asax中的Route规则注册写到了这里(在OxiteRoutes类中),里面就是这东东:

image

同时实现了一些自定义的注册Route的时候用到的约束条件。要实现一个Constraint就是实现IRouteConstraint接口的Match方法就可以了:

image

Search目录自然就是搜索拉,没看,就不说了。

还有剩下的下图红框部分:

image

这些没什么好说的就不说了。

明天还要早起,睡了!剩下的后面补上。

Enjoy!Post By Q.Lee.lulu

作者:QLeelulu Follow QLeelulu on Twitter
出处:http://QLeelulu.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利
0
0
(请您对文章做出评价)
« 上一篇:关于iframe的name属性
» 下一篇:简单学习下Oxite的项目结构-2
posted on 2008-12-21 01:21 Q.Lee.lulu 阅读(4482) 评论(20)  编辑 收藏 所属分类: MVC, CMS

评论:
#1楼 2008-12-21 04:05 | Bēniaǒ      
SF,先收藏,空了在学习。
  回复  引用  查看    
#2楼 2008-12-21 09:06 | Karron Qiu      
这个项目现在被批评的厉害, 不能作为MVC的最佳实践来学习和模仿的.
  回复  引用  查看    
#3楼 2008-12-21 09:31 |       
@Karron Qiu

怎么说呢,没有看到多少负面的消息啊?

  回复  引用  查看    
#4楼 2008-12-21 11:03 | 麦舒      
看了一下aspx页面的代码,感觉又倒回到了asp年代。
  回复  引用  查看    
#5楼 2008-12-21 11:12 | 武眉博<活靶子.Net>      
使用了Repository确又套上一个Provider,我从第一眼看到这个代码到现在都没想通这样的的好处。
  回复  引用  查看    
#6楼 2008-12-21 11:53 | 大菠萝[未注册用户]
@麦舒
用控件做WEB永远不会成为主流的,你看看生成的HTML代码就知道。

  回复  引用    
#7楼 2008-12-21 12:44 | 阿滨       
大侠,web太大范围了吧.!wpf,sl,flex,javafx都是web的吧!!控件?请问这个里面哪个不是用控件!!,控件并不代表怎么怎么样!大型的.net网站都是用自定义控件!!,就算微软的站点也是,更不用说应用系统了.生产效率才提高了才是主流,java是主流吗?你可知道jsf?jsf基本和.net控件模型很像,hidden和viewstate也是一大堆!生成效率是什么!以前我们用锄头开田,现在用拖拉机!以前走路,现在开车,当然每一项效率的提高肯定会有牺牲一部分东西的!但是这个不重要
  回复  引用  查看    
#8楼 2008-12-21 15:46 | 武眉博<活靶子.Net>      
这东西引发了很多争论呢,这不,已经开杠了
去这里瞅瞅哈
http://blog.wekeroad.com/blog/some-thoughts-on-oxite/

http://blog.wekeroad.com/blog/oxite-refactor-take-1/

  回复  引用  查看    
#9楼[楼主] 2008-12-21 18:05 | Q.Lee.lulu      
@Karron Qiu
刚出来那天我瞄了下,确实没发现什么亮点,就没怎么理了,这两天见到有朋友写关于Oxite的文章,才又看了下...

  回复  引用  查看    
#10楼[楼主] 2008-12-21 18:06 | Q.Lee.lulu      
@武眉博&lt;活靶子.Net&gt;
我第一眼见到一堆的接口和Repository,还以为是用Ioc的,结果找了一圈没发现。

  回复  引用  查看    
#11楼 2008-12-21 19:49 | Jeffrey Zhao      
oxite_Tag
这种命名规则也能出现?

  回复  引用  查看    
#12楼[楼主] 2008-12-21 21:12 | Q.Lee.lulu      
@Jeffrey Zhao
Linq2SQL里面生成的,你看看Linq2SQL里面的DBML文件就知道了
在Oxite里面基本只用Oxite项目Data目录里面的接口型实体和Repository.

  回复  引用  查看    
#13楼 2008-12-21 21:38 | VisualStudio      
考完四级,来看看!
  回复  引用  查看    
#14楼 2008-12-21 21:52 | Jeffrey Zhao      
--引用--------------------------------------------------
Q.Lee.lulu: @Jeffrey Zhao
Linq2SQL里面生成的,你看看Linq2SQL里面的DBML文件就知道了
在Oxite里面基本只用Oxite项目Data目录里面的接口型实体和Repository.
--------------------------------------------------------
不管怎么生成的,这个命名方式就是在扯蛋啊。

  回复  引用  查看    
#15楼[楼主] 2008-12-22 10:21 | Q.Lee.lulu      
@Jeffrey Zhao
看看“武眉博<活靶子.Net>”提供的链接,有更多扯蛋的地方,哈哈....

  回复  引用  查看    
#16楼 2008-12-24 11:06 | 紫色永恒      
我靠来晚了 为什么!?
ohshit好啊

  回复  引用  查看    
#17楼 2008-12-30 10:13 | Ningdev[未注册用户]
刚开始接触ASP.NET MVC 正在看oxite.
哪位大侠你推荐一下关于ASP.NET MVC 最佳实践的项目吗?

  回复  引用    
#18楼 2009-01-20 17:45 | forefront[未注册用户]
请问类图使用什么画的?
  回复  引用    
#19楼 2009-03-07 11:08 | 郁闷的翩翩      
完全来晚了。。
  回复  引用  查看    
#20楼 2009-05-28 18:05 | lzlynn      
呵呵,完美的东西不多啊~继续关注中
  回复  引用  查看