随笔 - 153  文章 - 1  评论 - 1722  阅读 - 215万

简单学习下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

posted on   Q.Lee.lulu  阅读(6741)  评论(20编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
< 2008年12月 >
30 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 1 2 3
4 5 6 7 8 9 10

点击右上角即可分享
微信分享提示