开发并部署基于sharepoint portal server 2003web部件_第1页
开发并部署基于sharepoint portal server 2003web部件_第2页
开发并部署基于sharepoint portal server 2003web部件_第3页
开发并部署基于sharepoint portal server 2003web部件_第4页
开发并部署基于sharepoint portal server 2003web部件_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

开发并部署基于SharePointPortalServer2003的Web部件议程SharePointPortalServerWeb部件基本架构开发环境部署Web部件调试Web部件分发和管理Web部件开发Web部件的最佳实践Web部件的未来(Whidbey)MicrosoftOfficeSystem=Programs+Servers+Solutions+Services什么是Webpart用户角度WebParts是SharePoint页面中的功能模块内容管理者角度WebParts是用来进行信息发布的容器开发者角度WebParts是增强的ASP.NET服务器端控件,用来实现标准的SharePoint接口Web部件为所有的人带来好处用户和设计者使用预先开发好的组件组装强大的站点开发人员使用Microsoft.NET技术ASP.NETservercontrol技术通过Webservices,ADO.NET等熟悉的技术与数据交互.通过装配件XML配置文件进行部署花更少的时间用于杂事上开发的新功能用户可以直接应用到已有的站点上IT减少管理费用的同时为用户带来更大的价值降低琐碎事务的开发费用SharePoint中ASP.NET页面的RenderingApplicationpages(_layouts目录)运行于Directmode使用SharePointmanagedcodeobjectmodel,也访问部分unmanagedcode由IIS直接处理Userpages(定制的页面)运行于”Safemode”,不编译为dllWebpartframework

动态控制Webpart的加载IISASP.NETHandlerFilterConfigStaticPagesFrontPageRPCDAV.aspx.asmxHTTPRequestsASP.NETContentSharePointUnmanagedCodeDirectSafeISAPIExtADO.NETProfileServiceWebPartsFrameworkASP.NETPageZone2Zone1Zone3WebPartFrameworkContentDBASP.NETPageWebFormControlsWeb部件是一种WebCustomControls继承于Microsoft.SharePoint.WebPartPages.WebPartWeb部件页:SmartPage–

页面上的control是动态生成的URLofthepageIDofthecurrentuser(personalization)Web部件页只能运行于safemodeWebPartZonesWebPartZones内嵌于ASP.NET页面中WebPartZone里的WebPart存储于WebParts表里个性化设置存储于Personalizations

表里<WebPartPages:WebPartZonerunat="server"Title=“LeftZoneID=“…"Orientation="Vertical“AllowCustomization=“true”AllowPersonalization=“true”/>WebPart基类WebParts是一种WebCustomControls:PagerenderingPropertysettingsPost-backeventsStatemanagementChildControlWebpart里引用的ASP.NETcontrol必须重载System.Web.UI.Control.CreateChildControls()方法Controls.add()

protectedoverridevoidCreateChildControls(){ErrorLabel=newLabel();

ErrorLabel.Visible=false;

Controls.Add(ErrorLabel);

}WebPartRenderingASPXPageWebPartWebPart.Render(HtmlTextWrite)CustomPart.RenderWebPart(HtmlTextWrite)ASP.NETstartspagerenderRequestPushtopageWebPartRendering如果有childcontrol,则需从调用EnsureChildControls()开始RenderHTMLHtmlTextWriter.AddAttribute()HtmlTextWriter.RenderBeginTag()HtmlTextWriter.RenderEndTag()RenderchildcontrolControlName.RenderControl(HtmlTextWriter)ToolPaneTooPane:设置WebPart属性ToolPane包括默认属性自定义属性自定义ToolPartToolPartToolPane中控制WebPart属性设置的WebControlCustomPropertyToolPart自定义ToolPart继承Microsoft.SharePoint.WebPages.ToolPart自定义ToolPartUI:RenderToolPart()CustomWebPartPropertyBrowsable布尔类型;控制property是否在toolpane里显示CategoryProperty显示时的位置类别;不指定或指定为”Default”,则显示到“Miscellaneous“杂项栏里DefaultValueProperty的默认值DescriptionProperty描述,显示在tooltip里FriendlyNameProperty在toolpane里的显示名;如果不指定,则显示property的名字ReadOnly布尔类型。控制property值是否可更改WebPartStorage=Storage.Shared当页面处于共享视图时显示该property=Storage.Personal当页面处于共享视图或个人视图时显示该property=Storage.None该property不在页面上显示HtmlDesignerAttribute将property和某个propertybuilder关联GetToolParts()publicoverrideToolPart[]GetToolParts(){ToolPart[]toolparts=newToolPart[2];CustomPropertyToolPartcp=newCustomPropertyToolPart();cp.Expand("View");toolparts[0]=cp;

toolparts[1]=newWebPartToolPart();

returntoolparts;}连接两个WebPart符合兼容性、实现相应接口的两个WebPart可以连接到一起OppositePairProviderConsumer可在浏览器中设置连接ICellProviderICellConsumerIRowProviderIRowConsumerIListProviderIListConsumer只能在FrontPage中设置连接IParametersOutProviderIParametersOutConsumerIParametersInProviderIParametersInConsumer开发环境单台机器安装WindowsServer2003

两台或以上机器在WindowsXP上开发部署到WindowsServer2003本地VirtualPC或者VMWare虚机远程开发服务器服务器需求增加Web服务器角色启动ASP.NET不要启动FrontPageServer扩展可选:安装SQLServer2000或在其它服务器上有可访问的SQLServer2000安装WindowsSharePointServices缺省情况下,会安装微软数据库桌面引擎(WMSDE)同时,可以让WindowsSharePointServices使用已经存在的SQLServer实例开发客户端需求VisualStudio.NET2002或者2003忽略关于FrontPageServerExtensions的警告用于VisualStudio.NET的Web部件工程模板

从服务器复制对象模型DLL文件C:\ProgramFiles\CommonFiles\MicrosoftShared

\webserverextensions\60\ISAPIMicrosoft.SharePoint.DLLMicrosoft.SharePoint.Portal.DLLMicrosoft.SharePoint.Portal.SingleSignon.DLLMicrosoft.SharePoint.Portal.SingleSignon.Security.DLL部署Web部件手工CAB文件MSI文件部署Web部件:

方法1:手工拷贝assemblyDLL到两个位置之一特定IIS虚拟服务器的/bin目录下(如c:\inetpub\wwwroot\bin)GlobalAssemblyCache(如c:\windows\assembly)拷贝DWP文件到C:\Inetpub\wwwroot\wpcatalog拷贝资源文件到使用GAC放置Web部件时,

C:\ProgramFiles\CommonFiles\MicrosoftShared\webserverextensions\wpresources使用/bin放置Web部件时,

C:\Inetpub\wwwroot\wpresources部署Web部件:

方法1:手工(续)修改配置文件web.config注册为SafeControl选择CAS(CodeAccessSecurity)设置部署Web部件:

方法2:CAB文件CAB文件应该包含AssemblyDLLDWP文件Manifest.XML资源文件生成CAB文件利用VS.NET生成利用Makecab.EXE生成从CAB文件安装Web部件Stsadm.exe部署Web部件:

方法3:MSI文件所有CAB文件部署方法的特性,并且支持CAS(CodeAccessSecurity)能够通过控制面板卸载通过以下地址获取WPPackager.EXE在项目中增加WPPackager工具所需要的一些内容在项目编译后运行WPPackager工具调试Web部件方法直接Attach到W3WP.EXE进程实例上“自动”指示特定的Web部件页做为工程的startpage你实际调试的是这个页面,而不是Web部件的装配件为每个开发者配置一个服务器是比较理想的使用共享Web服务器时,不会因为调试而中断服务器的运行如果使用多个虚拟服务器,如何判定哪一个虚拟服务器是属于某个特定开发者是比较困难的Web.config中有一些有用的设置调试WebParts(续)部署Web部件到GAC中会使调试增加一些困难必须能够访问PDB文件可选方案:调试时部署到bin目录使用手工安装方案使用CAB方案时在使用stsadm……-globalinstall后用gacutil–i方式安装分发Web部件CAB文件使用STSADM,两步操作Stsadm–oaddwppack–filenamefilenameStsadm–oaddwppack–namefilenameMSI文件在每一台Web服务器上进行安装站点定义/模板可以包括定制的Web部件页需要在生成新站点之前将模板复制到每一台Web前端服务器管理Web部件跟踪使用情况排除错误的Web部件更新已存在的Web部件Web.config设置Web部件页URL参数SharePointConfigurationAnalyzer可以从站点上下载报告Web部件的使用情况Web部件页对象模型WindowsSharepointServices’

服务器端managedAPI扩展SPFileLengthByUserGetWebPartCollection()DeleteAllPersonalizations()SPWebGetWebPartCollection()SPFileCollection增加的WindowsSharepointServices对象SPUserStorageSPUserStorageCollectionWeb部件页对象模型(续)SPWebsite=SPControl.GetContextWeb(Context);SPWebPartCollectionwebPartCollection=site.GetWebPartCollection(

"default.aspx",Storage.Shared);Web部件页对象模型(续)SPWebPartCollectionStorageAdd()Delete()DeletePersonalizations()DeleteAllPersonalizations()SaveChanges()CacheInvalidate()Web部件使用率报告演示Web.Config设置允许调试<SharePoint><SafeModeCallStack=“true"/><system.web><customErrorsmode="Off"/>修改站点的信任级别<system.web><trustlevel="WSS_Minimal"originUrl=""/>Also“WSS_Medium”or“Full”Web.Config设置(续)在<SharePoint>下关于Web部件的其它设置<SafeModeMaxControls="50"CallStack="false"/><WebPartLimitsMaxZoneParts="50"PropertySize="1048576"/><WebPartCacheStorage="CacheObject"/>also“Database”or“None”<WebPartWorkItemTimeout="7000"/><WebPartControlsDatasheetControlGuid="65BCBEE4-7728-41a0-97BE-14E1CAE36AAE"/>可以将Office2003的缺省数据表视图控件替换为你自己的控件<OnlineLibraryUrl=""/>在SharePoint管理中心中也可以进行设置Web部件页URL参数非常有用的参数:Contents=1

对Web页中所有Web部件进行维护的视图PageView=SharedPageView=Personal其它一些参数可以进入工具面板以便进行添加Web部件等操作开发Web部件的最佳实践在MSDN网站上可以下载

会不断补充和完善处理所有的异常privatevoidSetSaveProperties(){

if(this.Permission!=Microsoft.SharePoint.WebPartPages.Permissions.None)

{

try

{

SaveProperties=true;

}

Catch(Exceptionex)

{

//SettingSavePropertiescanthrowmanyexceptions.Twoexamplesare:

//1)SecurityExceptioniftheuserdoesn'thavethe"ObjectModel"

//SharePointPermissionorthe"UnsafeSaveOnGet“SharePointPermission

//2)WebPartPageUserExceptioniftheuserdoesn'thavesufficient

//rightstosaveproperties(forexample,theuserisaReader)

errorText=ex.Message;

}

}}在显示和修改用户界面时检查用户权限用户有时不能按照你的设计来使用Web部件用户只是读者Web部件没有放在Zone中用户是匿名的在保存属性之前检验属性的合法性属性可以在很多的地方进行修改在DWP文件中在工具面板中在兼容的编辑器如MicrosoftOfficeFrontPage2003中使用WebPartPagesWebservice进行编辑返回给用户友好的错误信息截获错误异常If(exisWebPartPageUserException){

errorText=ex.Message}注册客户端的脚本文件将脚本放置在独立的脚本文件如:separate.js中打包到资源文件中在Web部件代码中,使用page的RegisterClientScriptBlock方法来注册脚本指定Web部件中的哪些属性可以导出用户可以在导出的DWP文件中看到Web部件的所有配置信息,除非你注明不许为敏感属性设置ControlledExport标志如:[WebPartStorage(Storage.Personal,ControlledExport=true)]Web部件实例的所有者可以设置或清除

“允许导出敏感属性”在工具面板的“高级”分类中实现IDesignTimeHtmlProvider接口如果不的话,在FrontPage中会报告“该部件没有预览视图”在Class声明中增加IDesignTimeHtmlProvider实现publicstringGetDesignTimeHtml()与RenderWebPart基本相同,但没有HtmlTextWriter参数让用户易于使用属性FriendlyNameAttributeDescriptionCategory应避免缺省值“杂项”Example:[Category(“CustomerInfo"),DefaultValue(defaultCustId),WebPartStorage(Storage.Personal),FriendlyNameAttribute(“CustomerID"),Description(“TheIDofthecustomeryou’dliketosee"),Browsable(true),XmlElement(ElementName="MyString")]关于工具面板的更多建议使用CustomPropertyToolpart或WebPartToolpart的Expand方法来展开指定的分类使用Hide方法隐藏指定的分类将分类在面板中进行排序通常,你会希望你定制的属性放在最前面对所有输出使用HTMLEncode特别是用户输入的内容避免恶意的脚本攻击例如:protectedoverridevoidRenderWebPart(HtmlTextWriteroutput){

output.Write("<fontcolor='"

+this.Color+"'>“

+"Yourcustomtextis:<b>"

+SPEncode.HTMLEncode(this.Text)

+"</b></font><hr>");}保存属性时检查Web部件区域的属性WebPartZone属性AllowCustomization对于共享视图AllowPersonalization对于个人视图LockLayout为真时,不能修改AllowRemove,AllowZoneChange,Height,IsIncluded,IsVisible,PartOrder,Width,ZoneID在代码中获取WebPartZone:

WebPartZonemyParent=(this.Page.FindControl(this.ZoneID));

为定制的属性使用简单类型保证在从XML中获取或当导出到XML时不出现任何问题使出现在工具面板中的属性互不依赖无法但保属性在工具面板中的出现顺序如果有两个属性都可以被设置,并且一个依赖于另外一个,当用户点击“应用”时可以能出现不希望的结果让Web部件更容易被搜索在搜索Web部件时,使用标题和模述字段可以还可以为你的Web部件提供图标PartImageLarge提供预览管理员在顶级站点通过网站设置

网站管理

管理Web部件库再点击某Web部件,应该可以看到预览效果在RenderWebPart中可以增加以下代码进行判断if(this.Parent.GetType().Fullname="Microsoft.SharePoint.WebPartPages.WebPartPreview")可以显示一个图片提高Web部件的性能Web部件页在完成所有Web部件渲染后才会返回给客户所有的Web部件串行调用当有Web部件需要用很长时间来访问数据时会对用户造成影响通过RegisterWorkItemCallback来异步处理数据页面还是必须在发送前完全构造完毕,但Web部件可以并行处理数据管理员在web.config可以设置超时时间如果要支持Web部件连接的话,需要多做一些工作缓存管理员在Web.Config中设置None(不做缓存)Database(对象必须可以序列化,对于服务器场比较适合)CacheObject(缺省设置,适用于单台服务器)缓存内容包括SharedPersonalWebPart基类中提供了一些方法PartCacheRead()PartCacheWrite()PartCacheInvalidate()本地化为用户显示的字符串FriendlyName,Category,Description属性在工程中增加Assembly资源文件为每一个属性增加ResourceAttribute来指定上面列的3个属性,如:

[ResourceAttribute(“1”,”2”

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论