图片 8

KingCMS 2009 安装模块

其一本子在装置模块时与事情发生前的版本不相同,以前的版本会将未设置的模块直接体现在后新竹。

 好几天没写这一系列了。工作原因。。。

前面几篇:

1.  DotNetNuke 5 C#版本解读之1--架构介绍 

2. DotNetNuke 5 C#版本解读之2--HTTP Modules

Asp.net Membership说明:

对于asp.net的开发人员来说asp.net membership 是再熟悉不过的了。相信很多项目中你都在使用membership来管理用户,权限组等。它是在.net framework 2.0

中开始加入的。

在framework 3.5中进行了安全性增强,目前它主要有如下几个功能:

1. 用户登录控件等。2.用户管理。3。Membership Provider和Roles Provider。

这些控件都已经在.net framework中封装好了。



如果你对membership不是很了解,提供你如下几篇文章,供参考:

http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx 

http://www.sosuo8.com/article/show.asp?id=850&page=0
http://www.silverlightshow.net/items/Leveraging-the-ASP.NET-Membership-in-Silverlight.aspx

http://mvcmembership.codeplex.com/

 

图片 1

其一本子中安装模块的不二等秘书技是加上模块时直接输入模块地址,暗中认可有八个模块:block(碎片)、dbquery(数据源)、portal(内容管理)、user(顾客系统)。若安装了
portal,则自动安装 user。

你在安装DNN时会有一步是选项你的membership
provider是使用SQL Server还Active Directory,默许是SQL Server。

  1. 前言Teamcenter Engineering是UGS
    集团花费的特别为公司提供成品数量处理的PDM软件系统,由叁个窗口办事分界面、生机勃勃组实用程序、三个并入开采工具包ITK和一个关周密据库管理种类组合,协助创设、存款和储蓄、检索和拘留在产物研究开发进度中选用的各样数据,对于产物设计、创造、测验等进程中的各样数码及相关的组织消息提供了集成的、安全的、可决定的有余会见路线。该系统采纳C/S
    布局,其顾客端和劳动器端均能够实行一回开荒以满意客户的非正规须求。此中,客户端接收JAVA
    语言开荒的客户界面层,相像它的二遍开辟也使用JAVA
    语言;服务器端的一遍开采则要利用ITK 工具包及C 语言,ITK
    实质上就是豆蔻梢头套经过包装的C 语言程序集。利用ITK 能够付出报表、顾客化TCEng
    接口、定制新窗体等。报表的自动化生成对同盟社成功实践PDM
    系统有注重轮廓义。就算TCEng 中PSE 程序管理BOM
    方面效率特别强盛,但贫乏对各样清单的出口和打字与印刷功效,其余,由于公司中间各个报表都有固定的模板和格式,举个例子产品按装配关系排列的任何图样清单;表示成品(组件、零件卡塔尔(قطر‎组成都部队分的代号、名称数量和素材等的清单;对产物及其组成都部队分按要求进行分类,收拾汇总而编写的清单等都有一定的格式。报表系统既要总括出相符要求的数量,又要使生成的报表切合规定的格式,并且要放手TCEng
    系统运转,达成无缝集成。本文对这么些意义的花销进度进展了详细的论述,以期对近些日子从事TCEng一遍开辟的人士具备助于。本文的支出基于自个儿院最近利用的Teamcenter
    EngineeringV9.1 版本,对别的版本的开采同样具备借鉴意义。2.
    一回开拓方法2.1 开垦工具及蒙受搭建客商端支出供给的工具为JDK1.4.2
    或越来越高;JAVA 集成开拓意况如:Eclipse,JBuilder 等。JBuilder
    是意气风发种十分科学的JAVA 开荒工具,但价格高昂;Eclipse
    是一个完全无偿的开源项目,同Eclipse 提供了plug-in
    的意义,而且Eclipse在财富占用率、响应速度方面都较JBuilder
    更为理想,在付出中选取了Eclipse。从Eclipse 官网中得以下载到最新的压缩包。使用前供给首先安装JDK,并安装JAVA_HOME
    及CLASSPATH 情况变量的值,然后解压缩到钦赐的目录就足以了。在Windows
    平台下,举例JDK 安装在C:j2sdk 目录下,Eclipse 安装在D:eclipse
    目录下。先安装条件变量JAVA_HOME=C:j2sdk,然后运维D:eclipse
    下的eclipse.exe
    就能够。Eclipse运行后需配置外部库文件、源文件夹名和出口文件夹名等,外界库文件路线为%PORTAL_ROOT%portal.jar,PORTAL_ROOT是指TCENG
    PORTAL 的安装路线,源文件夹名和输出文件夹名能够分级设为src
    和classes。然后采纳File-〉New-〉Project,那样,新建的工程下就有五个文件夹,源文件夹src
    和出口文件夹classes。服务器端的三回开垦要接纳ITK 工具包及C
    语言,须要安装VC,并设置MSDEV_HOME 情形变量的值。利用ITK
    开拓时,平日要用到以下多少个目录:1)可实施文件:在%TCENG_ROOT%bin
    目录下;2)头文件:在%TCENG_ROOT%include
    目录下;3)库文件:在%TCENG_ROOT%lib 目录下;4)编写翻译和连接脚本及ITK
    程序示例:在%TCENG_ROOT%sample 下;2.2 顾客端的一次开拓TCENG
    客商端的一遍开垦分为注册程序和花费顺序八个品级。对portal
    开垦来说,注册程序是多个要害的环节。所谓注册程序,正是要在TCENG
    的分界面上的某部程序组内增加程序入口,用于运转新开采的次第。无论是三次开荒,如故portal
    自己的原开销,都以透过那大器晚成挂号机制调用属性文件来定义应用程序的落到实处类、运维Logo、本地化标题等。2.2.1
    注册程序注册程序的切实落到实处步骤如下:1)在PORTAL 分界面上扩张二个新组
    :在PORTAL 安装路线下找到Portal_user.properties
    文件,在GROUPS=IMAN,IMANAdministrator,Utilities 的行末扩充新组名,
    如若为mytools ,
    如下所示:“GROUPS=IMAN,IMANAdministrator,Utilities,mytools”。重新开动Portal
    后可看出新添的组mytools,在组内可走入按钮以调用顾客程序。假诺无需追加新的组,可平素开展第二步。2)在组中加进顾客程序:a.
    运转Utilities
    组内的飞跃教导,然后输入应用程序名称,要是为mypro,并按下一步。b.
    在左边拉开有些组,譬如刚创建的组mytools,使客户程序的开关步向到该组,按下一步。c.
    输入顾客程序的包名,比方“com.mycom.mypro”,缺省值是“com.mypro”。然后单击某特别目录,系统就要该目录下活动创设与包名对应的子目录,并使全数与该顾客程序相关的源文件在该子目录下转移。系统在目录mypro
    中自动生成多个文件: mypro.properties 、mypro_user.properties
    、MyproApplication.java
    、MyproApplicationMenuBar.java、MyproApplicationPanel.java、MyproApplicationToolBar.java。前多少个文件是程序注册文件,客商可选取mypro_user.properties
    也可利用mypro.properties来注册程序,后面一个可覆盖后面一个。系统活动使用前者。后多个文本分别创制了四个应用类。要合并到portal
    的主次要有叁个基类,它应是类AbstractAIFUIApplication 的子类。d.
    按下一步后承担缺省的类名,按下一步,再按“Yes”按键以创设新类。然后用单击情势选拔Portal
    的安装目录,在这里个路子中包含portal.jar 等TCEng 的JAVA
    类库。按下一步后系统来得“成功创设程序”。这时候portal_user.properties
    系统登记文件自动修改,完毕顾客程序的登记。2.2.2
    开辟顺序通过登记之后的新程序只是二个框架,并不可能施行别的意义。程序开辟阶段就是对前述空壳源文件举办代码编写、调节和测量检验、编译的进程。所急需的工具正是java
    语言的编译碰着,满含JDK 或Eclipse 这样的java
    集成开垦条件等。本文直接行使JDK1.4.2 和IDE 工具Eclipse
    进行付出。当开采成功后,用%JAVA_HOME%binjavac
    命令编写翻译顾客程序,然后用%JAVA_HOME%binjar 命令打包java
    类、Logo文件、属性文件等。当然,也可以一向运用IDE
    工具进行编写翻译。最终,编辑portal.bat 文件,将顾客程序包涵到portal.jar
    从前,如下所示:Set JAVA_COMMAND_LINE=%JAVA_COMMAND%
    -DIMAN_DATA=%IMAN_DATA% %JAVA_HEAP_SIZE%-classpath
    “%IPR%;…%IPR%Mypro.jar;…%IPR%portal.jar;…%CLASSPATH%”。2.3
    服务器端的一次开拓服务器端的贰回开垦主假设动态链接库libserver_exits.dll
    和libuser_exits.dll,部署在%TCENG_ROOT%bin
    目录下。情状设置及支出进程以libserver_exits.dll
    为例表明如下:1)构建新文件夹server_exits;2)在server_exits
    目录下创制所需的程序文件;3)把%TCENG_ROOT%sample 目下的compile.bat
    和link_server_exits.bat 以及%TCENG_ROOT%sampleuserservice
    目录下的user_server_exits.c 和user_server_exits.h
    拷贝到新建的server_exits 目录下;4)运维TCEng Menu 到TCENG Dos
    情形下;也足以经过set 命令设置;5)编写翻译:compile
    –DIPLIB=libserver_exits
    *.c;6)连接:link_server_exits。经过以上步骤,在server_exits
    目录下生成libserver_exits.dll 文件,将之拷贝到%TCENG_ROOT%bin
    目录下就能够。3. 基于Teamcenter Engineering报表系统的希图达成3.1
    系统规划观念 由于表格系统内置PDM
    系统运行,三回开垦职业既有客商端的分界面设计,也要在服务器端实行二遍开垦完成数据提取及处理。该系统的宏图思路是:选拔顾客/服务器形式,利用TCEng
    portal 端提供的API 在portal
    窗口事产业界面上平添报表输出的菜单项,并支付近乎PSE 中BOM
    树形结构的挑精拣肥分界面供客商筛选要出口的子构件;在服务器端开荒动态链接库libserver_exits.dll,各个菜单命令响应对应Dll
    模块里面包车型客车某些主功用函数,动态链接库实现将急需的数据按必要排序汇中国人民解放军总后勤部提取到系统不经常文件目录下的中间文本文件中;最终,利用脚本来管理将中间文本文件的数码写入到已定制好的Word
    模版或Excel
    模版中。脚本和模版能够放在数据集中,调用时先把剧本和模版从数据汇总导出到一时文件目录下,动态链接库放在%TCENG_ROOT%bin
    目录下,客商端叁回开拓的jar 包计划在portal.jar 早前。3.2
    软件布局基于对报表系统的表格系统由七个模块落成:分界面交互作用部分是Java
    达成的,提取数额到中等文本文件是由C
    落成的,把高中级文本文件中的数据读取到定制的word 模版或excel 模版中是由VBA
    脚本达成的,如图1 所示。

顺手说一下,那个模块的文书地点也与以前的本子不一样,这一个版本中模块的岗位便是在根目录下。

 

图1 系统构造

DNN的Membership介绍:

主程序首借使响应交互作用分界面上的“鲜明”开关,重要功能是接纳客商筛选的BOMLine,并赢得动态链接库服务句柄,将BOMLine
调换为Object 对象之后,调用动态库中管理函数,然后将已定义好的word
模板文件或excel
模版文件黄岩乱弹本文件从数量汇总导出到有的时候文件目录下,利用java
的runtime.exec(State of Qatar方法实践脚本文件,由脚本来管理将中间文本文件的数目写入到word
模版文件或excel 模版文件,格式为:wscript.exe + 脚本文件 + 中间文本文件

本来DNN自身的数据布局以致它的局地Services注定了它不可能平昔使用.net提供的Membership。

  • 要转移的word 或excel 文件 + word 或excel
    模版文件,并在客商端直接张开生成的word 或excel 文件。3.3
    关键手艺及减轻方案3.3.1 交互作用分界面包车型地铁设计由于表格汇总涉及到汇总单层BOM
    和多层BOM,而PSE 中的BOM
    树形布局列出的是该产物下的保有装配音讯,未有提供对单层BOM
    的选料效能,所以有不能够紧缺通过二回开垦完成单BOM 的具备层集中、多BOM
    的单层汇总、多BOM
    的享有层聚焦。完成格局为经过带有复选框的树形构造格局在分界面上海展览中心示该BOMLine
    下的子BOMLine 新闻供客户选用。当选用单个BOMLine 及该BOMLine
    下的有所下层BOMLine 时,可达成单BOM 的有着层聚焦;当接收多个BOMLine
    而不接纳其下一级BOMLine 时,可落成多BOM 的单层汇总;当采用四个BOMLine
    及这么些BOMLine 下的兼具下层BOMLine 时,可完结多BOM 的具备层集中。3.3.2
    总括消息的获得报表汇总中必要领取的音讯可分为三有的,这三局地新闻的领取都是由此ITK
    函数达成的。风姿浪漫类音讯是在脚下的BOMLine 属性中的,那是BOMLine
    的原本属性,如bl_quantity 代表前段时间BOMLine 的多寡属性,这么些在PSE
    中可以开展加多大概涂改;另生机勃勃有的是BOMLine 所表示的item revision
    本人品质,如创设日期、创设人等,这一个音讯方可因而AOM_ask_value_函数获得其值;第三有的音讯留存于当下BOMLine
    所表示的item revision 的form 中,当用TCEng缺省的item
    类型创设叁个零件时,在查看器中呈现的代号、名称等就归属form
    新闻,能够在浏览器中查阅只怕涂改。要提取form
    中满含的音讯,首先必得透过当前的BOMLine 获取item revision,然后经过item
    reivision 获取本item 的form,末了经过此form
    的AOM_ask_value_函数来收获form 属性。其代码落成通常如下:获取BOMLine
    的质量bl_quantity:ifail = AOM_ask_value_string(bomline,
    “bl_quantity”, &quantity );获取form

    的属性Part_No:ifail=ITEM_list_rev_attachs_of_type(item_rev_tag,ITEM_item_master_atth,&number_found,&objects);for(i=0;i{ifail

    WSOM_ask_object_type(objects[i].attachment,object_type);if((strcmp(object_type,”ItemRevision
    Master”) == 0)&& (found ==
    0)){found=1;form=objects[1].attachment;break;}}if(found ==1)ifail =
    AOM_ask_value_string(form,”Part_No”,&partnoState of Qatar;3.3.3 client
    端与server 端的通讯机制UserService 机制可实以后client 端调用TCEng
    系统中登记的主次,并且UserService在通信层无需任何的构和平条限定,只需关怀server 端和client
    端的函数就可以。通过UserService实以往client端调用TCEng中注册的函数,供给如下多个步骤:1)在server端注册顾客内定的函数:UserService模块满含的ITK 函数USECRUISERSEXC90VICE_register_methods能够实今后TCEng
    系统server 端注册客户自定义的函数,通过编制user_server_exits.c
    文件中的USELX570SESportageVICE_register_methods函数实现,必要顾客提供要登记的函数名、函数指针、输入的参数个数、输入参数的品类及再次回到值的品类。其代码完成日常如下
    extern int USEQX56SE昂CoraVICE_register_methods(){USER_function_t create =
    createItemTest;int nArgs=2;int returnValueType;int
    *inArgTypes;inArgTypes = (int
    *)SM_alloc_persistent(nArgs*sizeof(int));inArgTypes[0] =
    USERARG_STRING_TYPE;inArgTypes[1] =
    USERARG_STRING_TYPE;returnValueType =
    USERARG_TAG_TYPE;USERSERVICE_register_method(“createItemTest”,
    create, nArgs, inArgTypes,returnValueTypeState of Qatar;}在那之中,createItemTest
    为客商自定义的函数名;create 为客商自定义函数的指针;nArgs
    为输入的参数个数;inArgTypes为输入参数的类型列表;returnValueType
    为再次来到值的门类。2)创建顾客自定义的函数:在server
    端客户自定义的函数中,利用ITK 函数USERA牧马人G_get__argument(卡塔尔(قطر‎ 获取client
    端的输入参数。其代码完成日常如下:int createItemTest( void *retValue
    ){int status = ITK_ok;tag_t itemTag = NULLTAG;tag_t revTag =
    NULLTAG;char *itemId=NULL;char *itemName=NULL;/* Get the first
    argument supplied by the user from the client */status =
    USERARG_get_string_argument( &itemId );/* Get the second argument
    supplied by the user from the client */status =
    USERARG_get_string_argument( &itemName );if ( status == ITK_ok ){/*
    call necessary ITK functions to create an item and get the item tag */
    …. …. ….}/* retValue will be sent back to the client program */*(
    (tag_t *卡塔尔(قطر‎ retValue 卡塔尔 = itemTag;return
    status;}3)在client端调用注册的函数:当客户自定义的函数在server端注册停止后,在client端可透过UserService的目的调用该函数。譬如要调用createItemTest,其代码完成日常如下:当用户自定义的函数在server端注册结束后,在client端可经过UserService的指标调用该函数。比方要调用createItemTest,其代码达成通常如下:IMANUserServiceaUserServ = sessionObj.getUserService(卡塔尔国objs = new Object[2];String
    itemId = new String(“testItemId”);String itemName = new
    String(“testName”);objs[0]=itemId;objs[1]=itemName;IMANComponent
    itemComp =(IMANComponent卡塔尔(قطر‎aUserServ.call(“createItemTest”,objsState of Qatar;4.
    尾声近期关于TCEng 壹回开采的材质相对很少,本文就TCEng
    一回开采的有关难题做了深入分析,并在这里功底上实现了表格系统的支付。报表的自行汇总功用已经上线运营,受到了两全人士的美评,利用报表汇总作用能够飞快、方便地生成图样目录、明细表和各种汇总表,满足了安排人士的例外供给,为PDM
    系统在设计部门的周到推广铺平了道路。文中提供的实践思路和方法已获得实施验证,能为任何客商举行客商化开辟时所借鉴。(end卡塔尔国

1.    Portals 和 应用程序:

DNN允许四个站点上有多少个portal,各样portal都有和好的客户和剧中人物管理,portal的独步一时标志是PortalID。默许的.net
membership/Roles
Porvider它并不扶植多少个portal各自具备和煦的顾客和剧中人物管理。

DNN开垦集团于是想到了四个措施撤除这些主题素材,便是让DNN的各样portal作为四个假造的Application使用。当像Membership/Roles
Provider发送央求时,传递过去的参数是PortalID,那样就能够获得当前那一个portal本人的Users和Roles。代码如下;

 图片 2

2.    Users和Roles的数据模型

设若完全采取Membership/Roles
Provider,那么客商和剧中人物管理的消息就不得不和DNN的应用程序的大器晚成部分安插数据存款和储蓄抽离,Membership须要有谈得来的数据存款和储蓄。比方:DNN恐怕是使用SQL
Server作为他的数据库来囤积数据和局部陈设等,可是Membership/Roles
Provider大概会别的格局来存款和储蓄顾客新闻和剧中人物消息。

事情发生早先大家做过三个体系是用DNN3.3.4的,客商供给利用Windows认证,所以立即就为了能够让DNN本地的密码和AD域的密码能同不平时间被领头化而花销了客商一笔钱做SSO。数据采访层你如若想让DNN的数量和membership的数量同不时候更新,是比较艰难的。
而在DNN后来的本子中,商业逻辑层的改换让位置那么些挂念都无要求了。

 
DNN的user消息表等不能够Membership的user新闻表代替是因为这几个表和其他的表关联相当的大。比方在User表中有个UserID字段,它是用来标示客商唯后生可畏的。基本上那么些字段在DNN的具有中央模块中都有用到。所以您即使前不久通通接收Membership的权能处理而甩掉DNN的User表,意味着任何中央模块都得更改。。。最后的实施方案是让DNN的表对应到Membership/Roles
Provider的表,如下图:

 图片 3

3.    Membership, Roles和Profile Providers

DNN5暗许的使用ASP.NET
SqlMembershipProvider使用的功用实在是System.Web.Security.Membership命名空间中的成效,然则它从不平昔调用这里的秘技而是调用了在DotNetNuke.Security.Membership那个命名空间中的SqlMembershipProvider方法。它是在原先的Membership方法底子上加码了让asp.net的表和DNN的表直接数据同步的功效。

1.  Membership Provider:

Membership
Provider的效能是与仓库储存进程通讯,能够把增加生产数量,删除,顾客身份ID明和改动密码。DNN的Membership
Provider是继续了System.Web.Security上边包车型大巴Membership类。Cs文件地点如下:

 图片 4

关键的艺术如下:

 图片 5

 

特性如下:

 图片 6

那么些属性的值能够再web.config中的membership节点部总布署:

<membership
defaultProvider=”AspNetSqlMembershipProvider”

userIsOnlineTimeWindow=”15″>

<providers>

<clear />

<add
name=”AspNetSqlMembershipProvider”

type=”System.Web.Security.SqlMembershipProvider”

connectionStringName=”SiteSqlServer”

enablePasswordRetrieval=”true”

enablePasswordReset=”true”

requiresQuestionAndAnswer=”false”

minRequiredPasswordLength=”7″

minRequiredNonalphanumericCharacters=”0″

requiresUniqueEmail=”false”

passwordFormat=”Encrypted”

applicationName=”DotNetNuke”

description=”Stores and retrieves
membership data from the local

Microsoft SQL Server database”
/>

</providers>

</membership>

2.  Role provider:

Role
Provider提供的效劳首借使扩展,删除叁个role,为有个别role加多或是删除user等。

 图片 7

在web.config中你能够安顿role
provider的路径:

<roles
defaultProvider=”DNNRoleProvider”>

<providers>

<clear />

<add name=”DNNRoleProvider”

type=”DotNetNuke.Security.Membership.DNNRoleProvider,

DotNetNuke.Provider.DNNProvider”

providerPath=”∼ProvidersMembershipProvidersDNNMembershipProvider”

/>

</providers>

</roles>

 

举个例子你有和好的Role
provider只需求转移这里的路线。

3.  Profile Provider:

那一个Provider首借使用来把客商的信息用存款和储蓄进度存款和储蓄到数据库,并能够由此顾客的ID获得用户的消息,以福利admin权限的顾客管理客户。

DNN5早前的本子中,Profile的习性都在web.config中安排,可是到了5有了退换,它新扩大了二个表叫ProfilePropertyDefinition。

您要是想定义自个儿的Profile
Provider,你能够在ProfilePropertyDefinition表中扩张本人的概念字段,比方部分顾客头像只怕是投机的经济贸易连锁的字段。

这种设计特别常有利现在的改换,极其是字段的长度已经正则表明式,显示顺序等都得以在表中定义:

 图片 8

 

 

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注