马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
因为各系统的API不同,代码调用API编写程序就会遇到很多不兼容的地方,比如net网页编程改写后的Serv-U就不能在手机上执行,手机的游戏也不能直接在微机上执行。SharePoint经由过程一系列WebServices来撑持互操纵和远程挪用,这里的SharePoint,我指的是WSS3.0(WindowsSharePointServices)和MOSS2007(MicrosoftOfficeSharePointServer)。有好几种办法来编程会见SharePoint,好比对象模子、WebServices、RPCoverHTTP、和WebDAV,一切这些体例基于使用程序的必要都有它们各自的长处和合用局限。SharePointRPC协定很有效也很壮大,出格在增加内容到服务器的时分,它的确有它的上风。对象模子比WebService更健全特征更丰厚,可是它不克不及供应远程操纵的撑持,因而若想利用对象模子,你的代码必需运转在SharePoint服务器上,而且你必需利用.NET言语来开辟。之以是要举行SharePoint数据的远程操纵,有几个分歧方面的缘故原由,不管是办理剧本,仍是诸如运转在客户端呆板上必要会见SharePoint内容的使用程序,大概在企业中的非SharePoint使用程序,都必要对SharePoint举行原创操纵。SharePoint的WebServices构建于对象模子之上,表露了对象模子里可用特征的一个子集,同意任何能“消耗”WebServices的言语战争台举行远程操纵。关于年夜部分义务,SharePoint所供应的WebServices都能满意,可是你也会发明一些对象模子中必须的操纵没有在WebServices中呈现,其要用自界说WebService完成的体例来扩大。在这篇文章中,我们将漫谈到在WSS3和MOSS2007中存在的一些开箱即用的WebServices,并报告怎样从Java和.NET中“消耗”它们。
WebServices构建概览
我不会过于深切WSS和MOSS之间的分歧点,已有大批的文章很好地注释了这个工具了,我们这里必要体贴的只是WebServices的区分。记着MOSS2007是构建于WSS3.0之上的,其有构建于ASP.NET,并运转于IIS(InternetInformationServer)中。对IIS和ASP.NET有深切的懂得是主要的,其有助于了解和利用SharePoint。我们将要会商的年夜部分SharePoint的WebServices是包括于WSS3.0中,但也有一部分分外的是包括于MOSS2007中,其使用了MOSS2007所供应的分外特征,如更初级的企业搜刮特征。
SharePointWebServices利用ASP.NETWebServices(ASMX)来完成,以是你会在"webserverextensions12ISAPI"(其一般位于C:ProgramFilesCommonFilesMicrosoftSharedwebserverextensions12ISAPI")之下的"MicrosoftShared"目次中找到这些WebServices中年夜部分的物理文件。用于办理中央工具的办理WebService位于ADMISAPI文件夹中,其在办理中央把持台里是一个名为"_vti_adm"的假造目次。当你创立了一个SharePoint站点时,它将包括一个名为"_vti_bin"的假造目次,以指向这个地位。IIS不为子站点包括任何使用程序或假造目次,它们只是包括经由过程SharePoint元数据和HttpModules完成的对_vti_bin假造目次的映照。
ASP.NET网站制作之SharePoint Web Services进门仓酷云
<br>
ASP.NET网站制作之SharePoint Web Services进门仓酷云
<br>
关于任何服务,你都能找到一个*.wsdl.aspx文件,其能够天生服务的WSDL(WebServicesDescriptionLanguage),一个*.disco.aspx文件供应会见发明完成,和一个实践的*.asmx端点文件,它们中的年夜部分只是包括了一个援用到实践完成服务功效的SharePoint程序集和范例的页面唆使符。
服务文件范例形貌*.wsdl.aspx(search.wsdl.aspx)在SharePoint中天生WSDL(WebServicesDescriptionLanguage)的文件*.disco.aspx(seach.disco.aspx)供应发明完成的文件*.asmx(search.asmx)WebServices端点文件,它们中年夜部分只是包括一个援用到实践完成服务功效的SharePoint程序集和范例的页面唆使符
开箱即用的服务
在SharePoint中,有良多WebServices是以OOTB(开箱即用,OutOfTheBox)的体例完成的,这能够完成年夜部分通用而基础的义务:从办理义务到搜刮,各处理列表数据等等。上面是一个可供你援用的SharePointWebServices的列表,和它们的大抵注释。相似如许的复杂列表经由过程让我对一切的服务和办法有一个疾速的懂得,从而匡助我更好的利用这些WebServices。
服务办理用处(_vti_adm/Admin.asmx)创立删除站点的办理办法,猎取被部署的SharePoint的言语
- CreateSite
- DeleteSite
- GetLanguage
- RefreshConfigCache
关照(Alerts.asmx)用于操纵SharePoint关照列表项的办法
考证(Authentication.asmx)客户端代办署理为利用窗体考证的站点供应用户考证的办法
- Login(用于考证)
- Mode(前往以后站点的考证形式)
复制(Copy.asmx)在站点之间或外部复制文件的办法
- CopyIntoItems(把文档以字节数组的情势复制到服务器上的某个地位)
- CopyIntoItemsLocal(在统一个服务器上把文档从一个地位复制到别的一个地位上)
- GetItem(创立文档的字节数组格局,以传送给CopyIntoItems办法)
文档事情区(Dws.asmx)办理文档事情区站点和数据的办法
- CanCreateDwsUrl
- CreateDws
- CreateFolder
- FindDwsDoc
- GetDwsData
- GetDwsMetaData
- RemoveDwsUser
- RenameDws
- UpdateDwsData
窗体(Forms.asmx)当事情于某个列表内容时,前往用在这个用户界面中的窗体信息的办法
- GetForm
- GetFormCollection
图象(Imaging.asmx)创立和办理图片库的办法
- CheckSubwebAndList
- CreateNewFolder
- Delete
- Download
- Edit
- GetItemsByIds
- GetItemsXMLData
- GetListItems
- ListPictureLibrary
- Rename
- Upload
猎取列表数据(DspSts.asmx)完成对站点和SharePoint中的列表的查询
- Query(完成对SharePoint列表和站点的查询)
列表(Lists.asmx)对列表和列表数据举行操纵的办法
- AddAttachment
- AddDiscussionBoardItem
- AddList
- AddListFromFeature
- ApplyContentTypeToList
- DeleteAttachment
- DeleteContentType
- DeleteContentTypeXmlDocument
- DeleteList
- GetAttachmentCollection
- GetList
- GetListAndView
- GetListCollection
- GetListContentType
- GetListContentTypes
- GetListItemChanges
- GetListItemChangesSinceToken
- GetListItems
- GetVersionCollection
- UndoCheckout
- UpdateContentType
- UpdateContentTypesXmlDocument
- UpdateContentTypeXmlDocument
- UpdateList
- UpdateListItems
集会(Meetings.asmx)创立和办理集会事情区站点
- AddMeeting
- AddMeetingFromICal
- CreateWorkspace
- DeleteWorkspace
- GetMeetingInformation
- GetMeetingWorkspaces
- RemoveMeeting
- RestoreMeeting
- SetAttendeeResponse
- SetWorkspaceTitle
- UpdateMeeting
- UpdateMeetingFromICal
职员(People.asmx)剖析和查找平安主体
权限(Permissions.asmx)处置站点或列表权限的办法
- AddPermission
- AddPermissionCollection
- GetPermissionCollection
- RemovePermission
- RemovePermissionCollection
- UpdatePermission
目次办理(sharepointemailws.asmx)办理举动目次e-mail分发组和他们的成员信息的办法
- ChangeContactsMembershipInDistributionGroup
- ChangeUsersmembershipInDistributionGroup
- CreateContact
- CreateDistributionGroup
- DeleteContact
- DeleteDistributionGroup
- GetJobStatus
- ModifyContact
- ModifyDistributionGroup
- RenameDistributionGroup
站点数据(SiteData.asmx)从站点或列表中前往元数据或列表数据的办法
- EnumerateFolder
- GetAttachments
- GetChanges
- GetContent
- GetList
- GetListCollection
- GetListItems
- GetSite
- GetSiteAndWeb
- GetSiteUrl
- GetURLSegments
- GetWeb
站点(Sites.asmx)前往关于站点集和站点模板的信息的办法
- ExportWeb
- GetSiteTemplates
- GetUpdatedFormDigest
- ImportWeb
搜刮(spsearch.asmx)利用搜刮服务举行搜刮的办法
- Query
- QueryEx
- Registration
- Status
用户和用户组(usergroup.asmx)操纵用户脚色界说和用户组的办法
- AddGroup
- AddGroupToRole
- AddRole
- AddRoleDef
- AddUserCollectionToGroup
- AddUserCollectionToRole
- AddUserToGroup
- AddUserToRole
- GetAllUserCollectionFromWeb
- GetGroupCollection
- GetList
- GetListAndView
- GetListCollection
- GetGroupCollectionFromRole
- GetGroupCollectionFromSite
- GetGroupCollectionFromUser
- GetGroupCollectionFromWeb
- GetGroupInfo
- GetRoleCollection
- GetRoleCollectionFromGroup
- GetRoleCollectionFromUser
- GetRoleCollectionFromWeb
- GetRoleInfo
- GetRolesAndPermissionsForCurrentUser
- GetRolesAndPermissionsForSite
- GetUserCollection
- GetUserCollectionFromGroup
- GetUserCollectionFromRole
- GetUserCollectionFromSite
- GetUserCollectionFromWeb
- GetUserInfo
- GetUserLoginFromEmail
- RemoveGroup
- RemoveGroupFromRole
- RemoveRole
- RemoveUserCollectionFromGroup
- RemoveUserCollectionFromRole
- RemoveUserCollectionFromSite
- RemoveUserFromGroup
- RemoveUserFromRole
- RemoveUserFromSite
- RemoveUserFromWeb
- UpdateGroupInfo
- UpdateRoleDefInfo
- UpdateRoleInfo
- UpdateUserInfo
版本(Versions.asmx)操纵文件版本的办法
- DeleteAllVersions
- DeleteVersion
- GetVersions
- RestoreVersion
视图(Views.asmx)操纵列表视图的办法
- AddView
- DeleteView
- GetViewCollection
- GetViewHtml
- UpdateView
- UpdateViewHtml
- UpdateViewHtml2
Web部件页(WebPartPages.asmx)操纵Web部件页的办法
- AddWebPart
- AddWebPartToZone
- AssociateWorkflowMarkup
- ConvertWebPartFormat
- DeleteWebPart
- ExecuteProxyUpdates
- FetchLegalWorkflowActions
- GetAssemblyMetaData
- GetBindingResourceData
- GetCustomControlList
- GetDataFromDataSourceControl
- GetFormCapabilityFromDataSourceControl
- GetSafeAssemblyInfo
- GetWebPart
- GetWebPart2
- GetWebPartCrossPageCompatibility
- GetWebPartPage
- GetWebPartPageConnectionInfo
- GetWebPartPageDocument
- GetWebPartProperties
- GetWebPartProperties2
- RemoveWorkflowAssociation
- RenderWebPartForEdit
- SaveWebPart
- SaveWebPart2
- ValidateWorkflowMarkupAndCreateSupportObjects
Web使用程序(Webs.asmx)操纵站点和子站点的办法CreateContentType
CustomizeCSS
DeleteContentType
GetActivatedFeatures
GetAllSubWebCollection
GetColumns
GetContentType
GetContentTypes
GetCustomizedPageStatus
GetListTemplates
GetWeb
GetWebCollection
RemoveContentTypeXmlDocument
RevertAllFileContentStreams
RevertCss
RevertFileContentStream
UpdateColumns
UpdateContentType
UpdateContentTypeXmlDocument
WebUrlFromPageUrl
MOSS搜刮(Search.asmx)经由过程MOSS(MicrosoftOfficeSharePointServer)搜刮服务举行搜刮的办法,它们也包括猎取被办理搜刮属性的办法
- GetSearchMetadata(Searchmanagedproperties搜刮办理属性)
- Query
- QueryEx
- Registration
- Status
消耗查询服务
如今,我们已对SharePointWebServices有了开端的懂得,以其通读用户手册还不如踢踢轮胎就开车上路了【译者注:意指先实践操纵一下比读完匡助手册好】。我们没有太多工夫来深切这些WebServices的一切方面,这些将会鄙人一篇文章中来具体会商。基于某些缘故原由,SharePoint的良多WebServices不是前往XMLNode就是XML编码字符串,不外不幸的是,它其实不能前往范例化的Schema,因而相干工具就不克不及经由过程剖析来主动天生更好的代办署理对象了。我已经看到过利用字符串格局的完成来办理范例化布局的缺点,也花了良多工夫和精神来找出能够形貌这些服务传进和前往的XML的一种Schema。我终极创立了queryresponse.xsd,它是我综合了文档和服务传进和前往XML的信息后,揣度出的一种Schema;它同意我利用.NET中的xsd.exe及java中的JAXB来天生代办署理类。
注重:我们之前会商了两个分歧的搜刮WebServices,MOSS中的search.asmx和WSS中的spsearch.asmx。这两个服务在Schema方面十分类似,但实验对运转MOSS的呆板挪用spsearch.asmx,会失掉一个非常,这是因为WSS索引和查询服务被禁用了,其已被MOSS中更初级的搜刮特征所替换了。
利用.NET的例子
从.NET中消耗SharePointWebServices是相称复杂而间接的,你只需复杂地增加Web援用,并利用天生的代办署理。不外,我们将多做一步来用XSD天生一组暗示查询和应对的类,其能序列化动身送和前往的XML。
设置VisualStudio2005来增加XSD.exe到菜单中
VisualStudio包括了一个名为XSD.exe的工具,其能被用于依据XSD天生.NET范例。不外这是一个命令行工具,但我喜好把他增加为VisualStudio的一个菜单选项,以便能在IDE中实行它。假如你已完成了这个步骤,大概你已有一些增加插件如许的履历,你就能够跳过这步。
- 翻开VisualStudio的“Tools”菜单上的“ExternalTools”对话框
- 点击“Add”
- 设置必要的属性并点击“OK”
属性值CommandXSD>>CSharpTitleC:ProgramFilesMicrosoftVisualStudio8SDKv2.0Binxsd.exeArguments$(ItemPath)/cInitialDirectory$(ItemDir)UseOutputWindowChecked
ASP.NET网站制作之SharePoint Web Services进门仓酷云
<br>
下载XSD文件
从这里下载用于天生处置哀求和呼应过程当中序列化成和反序列化的代办署理类的XSD文件。把下载的文件解压到事情目次;这个文件也包括了和完全的项目一同的XSD。
创立一个项目,并从XSD中天生.NET范例。如今我们已有了XSD,我们将创立一个WindowsForms项目,并从下载的XSD中天生.NET范例。在翻开Microsft.Search.Query.xsd以后,到工具菜单当选择我们上一步创立的XSD菜单项,以天生Microsoft_Search_Query.cs文件。
增加Web援用
我们如今能够经由过程在“solutionexplorer”右键点击我们项目标“references”节点,来增加针对搜刮WebService的Web援用了。这里我们将选择“AddWebReference”,在URL文本框中输出“http:///_vti_bin/spsearch.asmx”,然后点击“Go”。大概会提醒你登录到SharePoint服务器,随后便可失掉这个服务供应的办法列表。设置“WebReferenceName”为“SPSearch”,并点击“AddReference”。
ASP.NET网站制作之SharePoint Web Services进门仓酷云
<br>
天生代办署理子类
为了进一步简化开辟,我们将天生我们本人的代办署理子类,以便我们能利用我们从XSD天生的类来包装QueryService,以埋没Query办法传送和前往的XML的考证、序列化和反序列化事情。
创立挪用服务的使用程序
如今,我们能够复杂地实例化一个查询类和一个QueryService类,然后传送查询对象给QueryService类上的Query办法。- SPSearch.QueryServicesearch=newSPSearch.QueryService();Microsoft_Query_Requestrequest=newMicrosoft_Query_Request();search.Query(request);
复制代码 利用Java的例子
经由过程Java来消耗SharePoint的WebServices,没有太年夜的分歧;基本步骤基础是不异的,从我供应的XSD中天生我们的类,天生WebServices代办署理,并构建使用程序。经由过程Java来消耗SharePoint的WebServices,你所要面临的年夜部分应战是登录考证和SharePoint的WebServices中的DataSet的利用。有大批的JavaIDE能够简化WebServices的操纵,可是因为我今朝我次要事情于.NET中,以是我将演示一个利用SDK的例子,而在这个例子中关于IDE选择只好留给你了。
注重::这个例子是利用J2SE6.0Update3来构建和测试的。
ASP.NET网站制作之SharePoint Web Services进门仓酷云
<br>
JavaSharePoint示例项目目次和根文件
完全的项目和天生文件包括了一些批处置文件以便构建和运转这个例子。你必要编纂"xjc-build.bat"和"build-run.bat",设置个中的HOME变量为你的JDK的安装目次,以便能一般运转这些批处置文件;别的,在构建和运转示例之前,还要利用你的服务器设置信息(端点、用户名和暗码)来编纂wsspsample/Main.java。
导进服务的WSDL
因为几个缘故原由,我一入手下手就把WSDL从我的SharePoint服务器上取到了我的开辟呆板上。起首,我必要编纂利用ADO.NET数据集的任何WSDL,以使相干工具能准确处置它。其次,会见位于SharePoint服务器上的WSDL一样平常必要举行考证,而Java天生的代办署理在机关器中就必要会见WSDL,这会为我带来一些考证方面的成绩。
猎取搜刮服务的WSDL
在InternetExplorer翻开WindowsSharePointServices3.0的搜刮服务,并导航到“Error!Hyperlinkreferencenotvalid”上,然后从File菜单当选择SaveAs...,把这个这个页面保留到事情目次中,定名为spsearch.wsdl。假如你事情于MOSS2007,那末你将利用“Error!Hyperlinkreferencenotvalid”。
编纂搜刮服务的WSDL
MOSS2007的QueryEx办法和GetSearchMetaData办法都前往了ADO.NET数据集。ADO.NET数据集是静态包装和暗示WSDL中对Schema属性的轮回援用的,以是这会引发我们利用的JAXBwsimport工具的一些成绩。我发明这个成绩在JavaJDK之前的版天性一般处置,反而我如今利用的这个版本不一般。不外,我选择经由过程在记事本中编纂WSDL来办理这个成绩,就是在“element”元素中查找ref为"s:schema的"实例,然后删除轮回援用并保存Schema中的“any”元素。- <s:sequence><s:elementref="s:schema"/><s:any/></s:sequence>
复制代码 被变动为以下格局:- <s:sequence><s:anyminOccurs="0"maxOccurs="unbounded"/></s:sequence>
复制代码 导进WSDL
如今,我们已有一个当地的WSDL文件了,并举行了得当的修正,如许我们就能够利用JAXB的wsimport.exe工具来天生代办署理类了。- wsimport-pwsspsample.webref.spsearch-keepspsearch.wsdlwsimport-pwsspsample.webref.search-keepsearch.wsdl
复制代码 我们利用-keep标记,在导进的时分能够保存java代码以便我们能为我们的使用程序调剂天生的代码。这个工具利用相对路径来天生代码,以是假如你盘算挪动使用程序到分歧的目次下,并把WSDL和使用程序一同举行保留,那末我们必要编纂"webrefsearchQueryService.java"的Url,并本人机关它。为懂得决这个成绩,我们只需复杂地利用绝对路径来取代相对路径。- url=newURL("file:search.wsdl");
复制代码 天生哀求呼应类
为了天生哀求和呼应类,你必要利用4个我创立好的"Microsoft.Search"XSD文件,和JAXB的xjc.exe工具。鄙人面,我们作废了包级别标注的天生历程,而是指定了一个方针包,并用这个工具创立出我们必要的类。- xjc-npa-pwsspsample.xom.query-d.Microsoft.Search.Query.xsdxjc-npa-pwsspsample.xom.response-d.Microsoft.Search.Response.xsd
复制代码 利用天生的类
我们已有了代表传送到和从QueryService服务的Query办法前往的查询和呼应数据包的类,和Query服务的代办署理。如今,是时分来把它们用于使用程序里了。我们必要做的第一件事变是创立QueryService的实例,这个对象的机关器将猎取我们当地的WSDL正本,并加载个中的设置。从QueryService实例中,我们能经由过程getQueryServiceSoap办法猎取到QueryServiceSoap的实例。注重,你必要坚持getQueryServiceSoap的实例,并在我们处置qsp变量的时分利用它,这是由于getQueryServiceSoap办法老是会前往新的实例。在这里我们能编纂端点地点,以便完成比WSD所包括功效更多的事变,如许可让我们的使用程序加倍天真,从而同意这个使用程序能毗连到WSDL中未设置的其他SharePoint站点和子站点上。- QueryServiceqs=newQueryService();QueryServiceSoapqsp=qs.getQueryServiceSoap();BindingProviderbp=(BindingProvider)qsp;//bp.getRequestContext().put(BindingProvider.USERNAME_PROPERTY,"Administrator");//bp.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY,"pass@word1");bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,"http://barbie/_vti_bin/spsearch.asmx");
复制代码 如今,我们创立序列化查询数据包和反序列化呼应数据包的办法。- publicstaticStringSerializeQuery(QueryPacketqp){try{JAXBContextjc=JAXBContext.newInstance("wsspsample.xom.query");Marshallerma=jc.createMarshaller();ma.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,Boolean.TRUE);ByteArrayOutputStreamos=newByteArrayOutputStream();ma.marshal(qp,os);returnos.toString();}catch(JAXBExceptionex){return"";}}publicstaticResponsePacketDeserializeResponse(Strings){try{JAXBContextjc=JAXBContext.newInstance("wsspsample.xom.response");Unmarshallerum=jc.createUnmarshaller();StreamSourcesource=newStreamSource(newStringReader(s));return(ResponsePacket)um.unmarshal(source);}catch(JAXBExceptionex){returnnewResponsePacket();}}
复制代码 从这里入手下手,我们要来创立QueryPacket和所需的类,设置相干的值并挪用服务。- //CreateaSearchQueryPacketObjectQueryPacketqp=newQueryPacket();QueryTypeqt=newQueryType();ContextTypect=newContextType();QueryTextTypectt=newQueryTextType();ct.setQueryText(ctt);qt.setContext(ct);qp.setQuery(qt);//Setsearchvaluesctt.setValue("sharepoint");ctt.setType("STRING");//Thisisthedefault-notnecessaryctt.setLanguage("en-us");//Thisisthedefault-notnecessary//CallthewebservicequeryStringsResponse=qsp.query(SerializeQuery(qp));//DeserializetheresponseResponsePacketresp=DeserializeResponse(sResponse);
复制代码 构建并运转使用程序
我们已具有了天生的WebServices代办署理和查询哀求和呼应的对象模子,已利用它们的使用程序,如今我们只必要复杂地震动手指头,便可对其举行构建、运转和测试。你必要一个设置好的SharePoint服务器,并在Main.java中设置准确的端点地点,和能准确测试SharePoint服务器的登录凭证。
参考和链接
WindowsSharePointServices3.0WebServicesReference.
检察英文原文:GettingStartedWithSharePointWebServices
来自:http://www.infoq.com/cn/articles/swanson-moss-web-services
什么叫数据库怎么样?什么意思?你想单学数据库。(其实变成是我问的) |