![]() | |||||
SharePoint Object Model: SPSite ve SPWeb Sınıfları İle Çalışmak | 23.07.2008 14:54:00 | ||||
| Kategori : Office System Özet : MOSS 2007 alt yapısı kullanılarak gerçekleştirilen sistemler kurumların pek çok ihtiyacını karşılayabilecek yetenektedir ancak zaman zaman sadece MOSS 2007 ile gelen özellikler kurumların ihtiyaçlarına cevap veremeyebilir, ya da kurum içinde kullanılmakta olan bir uygulama MOSS 2007 ile entegre hale getirilmek istenebilir. Bu gibi durumlarda SharePoint'e programatik olarak erişme ihtiyacı ortaya çıkmaktadır. MOSS 2007 ile birlikte SharePoint'e programatik olarak erişmek amacı ile web servisleri ve SharePoint Nesne Modeli yazılım geliştiricilere sunulmaktadır. Bu makalemizde SharePoint Nesne Modeli içerisinde yer alan SPWeb ve SPSite sınıflarına deyiniyor olacağız. | |||||
MOSS 2007 alt yapısı kullanılarak gerçekleştirilen sistemler kurumların pek
çok ihtiyacını karşılayabilecek yetenektedir ancak zaman zaman sadece MOSS 2007
ile gelen özellikler kurumların ihtiyaçlarına cevap veremeyebilir, ya da kurum
içinde kullanılmakta olan bir uygulama MOSS 2007 ile entegre hale getirilmek
istenebilir. Bu gibi durumlarda SharePoint'e programatik olarak erişme ihtiyacı
ortaya çıkmaktadır. MOSS 2007 ile birlikte SharePoint'e programatik olarak
erişmek amacı ile web servisleri ve SharePoint Nesne Modeli yazılım
geliştiricilere sunulmaktadır. Bu makalemizde SharePoint Nesne Modeli içerisinde
yer alan SPWeb ve SPSite sınıflarına deyiniyor olacağız.
Şekilden de görüleceği üzere IIS altında yer alan Web Application'lar içerisinde SiteCollection'lar bulunabiliyor ve SiteCollection'lar içerisinde de Site'lar yer alıyor. Programatik olarak SiteCollection'lara erişmek için nesne modelinde yer alan SPSite ve Site Collection içerisinde yer alan sitelere ulaşmak için de SPWeb sınıfları kullanılıyor olacaktır. SPSite ve SPWeb sınıflarının kullanılabilmesi için MOSS 2007 kurulu olan bir makinede yer alan SharePoint dll'i uygulamaya referans edilmelidir. Varsayılan olarak kullanılacak olan dll C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\ISAPI yolunda yer alıyor olacaktır. Klasörde yer alan Microsoft.SharePoint.dll isimli dll Visual Studio ile yeni bir proje açılıp refere edildikten sonra dll içindeki isim uzayları (NameSpace) kullanılabiliyor olacaktır. Hiyerarşik yapının doğası gereği herhangi bir Site'a erişmek için ilk olarak SiteColection'a erişilmeli ve ardında da istenilen Site'a erişilmelidir. Bir SiteCollection'a erişmek için ilk olarak SPSite sınıfının bir nesne örneği oluşturulur ve yapılandırıcı metod içerisinde erişilmek istenilen SiteCollection'un URL'i belirtilebilir. Konuyu bir örnekle açıklamak için ilk olarak Visual Studio içerisinden bir Console uygulaması açıp Microsoft.SharePoint.dll isimli dll'i refere edelim ve ardından gerekli isim uzaylarını ekleyelim ardından da bir SiteCollection'a erişip bir kaç bilgisini yazdıracak olan ve ardından da SiteCollection içerisinde yer alan siteleri listeleyecek olan aşağıdaki kodları yazıyor olalım.
Yukarıda yer alan kodlarda ilk olarak SPSite tipinde bir nesne oluşturuluyor ve http://litwareportal isimli SiteCollection'a erişilmek isteniliyor. Oluşturulan nesne üzerinden ilk olarak SiteCollection'u taşıyan WebApplication'a erişiliyor görüleceği üzere bu özellik SPWebApplication tipinden bir nesne döndürüyor ve adı yazılyor. Bir SiteCollection içerisinde yer alan tüm sitelere erişmek için SiteCollection'un özelliklerini taşıyan nesne örneği üzerinden AllWebs özelliği kullanılabilir bu özellik de geriye SPWebCollection tipinde bir nesne döndürecektir. Yukarıdaki kodlarda yer alan ilk foreach ile SPWebCollection tipindeki nesnenin içinde yer alan siteler'in özellikleri listeleniyor ve içerde yer alan ikinci foreach içerisinde de sitelerin içinde yer alan listeleler görüntüleniyor. Uygulama çalıştırıldığında ekran görüntüsü aşağıdaki resimdekine benzer bir hal alacaktır.
Nesne modeli kullanılarak yeni bir SiteCollection oluşturmak için de aşağıdaki kodlar kullanılabilir. Kodlarda ilk olarak bir SiteCollection'ın adresi belirtilerek bir SPSite tipinde bir nesne oluşturuluyor ardından da bu SiteCollection'ın yer aldığı WebApplication elde edilip WebApplication içerisine yeni bir SiteCollection oluşturuluyor.
Kodlar incelendiğinde ilk parametre olarak oluşturulacak olan SiteCollection'ın Path'inin gönderildiği görülecektir. İkinci parametre olarak da SiteCollection oluşturulurken SiteCollection içerisinde yer alacak olan TopLevelSite adındaki root sitenin adı ve üçüncü parametre olarak da tanımlaması belirtiliyor. Dördüncü parametre olarak sitenin dili belirtiliyor bu alanda 1033 İngilizce'ye karşılık gelmektedir. STS#0 ile TopLevelSite'ın şablonu belirtiliyor ve ardından son iki parametre olarak da sitenin sahibi ve mail adresi belirleniyor. SiteCollection içerisinde yer alan bir sitenin herhangi bir özelliğini programatik olarak güncellemek için de aşağıdaki kodlar kullanılabilir.
Kodlarda daha önceliklerden faklı olarak OpenWeb() isimli bir metod kullanıldığı dikkat çekmektedir. Bu metod bir SiteCollection içerisinde yer alan bir sitenin nesnesini döndürür. Kodlarda görüldüğü gibi boş olarak kullanıldığında SiteCollection içerisinde yer alan ve SiteCollection oluşturulurken oluşturulan TopLevelSite'ın nesne örneği oluşturulur ve onun üzerinde işlem gerçekleştirilebilir. OpenWeb() metodunun OverLoad'larından bir diğeri de string olarak site URL'ini kabul eden bir metoddur. Bu metot aracılığı ile SiteCollection içerisinde yer alan bir Site açılıp üzerinden işlem gerçekleştirilebilir. SiteCollection içerisine yeni bir Site eklemek için de aşağıdaki kodlar kullanılabilir.
Yukarıdaki kodlarda da SPWebTemplateCollection isimli bir koleksiyon dikkat çekiyor bu koleksiyon Site template'lerini taşımak için oluşturulmuş bir koleksiyondur ve bir önceki satırda oluşturulan SPSite nesnesi içerisinde yer alan 1033 dilinde yani İngilizce'de yer alan şablonlar SPWebTemplateCollection tipinden oluşturulan nesneye alınıyor ve bir alt satırda da içlerinden daha bir tanesi daha sonra kullanılmak üzere SPWebTemplate tipinde tanımlanan nesne üzerine alınıyor. SiteCollection'a yeni bir Site eklemek için SPSite'ın AllWebs koleksiyonu kullanılıyot ve koleksiyonun Add metodu ile yeni bir Site ekleniyor, bu alanda metodun ilk parametresi sitenin URL'ini, ikincisi adını üçüncüsü de tanımlamasını ifade ediyor. Dördüncü parametre dili ve beşinci parametre de anlaşılacağı üzere sitenin şablonunu ifade ediyor. Bu alanda daha önce template isimli değişkende depolanan "BLOG#0" isimli template Blog Template'ini işaret etmektedir. Son iki parametreye false değeri atandığı görülmektedir bunlardan ilki site için ayrı bir güvenlik alt yapısının kullanılıp kullanılmayacağını belirtmektedir, false diyerek parent site'ın güvenlik ayarlarının bu site için de aynen uygulanacağını belirtmiş olduk. Son parametre ise belirtilen URL'in boş olmaması durumunda ne yapılacağını belirtmektedir, bu alanda false vererek daha önce belirtilen URL'in kullanılması durumunda hata mesajı fırlatılması sağlandı eğer true olarak belirtilirse belirtilen URL MOSS'un kullanacağı bir URL haline getirilip site oluşturuluyor olacaktır. Bu makalemizde MOSS'un nesne modeli içerisinde yer alan SPSite ve SPWeb
sınıflarına deyindik, ilerleyen makalelerde Nesne modeli içerisinde yer alan
diğer sınıflarıda ele almaya çalışacağız. | |||||
Yazgelistir.com | |||||