6 Kasım 2009 Cuma

SP 2010 ile Beraber gelen İlişkisel Liste Desteği

WSS3 ile çalısırken ilişkisel listeler yaratmak desteklenmiyordu. Bu amaçla bir çoğumuz lookup fieldlar kullanmıstır. Veri tutarlılığı(referential integrity) sağlamak biz kendimiz birşeyler yapmadıkça desteklenmiyordu. Sharepoint 2010u geliştirenler bunu dikkate almıslar ve bir takım yeni featurelarla gene lookup kolonları baze alarak bir takım geliştirmeler sağlamışlar.
Lookup tipte bir kolon yaratmak istediğinizde, bir takım yeni seçenekleriniz olduğunu göreceksiniz. Gene hangi listeye lookup yapacağımızı ve value fieldımızı seçerken, sayfanın alt kısmında Veri tutalılığını koru gibi bir opsiyon sunulmuş( Maintain referential integrity).Bu opsiyonla ana listeden bir item silindiğinde bunun çocuk listeye de aktarılması ya da çocuk listede item varsa parent listede bu silme operasyonun engellenmesi gibi özellikler sağlanabilmekte.
Bununla kalmıyor geliştirmeler! Çocuk listede ana listedeki içeriği görüntülemek isteyebiliriz. Mesela faturalar listesine bakarken faturanın idsi haricinde fatura üzerindeki ismi de görüntülemek isteyebiliriz. Daha evelki versiyonda, bu amaçla listeyi sorgulayıp linq veya başka bir şeyle join yapmak için custom kod yazmamız gerekiyordu. Bilginize.. CAML artık join leri destekliyor, her ne kadar artık LINQ TO Sharepoint kullanıcağımız için camla pek gereksinim duymayacağımızı düşünmeme rağmen bu bilgiyi de vermiş olayım.. Neyse fazla dağılmadan konumuza dönmek gerekirse Sharepoint 2010 sürümünde çocuk listede Parent Listedeki birden fazla site kolonunu viewlarınızda kullanıp farklı viewlar hazırlayabiliyorsunuz..

Sharepoint 2010: 12 Hive+2= 14 Hive

Sharepoint 2007 ile çalışanlar için 12 Hive yani C:\Program Files\Common Files\Microsoft Shared\Web Server Extension\12 adresi belleklere kazınmıştır. Artık bu adresi C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14 ile değiştirebilirsiniz.Belli ki Microsoft 13 numarasının uğursuzluğunu düşünmüş. Artık bu folder üstünde bir çok işlem gerçekleştireceğiniz folder oldu anlayacağınız. Gerçi yeni Visual Studio 2010 tools ile bu foldera çok sık olaak girmek zorunda kalmayacaksınız. Bu postumda 14 hive ile ilgili gözüme ilk çarpanlar hakkında bir özet geçeyim istedim. 12 altındaki folderlar 14 hive da da korunmuş fakat bir kaç yeni folder eklenmiş.

14Hive da 3 tane yeni folder dikkatimi çekti.
* UserCode
* WebClients –Client OM için kullanılıyor sanıyorum
* WebServices – Bir çok yeni .svc dosyası içeriyor

ISAPI Folderında hangi assemblylerin bulundugu ilginizi çekiyorsa aşağıdaki listede bunu bulabilirsiniz. Henüz rastlamamama rağmen, bazı sınıflar farklı dll ler içine geçmiş.

* Microsoft.BusinessData.dll
* Microsoft.Office.DocumentManagment.dll
* Microsoft.Office.Excel.Server.Udf.dll
* Microsoft.Office.Excel.Server.WebServices.dll
* Microsoft.Office.Policy.dll
* Microsoft.Office.SecureStoreService.Security.dll
* Microsoft.Office.Server.dll
* Microsoft.Office.Server.Search.dll
* Microsoft.Office.SharePoint.ClientExtensions.dll
* Microsoft.Office.UserProfiles.dll
* Microsoft.Office.Word.Server.dll
* Microsoft.Office.Workflow.Actions.dll
* Microsoft.Office.Workflow.Tasks.dll
* Microsoft.SharePoint.Client.dll
* Microsoft.SharePoint.Runtime.dll
* Microsoft.SharePoint.dll
* Microsoft.SharePoint.Linq.dll
* Microsoft.SharePoint.Portal.dll
* Microsoft.SharePoint.Publishing.dll
* Microsoft.SharePoint.Search.dll
* Microsoft.SharePoint.Search.Extended.Administration.Common.dll
* Microsoft.SharePoint.Search.Extended.Administration.dll
* Microsoft.SharePoint.Search.Extended.Administration.ResourceStorage.dll
* Microsoft.SharePoint.Search.Extended.Administration.Query.dll
* Microsoft.SharePoint.Security.dll
* Microsoft.SharePoint.Taxonomy.dll
* Microsoft.SharePoint.Taxonomy.Intl.dll
* Microsoft.SharePoint.Workflow.Actions.dll
* Microsoft.Web.CommandUI.dll

5 Kasım 2009 Perşembe

Sharepoint 2010 Visual Web Partla Tanışalım

Sharepoint 2007de web part geliştirirken arayüzümüz yoktu. User controllerimizi 12/Template/controltemplates altına atıp bir web partla bu user controlu load etmek en iyi alternatifimizdi. Visual Studio 2010'da web partlarla çalışmak için bir designerımız var artık.. Visual Web Part SPI( SPI, sharepoint project Itemı temsil ediyor) ile bir web part yaratmak istediğinizde bu size bir .cs dosyası, bir .webpart dosyası, bir elements.xml dosyası ve de yeni olan bir .ascx dosyası yaratıyor.Evet, gerçekten bir ASP.NET user control yaratıyor. Visual studio bu dosyaları güzelce gruplama adına güzel bi iş yapmış. Web partın designerını açtığınız zaman, User controlün designerı otomatikman açılıyor.
Simdi hemen aklınıza bunun nasıl çalıştıgı geliyordur. Sharepoint maalesef hala user controlleri direkt olarak host edmiyor. Burada tek yapılan içinde Page.LoadControl metoduyla bizim user contolümüzü parametre geçtiğimiz bir web part yaratmak. Esasında bu zaten bizim yıllardır user controlleri Sharepoint içerisine deploy etme taktiğimizdi. Ama burada güzel olan Visual Studio nun bu user controllerin deploy edilip sharepoint üzerinde kullanılması işlemini kolaylaştırmış olması..

Sharepoint 2010'da bir ListItemın varolup olmadığını kontrol etmek

Sharepoint 2010 API ile bir takım eksiklikler düzeltilmiş. Bildiginiz gibi SPWeb sınıfının GetList metodu eğer bu isimli bir list yoksa exception throw ediyordu, dolayısıyla bu kodumuzu try-catch blokları içinde yazmak gerekiyordu.
Yeni API ile beraber TryGetList isimli bir fonksiyonumuzu mevcut..
Aşağıdaki kod bloğuyla bunu örnekliyorum.

2 Kasım 2009 Pazartesi

Kişinin bilgisayarında MOSS Yüklü olup olmadıgını Kod tarafında Tespit Etmek

Kişi bilgisayarında MOSS yüklü olup olmadığını anlamanın en temiz yolu registrye göz atmaktır. Registry ile ilgili işlemlerimizi yapmak için mscorlib. dllinin Microsoft.Win32 namespaceinin altındaki RegistryKey sınıfından faydalanırız.
bool isMossInstalled = false;
string keyname = @"SOFTWARE\Microsoft\Office Server\12.0";
using (RegistryKey key = Registry.LocalMachine.OpenSubKey(keyname))
{
if (key != null)
{
string version = key.GetValue("BuildVersion") as string;
if (version != null)
{
Version buildVersion = new Version(version);
if (buildVersion.Major == 12)
{
isMossInstalled = true;
}
}
}
}

Lists.asmx web servisi ile LINQ TO XML kullanmak

Bildiğiniz gibi Sharepoint web servislerinin döndürdüğü xml datalarını parse etmek her zaman sorunlu ve can sıkıcı olmuştur. Lists.asmx web servisiyle listelerin sorgulandığına daha önceki postlarımda değinmiştim. Bu postta linq to xml yardımıyla dönen sonuçları parse etmeye değineceğim. Bunun için visual studio 2008de bir windows uygulaması geliştireceğiz. Burada projemize referans olarak lists.asmx web servisini ekliyoruz. Bunu yaptıktan sonra yapmamız gereken app.config dosyası ayarıdır. Sharepoint uygulamamız NTLM Security kullandığı için app.config deki HttpBinding elementinin securityMode unu Default değeri olan none dan TransportCredentialOnly değerine çekmemiz transport elementinin clientCredentialType ve proxyCredentialType özelliklerini "Ntlm" e çekmemiz gerekir. Aksi takdirde web servisimizin metotlarını çağırmak istediğimizde hata alırız.


şeklinde ayarlarımızı düzenledikten sonra uygulamamıza geçelim.
uygulamamızın kodu aşağıdaki gibidir.


Bu şekilde Sharepoint uygulamamızdaki listeleri web servisten dönen xmli linq to xml ile parse ederek göstermiş oluruz.
Linq to xml gerçekten hayatı kolaylaştırıyor..