Merhaba Arkadaşlar,
Sizlere bu makalemizde SharePoint Development hakkında bazı bilgileri elimden geldiğince sizlere aktarmaya çalışacağım.
Bu makalede CSOM, JSOM, SSOM, Rest Api, Farm Solution, SharePoint Hosted App, Provider Hosted App gibi tanımları sizlere açıklayacağım.
Model Tipleri
CSOM
Client Side Object Model’in kısaltmasıdır. Microsoft.SharePoint.Client.Runtime.dll ve Microsoft.SharePoint.Client.dll kütüphanelerini kullanır. SharePoint’in Web Servis tabanlı API’sidir. C# ile yazılır. Bu iki dll ile uzak istemcilerden SharePoint verisine ve özelliklerine erişebilirsiniz.
JSOM
JavaScript Object Model’in kısaltmasıdır. SharePoint içerisindeki verilere JS yardımı ile ulaşır. Bu işlemler için sp.js dosyasını kullanır.
SSOM
SharePoint Server Object Model’in kısatmasıdır. SharePoint sunucularında çalıştırılan kodlardır. Microsoft.SharePoint.dll kütüphanesini kullanır. Global Assembly Cache (GAC) içerisinde bulunur.
REST
SharePoint REST arayüzü; platform bağımsız, açık standart olan Rest tabanlı OData protokolünü kullanır. İster JS içerisinde ister C# ile kullanabilirsiniz.
Hosting Tipleri
SharePoint Hosted Apps
Bu SharePoint uygulama geliştirme yöntemi HTML, CSS ve JS kullanır. Client Side tarafında çalışır. İster JSOM, ister REST kullanırsınız. Hiçbir şekilde server-side kod çalıştıramazsınız. Uygulamanızı SharePoint içerisinde yüklersiniz ama kodlar tarayıcıda çalışır.
Provider Hosted Apps
Bu uygulama geliştirme yönteminde SharePoint farm yapısı dışında kuracağınız farklı bir web sunucusunda server-side kodlarınızı çalıştırırsınız. Bu web uygulama sunucusunda isteğe bağlı olarak asp.net , php, java gibi istediğiniz dilleri kullanabilirsiniz. CSOM gibi yöntemlerle SharePoint verilerine erişip istemciye sunarsınız. Server to Server yöntemi ile SharePoint sunucusuna bağlanabilirsiniz.
Farm Solution
SharePoint Farm’ı içerisinde çalıştırılır. En az önerilen uygulama geliştirme yöntemidir.
Biraz da Muhabbet
Uzun yıllardır bu sektörde olan birisi olarak kendi düşüncelerimi burada sizlerle paylaşacağım.
SharePoint’i geliştiren ekip, geliştiriciler rahat etsin diye ellerinden geleni yapıyorlar, bundan eminim. Niçin diyeceksiniz? Benim gibi developer olmayan birisi bile SharePoint’te harikalar oluşturabiliyor. Ve sadece JS kullanarak yaıyorum bunları.
SharePoint geliştirmede izlenmesi önerilen yöntem şu şekilde; Eğer yapabiliyorsanız SharePoint Hosted App ile geliştirin, SP Hosted App’in yetenekleri yetmiyor ise yani server side kod yazmanız gerekiyorsa Provider Hosted App yazın. Eğer yapacağınız Proje SharePoint’in tüm yeteneklerine ulaşması gerekiyorsa o zaman Farm Solution yazın. Ama ben kendi gördüklerimden yola çıkarak hiç farm solution’a ihtiyaç olduğunu görmedim.
Ama SharePoint’in yeteneklerini tam keşfetmemiş, daha da açıklamak gerekirse bildiğiniz düz .net developer, pat diye ortasından SharePoint Development’a girdiyse halen düz mantıkta kod yamaya devam eder. Hangisi kolayına geliyorsa o şekilde geliştirmeye devam eder.
Bu adamlar deli gibi farm solution olarak Web Part yazıyorlar ve sürekli deploy ediyorlar. SharePoint Mimarisini düşünürsek, SharePoint kendi sunucuları üzerinde kod çalıştırılmasını istemez. Sana birçok imkan sunmuş; client side geliştir, başka bir sunucuya web sunucusu kur oradan api ile SharePoint sunucularına bağlan istediğin server-side kodu yaz.
Ama bizim developerlar açıyor Visual Studio’yu harıl harıl SPWeb SPList yardırıyorlar. Bir listeye bağlanıp veri çekmek için lütfen Web Part yazmayınız.
Olaya şu yönden bakalım. Eğer SharePoint sunucusu üzerinde farm solution olarak Web Part yazıldıysa bir kere o sunucuya bağımlı kaldınız demektir. Kodlarda yapılacak en ufak değişiklikte tekrar o sunucuya bağlanıp kodu revize edip, tekrar deploy etmeniz gerekcek ve bu arada dikkate değer kesintiler yaşanacaktır. Dışarıda olduğunuzu düşünün. Hemen bir telefon şurayı değiştir. Taşınabilir bilgisayarın yanında, sunucuya erişebilirsen VPN ile sisteme gireceksin falan da, sunucuya rdp çekeceksin, vs açacaksın, kodu revize edeceksin, deploy edeceksin vs…
Onun yerine bir js dosyası ile bu işi yapmış olsaydın, interneti olan bir yerden siteye tarayıcıdan login olup js dosyasını açıp düzenleyebilirsin. En kötü ihtimalle notepad ile bile yaparsınız bu işlemi. Ve kesinti yok.
Sinirlendim yine! Şu linkedindeki Senior SharePoint Developerların yarısından fazlasını at çöpe! Erdem (@eravse), Serdar (@serdarktnci) siz hariç. Sizi seviyrem!