sharepoint对象模型性能比较
sharepoint的對象模型的屬性和方法有多種,可能對于一些初學者不明白他們之間有什么區別,那種更優越,在何種情況下用那種屬性或方法,通過這篇文章你會有所了解
?
1,splist
???????? 有些人喜歡通過列表的名字去獲得列表,
????????????using (SPSite site = new SPSite(strSite))
??????????? {
??????????????? using (SPWeb web = site.OpenWeb())
??????????????? {
??????????????????? SPList oList = web.Lists ["MyList"]
??????????????? }
???????????? }
??????? 這個例子中,代碼會先加載web下的所有OList,返回所有OList的title,然后去一個個比較title與listname后,得到OList;
using (SPSite site = new SPSite(strSite))
????? {
?????? using (SPWeb web = site.OpenWeb())
??????? {
????????? SPList oList = web.GetList("http://Site/list/AllItem.aspx")
??????? }
????? }
?? 在這個例子中,代碼先根據url返回列表的guid,然后再根據guid去找web下的list
2,SPListItemColliction
using (SPSite site = new SPSite(strSite))
??????????? {
??????????????? using (SPWeb web = site.OpenWeb())
??????????????? {
????????????????? SPList oList = web.GetList("http://Site/list/AllItem.aspx");
??????????????????? for(int idx =0; idx< oList.ItemCount; idx ++)
??????????????????? {
??????????????????????? string strLstItemName = oList.Items[idx].Name;
??????????????????? }
??????????????? }
??????????? }
在這個例子中,?? oList.Items[idx]每次都會加載一個SpListItemColliction,比如,如果你的列表有10000個Item,
oList.Items[idx]每次都會加載這10000個Item,這將會消耗不少內存去存這個SpListItemColliction;
?
using(SPSite site = new SPSite(strSite))
??????????? {
??????????????? using (SPWeb web = site.OpenWeb())
??????????????? {
?????????????????? SPList oList = web.GetList("http://Site/list/AllItem.aspx");
??????????????????? SPListItemCollection oListItems = oList.Items;
??????????????????? for(int idx =0; idx< oList.ItemCount; idx ++)
??????????????????? {
??????????????????????? string strLstItemName = oListItems[idx].Name;
??????????????????? }
??????????????? }
??????????? }
在這個例子中,先去得到一個SpListItemColliction,這個內存只需去加載一次SpListItemColliction
3,SPListItem in event handlers
public override void ItemAdded(SPItemEventProperties properties)
?{
? using (SPSite oSite = new SPSite(properties.WebUrl))
?? {
??? using (SPWeb oWeb = oSite.OpenWeb())
??? {
???? SPList oList = oWeb.Lists[properties.ListId];
???? SPListItem oListItem = oList.GetItemByUniqueId(properties.ListItemId);
??? }
?? }
?}
在這種情況下,我們多余的裝載對象消耗了APIs,并且將裝載一個SpListItemColliction,請看下面的方法:
public override void ItemAdded(SPItemEventProperties properties)
?{
? SPListItem oItem = properties.ListItem;
?}
這用該不用多說了吧
4,SPListItem Count
using (SPSite site = new SPSite(strSite))
????? {
?????? using (SPWeb web = site.OpenWeb())
??????? {
????????? SPList oList = web.GetList("http://Site/list/AllItem.aspx");
????????? int iCount = oList.Items.Count;
??????? }
????? }
oList.Items.Count,首先在內存中加載所有的items,并計算出Count;
?
using (SPSite site = new SPSite(strSite))
????? {
?????? using (SPWeb web = site.OpenWeb())
??????? {
????????? SPList oList = web.GetList("http://Site/list/AllItem.aspx");
????????? int iCount = oList.ItemsCount;
??????? }
????? }
ItemsCount是SPList的屬性,沒有過多的加載Items
5,Items
?
| SPList.Items.Count | ? SPList.ItemsCount |
| ? SPList.Items[Guid] | ? SPList.GetItemByUniqueId(Guid) |
| ? SPList.Items[Int32] | ? SPList.GetItemById(Int32) |
| ? SPList.Items.GetItemById(Int32) | ? SPList.GetItemById(Int32) |
列表左面的做了額外功,右面高效
轉載于:https://www.cnblogs.com/hqbird/archive/2011/05/12/2043948.html
總結
以上是生活随笔為你收集整理的sharepoint对象模型性能比较的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 应用程序虚拟化工具(VMware Thi
- 下一篇: hitool java_Hitool打开