zoukankan      html  css  js  c++  java
  • 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也是很苗条的。

  • 相关阅读:
    学会用google吧,,,
    HDU 2120 Ice_cream's world I
    ZOJ 3471 Most Powerful (状压DP)
    POJ 2192 Zipper
    我的闪存汇总
    Python For Delphi更好地协同(续)
    Python For Delphi更好地协同
    官方的正则表达式组件 RegularExpressions : 基本应用(转自万一博客)
    Thread: DataSnap detect disgraceful disconnect
    window7下安装IPython
  • 原文地址:https://www.cnblogs.com/admin11/p/217050.html
Copyright © 2011-2022 走看看