• DNN瘦身 荣


    DNN中XXXXControler.vb就是通常说的商业逻辑层,XXXXInfo.vb就是petshop中的module。而XXXXProvider.vb就是数据访问层。
     XXXXProvider.vb文件类似于PetShop中的IDAL下面的接口,只不过它是通过Reflection来统一实现实例化,这点要比PetShop方便。
    XXXXProvider.vb文件都是抽象函数,所以可以根据配置文件来引用具体的实现类。为在其他项目中引用DotNetNuke提供了方便。
    以DotNetNuke.FAQs为例:
    DataProvider.vb就是数据访问层对象。
    FAQsController.vb是一个商业逻辑对象。
    FAQsInfo.vb是自定义业务实体。
    而EditFAQs.ascx、FAQs.ascx属于表现层。

    其实XXXXProvider.vb类似于petshop下IDAL中的接口.不过XXXXProvider.vb可以通过调用配置文件
    和Reflection类来实例化自己.
    具体代码:
    Private Shared Sub CreateProvider()
    objProvider = CType(Framework.Reflection.CreateObject("data", "DotNetNuke.Modules.Events", "DotNetNuke.Modules.Events"), DataProvider)
    End Sub
    这要比IDAL中的接口方便.

    按照这个思路,可以在DNN中找出两大类项目.
    一类是实现XXXXProvider.vb抽象类的项目,例如: DotNetNuke.Announcements.SqlDataProvider、
    DotNetNuke.Contacts.SqlDataProvider、DotNetNuke.Discussions.SqlDataProvider、DotNetNuke.Documents.SqlDataProvider、
    都属于这一类。这一类的特点是一般只有XXXXProvider.vb类,而该类继承自另一个抽象的XXXXProvider.vb类。
    另一类就是实现三层模式的项目,例如: DotNetNuke.Announcements、DotNetNuke.Contacts、
    DotNetNuke.Discussions、DotNetNuke.Documents、DotNetNuke.Events、DotNetNuke.FAQs、
    DotNetNuke.HTML等,都属于这一类。这一类的特点是有XXXXProvider.vb、XXXXControler.vb、,XXXXInfo.vb
    三种类,还有几个自定义控件。

    我统计了一下,
    实现三层模式的项目大约有13个,他们分别是:
    1 DotNetNuke.Announcements
    2 DotNetNuke.Contacts
    3 DotNetNuke.Discussions
    4 DotNetNuke.Documents
    5 DotNetNuke.Events
    6 DotNetNuke.FAQs
    7 DotNetNuke.HTML
    8 DotNetNuke.Links
    9 DotNetNuke.SearchInput
    10 DotNetNuke.SearchResults
    11 DotNetNuke.Survey
    12 DotNetNuke.UserDefinedTable
    13 DotNetNuke.UsersOnline

    实现XXXXProvider.vb抽象类的项目大约有19个,他们分别是:
    1 DotNetNuke.Announcements.SqlDataProvider
    2 DotNetNuke.Contacts.SqlDataProvider
    3 DotNetNuke.Discussions.SqlDataProvider
    4 DotNetNuke.Documents.SqlDataProvider
    5 DotNetNuke.Events.SqlDataProvider
    6 DotNetNuke.FAQs.SqlDataProvider
    7 DotNetNuke.HTML.SqlDataProvider
    8 DotNetNuke.Links.SqlDataProvider
    9 DotNetNuke.SearchInput.SqlDataProvider
    10 DotNetNuke.Survey.SqlDataProvider
    11 DotNetNuke.UserDefinedTable.SqlDataProvider
    12 DotNetNuke.UsersOnline.SqlDataProvider
    13 Provider.DNNScheduler.SQLDataProvider
    14 Provider.DNNSQLMembershipProvider
    15 Provider.DNNSQLProfileProvider
    16 Provider.DNNSQLRoleProvider
    17 Provider.Ftb3HtmlEditorProvider
    18 Provider.SqlDataProvider
    19 Provider.XMLLoggingProvider

    这是一份很粗略的统计,没有进行验证,不一定准确。这就是32个项目了.另外,就像那些HttpModule项目,
    基本上是实现了一个筛选器.在开始的时候,不一定不许对它进行了解,就像HttpModule.UrlRewrite,
    它就是实现了URL的重写,是一个独立的知识点,刚开始,就是不对它进行了解,也构不成什么困惑。
    综合以上,说明一个问题:
    虽然DNN看起来很庞大,但是有许多项目是类似的。就像以上的两类,我们只要
    弄清楚其中的一两个就可以了解其他的了。
    所以我们学起来也没有看起来的那么困难。
    如果这样给DNN瘦身,DNN也是很苗条的。

  • 相关阅读:
    函数
    python操作文件
    POJ-2689-Prime Distance(素数区间筛法)
    POJ-2891-Strange Way to Express Integers(线性同余方程组)
    POJ-2142-The Balance
    POJ-1061-青蛙的约会(扩展欧几里得)
    Educational Codeforces Round 75 (Rated for Div. 2) D. Salary Changing
    Educational Codeforces Round 75 (Rated for Div. 2) C. Minimize The Integer
    Educational Codeforces Round 75 (Rated for Div. 2) B. Binary Palindromes
    Educational Codeforces Round 75 (Rated for Div. 2) A. Broken Keyboard
  • 原文地址:https://www.cnblogs.com/admin11/p/217050.html
Copyright © 2020-2023  润新知