zoukankan      html  css  js  c++  java
  • 简单学习下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

  • 相关阅读:
    缺席多年的东哥,重回博客了
    使用VMware安装CentOS 7
    Linux CentOS 7 搭建 Tomcat 8 服务器
    海思HI3518EV200+AR0130开发板DIY——前篇
    Keyshot+AD渲染PCB效果图
    ESP8266/ESP32模块晶振频偏调试
    关于摄像头PCB图设计经验谈
    docker容器虚拟化技术
    数据分析章节(一):初始数学之美
    Nginx:反向代理
  • 原文地址:https://www.cnblogs.com/QLeelulu/p/1359161.html
Copyright © 2011-2022 走看看