Xamarin Platformu ile Cross-Platform uygulama geliştirmeye başladığınızda karşınıza çıkacak ilk sorudur: Shared Project vs PCL (Portable Class Libraries).
Shared Projects
Shared Asset Project türü ile cross-platform uygulama geliştirme size özel koşullarda #if direktifleri kullandırarak, ihtiyaç duyulan noktalarda platform’a özel (yönelik) kod blokları ilave etmenizi sağlayacaktır. Daha önce kullanmamış olanlar için Visual Studio içerisindeki bu özel proje türüne mutlaka bakması faydalı olacaktır.
Shared Proje kullanımı ortak kod kullanımı için uygulaması en kolay yöntemdir.
Not: Visual Studio 2013 Update 2 ve üzeri versiyonlarda çalıştırılabilmektedir.
Bir cross-platform uygulama (iOS, Android, Windows Phone) oluşturduğunuz zaman ilgili Xamarin Visual Studio Template’i (Xamarin.Forms Shared) VS Solution’u içerisinde 4 proje oluşturacaktır.
– ProjenizinAdi.Shared
– ProjenizinAdi.Droid
– ProjenizinAdi.iOS
– ProjenizinAdi.WinPhone
Adından da anlaşılacağı üzere tüm platformlarda ortak olarak kullanılacak kod bloklarınız (entities, classes, viewmodels… vb.) Shared Project içerisinde oluşturulacak ve yapacağınız değişiklikler tüm platformlardaki uygulamalara yansıyacaktır.
Faydaları
– Kodunuzu platformlar arasında paylaşmanızı sağlar.
– Platforma özel direktif kullandırarak (#if __ANDROID__ gibi) kodunuzun akışını farklılaştırabilirsiniz.
Dezavantaları
– Diğer proje türlerinden farklı olarak Shared Project’in bir çıktısı (output assembly) yoktur. Derleme sırasında refere edildiği projenin bir parçası gibi davranır ve ilgili projenin dll’ine derlenir. Oluşturacağınız kodu DLL olarak paylaşmayı düşünüyorsanız sizin için Portable Class Library yöntemi daha iyi bir çözüm olacaktır.
– İnaktif direktifler içerisindeki kodlarda yapacağınız “Refactoring” işlemleri diğer kodlarınıza yansımaz.
Portable Class Libraries
Alışık olduğumuz DLL tabanlı paylaşım yönteminin bir alt kümesi niteliğindedir. Platformlar arası ortak kod paylaşımı için kullanılan bir yöntemdir.
Faydaları
– Kodunuzu platformlar arasında paylaşmanızı sağlar.
– “Refactoring” desteği vardır.
– DLL’inizi farklı projelerde kullanabilme, diğer yazılımcılarla paylaşabilme olanağı tanır.
Dezavantaları
– Derleyici direktifleri kullanılamaz (#if __ANDROID__ gibi)
– .NET framework’ün bir alt kümesi tarafından desteklenir.
Yorum Gönder