Client Object Model - Avantaj ve Dezavantajlar

Üzerinde çalıştığım son birkaç projedir Client Object Model kullanıyorum. Bugün ofiste böyle bir tartışma da çıkınca blogumda yer vermek istedim. İşte Client Object Model‘in avantaj ve dezavantajları. Avantajlar:

  1. JavaScript kullanılarak kullanıcı tarafındaki web tarayıcısından SharePoint verilerine ulaşabiliyoruz.
  2. jQuery yardımıyla zengin kullanıcı arayüzü olan web partlar geliştirebiliriz.
  3. Visual Studio’ya gerek duymaksızın, sadece web tarayıcısı üzerinden, İçerik Düzenleyicisi web partı kullanarak istediğimiz web partları geliştirme şansına sahip oluruz.
  4. Sitenizi şablon olarak kaydedip başka bir yere aktardığınızda, Client Object Model ile geliştirdiğiniz her şey de aktardığınız tarafta hazır bulunur.
  5. Client Object Model kullanarak geliştirdiğiniz web partların çalışır hale gelmesi için deploy ya da iisreset gerekmez.
  6. Geliştirme yapmak istediğiniz bilgisayarda SharePoint‘in yüklü bulunması gerekmez.

Dejavantajlar:

  1. Sunucu tarafında ihtiyaç duyduğumuz zaman yazdığımız RunWithElevatedPrivilege (burada bahsetmiştim) tarzı bir metod kullanma şansımız yok. Dolayısıyla sadece iznimiz kadar bilgiye ulaşabiliyoruz.
  2. Client Object Model‘de SharePoint verilerine ulaşmak için kullanabileceğimiz oldukça sınırlı sayıda sınıf var. Örneğin User Profile bilgilerine erişmemiz mümkün değil (jQuery ile SharePoint web servislerini kullanarak bu işlemi yapabiliyoruz).
  3. Üzerinde çalıştığımız site collection’dan başka bir site collection üzerindeki veriye ulaşamıyoruz.
  4. Ulaşmak istediğimiz veriler biraz gecikmeli gelebiliyor. Bu yüzden anlık sorgulama yapmamız gereken durumlarda sorunlar yaşanabiliyor.

Antalya Gezisi

Haftasonu Antalya‘daydım. Sevdiceğimle güzel bir gezi etkinliği yapmış olduk. Geçirdiğimiz üç gün dur durak bilmeden yürüdük, gezebildiğimiz kadar gezmeye eğlenmeye çalıştık. Bu üç günlük süreçte sağda solda gezerken çektiğim fotoğrafları ve birkaç notu sizlerle paylaşmak istedim.

fotoğrafları paylaşmaktan vazgeçtim :)

Notlar:

  1. Havaalanından 600 numaralı otobüse binip bir çok yere ulaşma şansınız var.
  2. Kaleiçi çok güzel bir yer ve her yer pansiyon. Rastgele gitseniz bile konaklayacak orta halli bir yer bulmanız mümkün. Dar sokaklarda gezmek de çok eğlenceli.
  3. Su çok pahalı. (BİM suyu, 1 TL)
  4. Kaleiçi Dönerciler Çarşısı’nda döner yemeyin, hem birşeye benzemiyor hem çok pahalı. (Adana’da 3 TL’ye yiyebileceğiniz orada 15 TL idi. Bu arada evet, bildiğiniz döner)
  5. Konyaaltı’nda deniz çok temiz, ama sahil kum değil taş.
  6. Antalya, Samsun pidesi yemek için uygun bir yer değil. (Terme’li abiye selam olsun)
  7. Taksici abilere yabancı olduğunuzu çaktırmayın, yoksa gideceğiniz yere dolandıra dolandıra (her iki manada da) götürüyorlar.
  8. Tramvay seferleri çok ilginç. Otogar’dan binmek istediğimde “Bilet yok, kart da doldurmuyoruz.” dedi gişedeki abi. Orada ne iş yapıyor acaba diye merak etmedim değil.
  9. Öğlen sıcağında gezmeye çıkmayın buharlaşırsınız. Ben buharlaştım ordan biliyorum.

Yukarıdaki maddelere dikkat ettiğinizde hem çok keyifli hem de maddi olarak fazla zorlanmayacağınız bir gezi imkanı oluşturabilirsiniz. Giderseniz şimdiden iyi eğlenceler :)

Web Partta Full Control Yetkisi

Yazdığımız web partlarda bazı kodların tam denetim yetkisiyle çalışmasını isteyebiliyoruz. Benim için bu ihtiyaç User Profile‘dan bilgi çekip, kişilerin doğum günlerini göstermek istediğimde ortaya çıkmıştı. Full Control -Tam Denetim- yetkisiyle çalıştırmak istediğimiz kod kısımlarını aşağıdaki metod içerisine yazarsak işimiz görülmüş oluyor:

SPSecurity.RunWithElevatedPrivileges(delegate()
{
	//Tam denetim yetkisi ile
	//çalışacak kodlar
});

Not: Sandbox projelerde “RunWithElevatedPrivileges” metodunun kullanılamayacağını da belirteyim.

SQL Server Tabloda Yapılan Değişiklikleri Kaydetmek

Daha önce çok kez başıma geldi, eminim sizin de başınıza gelmiştir. Bir projeye başlamadan önce kullanacağınız veritabanının tasarımını yaparsınız. Üzerinde ne kadar düşünseniz, ne kadar kafa patlatsanız da kodlama aşamasında illa ki bir eksiği çıkar ve yeni sütunlar, yeni ilişkiler eklemeniz gerekir. Bu durumda oluşturduğunuz tablolarınızda bir değişiklik yapmak istediğinizde SQL Server buna izin vermez ve veritabanının yeniden oluşturulması gerektiğini söyler. Bu durumun önüne geçmek ve yaptığınız değişiklikleri kaydedebilmek için:

  1. Tools menüsünden Options seçilir.
  2. Designers bölümüne geçilir.
  3. Prevent saving changes that require the table to be re-creation” kutucuğunun işareti kaldırılır.

table-recreation

İstediğiniz değişiklikleri artık kaydedebilirsiniz ;)

JavaScript Object to String

JavaScript’te ulaşmaya çalıştığım veriler Object olarak geldiği zaman, alert() ile görmeye çalıştığımda başarılı olamıyorum. Aslında almak istediğim veriyi almış oluyorum ama bunu görüntülemek için string türüne çevirmek gerekiyor. Aşağıdaki fonksiyonu buldum işime yarayan, object’in içinde ne var ne yok görebiliyoruz string’e dönüştürüp.

function objToString (obj) {
    var str = '';
    for (var p in obj) {
        if (obj.hasOwnProperty(p)) {
            str += p + '::' + obj[p] + '\n';
        }
    }
    return str;
}