2.1 Web Parts
Web Parts组成【三部分】:描述此web part信息在XXX.webpart文件中,这个文件会部署到网站集的特定文件库中;Web part代码的 .dll; 服务器web config file中要为web part声明一个安全控件。
程序集放到GAC or BIN 中:推荐放到GAC中,首先GAC中要强签名,多个web application 可以使用GAC中的DLL不需要放各自的BIN中,当然这种需求会根据现实来决定,出于对server的保护和管理的话,放到各自的bin中会更优于GAC中,目前项目就是这样要求的,只能自己放自己的,GAC中的东西是非常共通的才可以。
注:自己创建的空白页添加web part后用spd打开可以看到web part的描述内容,但选择layout page创建出的页面用spd打开后只能看到layout的布局。
2.2 Web Part and Feature
把Web Part 打到Feature中,安装Feature后就可以增加webpart到页面中,如果web part是单独的wsp打到站中,需要在站内去加载这个web part然后才能在页面中找到它再增加它。
2.3 Web Part Connection
Web Part 间的关联:在方法上加attribute :[ConnectionProvider("XXX")];此方法则提供一个返回值,提供一个返回数据。
接收方法:在方法上加attribute :[ConnectionConsumer("Database")],此方法实现一个参数接收数据。
MOSS会动态检查Provider/Consumer在界面上提供选择。
2.4 Web parts要注意点:每个web part 都要handle exception,这样不会一个web part导致页面崩掉。
不要因为web part的性能影响到页面的整体性能。可以使用js做异步来不影响页面性能。
不 要信任客户输入的数据和内容,包括管理员;要防范js注入等。
2.5 Pre and Post Events
Pre 是ing形式,同步的,与页面线程是同步的。
Post 是异步的,Post事件不影响相应线程处理是异步在后台运行。
Item Adding:
2.6 Timer Job: job 建立时要在构造方法中指出job运行的type(spjoblockType),在一个服务器场中安装了job后,各个server都有job,那么运行时是只运行一个还是所有server都运行呢?类似list内容遍历的工作只要运行一次就行,因为运行一次访问DB一次就可!【实际中需要遍历文件,过期的将删除和发mail通知,就发生了服务器场中每台server都发一次mail,最后设spjoblocktype.job才是只运行一次】
2.7 Thread Limitation:
Job进程中线程数是有限的,每个job运行后要释放资源,
类似长时间周期的这种定时程序工作最后交给自己的job,不要使用moss的job.
注意job的异常处理,不要因为一个job的异常导致moss 的job线程崩掉影响到其它job处理。
2.8 Reporting Services Integration Add-in?
Reporting Services有插件可以集成到MOSS中, 要求MSSQL2005 Sp2 V9.003054版以上。
Reporting Services 与moss整合并不是重点,重点是report权限如何在moss中设定,原理就是使用web part的功能来限制。
我们的套路:先将角色和report设定好,然后在report中嵌入webpart,在web part中做check,做权限处理。