Anasayfa » SharePoint Online için Konsolide Servisler Yazma

Makaleyi Paylaş

Microsoft SharePoint

SharePoint Online için Konsolide Servisler Yazma

SharePoint’in gelişmesi son sürat devam etmekte. SPO yani SharePoint online ile beraber kurumsal servislere bağlantı ve bunların SPO üzerinde listelenmesi üzerine bir çok istek firmalar tarafından  bizlere iletilmektedir.

Bu konu için C# üzerinde backend geliştirme yapan arkadaşlarımız ayrı bir uygulama yapmak istemediklerinden mevcutta bulunan servislerin kullanılması için bir hub kullanmak istemekteler. Fakat bu konuda birden fazla performans ortaya çıkmaktadır.

Bu yazımızda minimal performans kaybı ile nasıl kurumsal bir servisin SPO üzerine bağlanması gerektiği konusunda sizlere bir takım bilgiler aktarmaya çalışacağım.

Öncelikle yapımızı kafamızda bir şekillendirmemiz gerekirse ;

Sponsor

Backend olarak direk SPO içine bir kod yazamayacağımız için external bir 3 üncü sunucumuzu ( IIS Application Server) olarak  tam ortaya yerleştiriyoruz. Bu sunucu bizim SPO dan isteklerimizi alıp Kurumsal sunucuya göndererek istek yapacak ve tekrar geri aldığı veriyi , bu veri json, xml yada herhangi bir formatta olabilir bunu json olarak konsolide ederek tekrar geri SPO ya gönderecek olan sunucudur.

clip_image002 

Yukarıdaki şekilde birde FW bulunmaktadır. Genelde bu sistemler üzerinde ( kurumsal sunucular ) mutlaka bir firewall yada bir güvenlik önlemi bulunmaktadır.

Aşağıda Kurumsal sunucu için kod yazmaya başlamadan önce ayarlanması gereken işelemleri lütfen sistem yöneticiniz tarafından sağlanmasını rica edin.

IIS Sunucunuzun IP adresine FW üzerinden Yetki verilmesi

Kurumsal API sunucusu üzerinde kullanıcı ve password işlemi gerektiren bir yapı varsa sizin için   Audit tutulabilecek bir kullanıcının açılması

Yukarıdaki işlemlere ek olarak Asp.NET MVC Web API kullanacağımızdan ortada konsolide yapacak sunucu için aşağıdaki özelliklerinde aktif edilmesi gerekmektedir.

IIS Sunucusu

ASP.NET MVC minumum 5 versiyonu

HTTPS Binding yapılandırması ve SSL Sertifikası ( eğer yüklenmeyecek olursa SPO dan veri alıp gönderemeyeceğiz )

 

Bu sunucu için RDP ve tam yetkli olduğumuzu varsayıyoruz. Hosting üzerinde bu ayarları yapabilmek için firmanızdan destek alamanız gerekebilir.

Örneklememizde birden fazla kurumsal sunucuya bağlanan APIPoint projesinde bulunan hava durumu servisini kullanıp Open Weather servislerinden sadeleştirilmiş bulunduğumuz il’e göre hava durumunu SPO üzerine eklemeye çalışacağız.

Yukarıda anlattığımız yapı APIPoint tarafında ayarları yapılmış olarak ve üyelikleri açılmış olarak geldiğinde kurumsal tarafta yapılacak olan user ve pass işlemleri ile fw talepleri otomatikman açık olarak gelmektedir. Sizler bu yapıya benzer yapı kurmak isterseniz yukarıda belirtiğim gibi sistem yöneticinizden destek almayı unutmayınız.

IIS Yapılandırılması

 

Servislerimizi yazmadan önce ( örnek resimde kurulmuş şekli bulunmakta ) IIS üzerine site tanımını ve HTTPS binding ortamını ayarlamalıyız.

clip_image003

SPO’nun gereksinimi orta hub sunucumuzda yanlızca budur. Bundan sonrası bizim yazılım tarafında halledeceğimiz detaylardır.

API Katmanının kurgulanması

Teknik olarak herzaman yaptığımız bir Web API projesi açarak kodlarımızı bunun içine yerleştiriyoruz. Yanlız SPO tarafında API noktamızın Route sistemi çok önemli olduğundan mevcutta olan API Route için olan method attribute larını da yerleştiriyoruz.

clip_image005

Aslında yaptığımız Weather ( Open Weather ) servisi için parametrelerin sadeleştirilmiş hallerini alan ( WeatherParameter) bir method yazmak ve istek yaptığımız servisten gelen verileri süzerek SPO nun kulanacağı kadarını almak ve httpResponse mesaj olarak dönmektir.

Peki neden bu tarz bir yöntem izliyoruz neden gelen verinin tamamını yada parametrelerin tamamını göndermiyoruz?

Burada dikkat edilecek nokta iki sunucu arasında bir aracı olduğunuz ve verileri ne kadar fazla yüklenirseniz taşıma olanağımız okadar zor olabilir. SPO da bu verinin tamamını istediğiniz sürelerde işleyemeyebilir. Bu yüzden servislerimizi minimum request ve maksimum performas için tasarlıyoruz.

Mevcutta hazırladığımız methodumuz aşağıdaki requesti Json olarak almaktadır. Json olarak almasının sebeplerinden biri UI kısmında AngularJS kullanacağımızdan Json alıp Json vermesi bizim için önemli noktalardan biridir. Bildiğiniz üzere SPO üzerinde genelde Client Side diller ile geliştirme yaptığımızdan XML tarafında ek kütüphaneler kullanmamak içnde Json tercih ediyoruz. ( en azından ben bu şekilde kullanmaktayım bu tercih sizindir )

clip_image007

Bu isteğin hemen ardından gelen değerlerimiz aşağıdaki şekilde olacaktır. Yazılan servisin detayları için https://github.com/eravse/apipoint/blob/master/weatherservice.md adresini de ziyaret edebilirsiniz.

clip_image009

Servis Testi

Servisimizi yadık daha doğrusu yazılı olan bir servisi kullanarak SPO üzerinden istek yapacağız ve gelen değerleri SPO üzerinde bir UI düzenlemesi ile göstermek istemekteyiz.

Müşterimiz o anda bulunduğu ildeki hava durumunu istediğinden her zaman kullanabileceğimiz bir servisi aktif ederek kullanıma almayı planlamaktayız. ( senaryomuz bu )

Servisimizin PostMan yada sizin kullandığınız Rest servislerini test edebileceğiniz herhangi bir araç üzerinden testini gerçekleştiriyoruz. Yukarıda verdiğimiz sampe requesti postman’a yazarak test işlemini başlatıyoruz.

Eğer aşağıda görüldüğü gibi sorunsuz bir şekilde veriniz geliyorsa işleme devam edebilirsiniz. Testiniz fail durumda ise SPO da hata vereceğinden servisinizin tam başarılı şekilde çalışmasını sağlamalısınız .

clip_image011

SharePoint Yapılandırması ve Designer

API servisimizi yazdık ( yazılan servis üzerinden gidiyoruz ). Servisimizin testini de gerçekleştirdik. Peki SPO üzerinde nasıl kullanacağız. Aslında daha önceden bir çok anlattığımız şekilde SPO üzerine AngularJs vasıtası ile 10 – 15 satır kod yazarak kullanabilirsiniz.

MasterPage Yapılandırması

AngularJS kullanacağımızdan MasterPage üzerine bir yapılandırma yapmamız daha doğru olacaktır. Bu yapılandırmayı isterseniz direk olarak çalıştığınız sayfa üzerinde de yapabilirsiniz fakat diğer sayfalarda da kullanmak isterseniz her sayfa için kopyalama yapmanız gerekecektir. Ben bu yüzden her zamanki gibi direk masterpage üzerine güncelleme yapmaktayım. Aşağıda yapılandırma ve Js dosyalarını master page üzerinize ekleyerek angular module tanımını yapınız.

clip_image013

Hava Durumu UI Yapılandırması

Yukarıdaki yapılandırma sonrası isterseniz yeni bir sayfa ekleyerek isterseniz de direk SitePages/Home.aspx içine herhangi bir yere ( nerede göstermek istiyorsanız ) aşağıdaki kodları yazmanız yeterli olacaktır.

clip_image015

Yukarıdaki kodlar vasıtası işe APIPoint üzerinde yazılmış olan servise direk olarak bağlandınız ve verdiğiniz parametrelere göre veri dosyanızı Json olarak çekerek $scope.havadurumu değişkenine set ettiniz.

Ben UI için gerçekten bir tembellik yaparak bootsnip üzerinden bir html + css bularak onun üzerine servisden gelen verileri yerleştirdiğimden aşağıdaki gibi bir html çıktım oldu

clip_image017

Evet biraz fazla işlem yapmış olabiliriz. Fakat bundan sonrası için hava durumunu tektek her yere jsler yada css ler atarak değil kendimize ait tek bir servis üzerinden ortalama 5 dakika gibi bir sürede aktif ediyor olacağız. Yukarıdaki işlemlerin SPO üzerinde çıktısı ise aşağıdaki şekilde olacaktır.

clip_image019

Konsolide servislerin SPO üzerine yazılması client side kısmında yetersiz kaldığımız durumlarda bize yol göstermektedir. Bu her zaman için uygulanabilir olmayabilir. Bunun riskleri ve uygulanabilirliği firmalar yada yöneticileriniz ile karşılıklı olarak onay alınarak uygulanması gerekmektedir.

Konsolide servisler yazarken sunucu güvenlikleri de sizin üzerinize bir yük olacağından servis katmanının test ve performansı devamlı surette takip edilmelidir.

Faydalı olması dileği ile

   

Makaleyi Paylaş

Cevap bırakın