Aracılığıyla paylaş


Kod paylaşmaya genel bakış

Bu belge, platformlar arası projeler arasında kod paylaşmanın farklı yöntemlerini karşılaştırır: .NET Standard, Paylaşılan Projeler ve Taşınabilir Sınıf Kitaplıkları, bunların avantajları ve dezavantajları.

Platformlar arası uygulamalar arasında kod paylaşmanın üç yöntemi vardır:

  • .NET Standart Kitaplıkları – .NET Standart projeleri birden çok platformda paylaşılacak kodu uygulayabilir ve çok sayıda .NET API'sine erişebilir (sürüme bağlı olarak). .NET Standard 1.0 - 1.6 aşamalı olarak daha büyük API kümeleri uygularken,.NET Standard 2.0 ise .NET BCL'nin en iyi kapsamını sağlar (Xamarin uygulamalarında kullanılabilen .NET API'leri dahil).
  • Paylaşılan Projeler – Kaynak kodunuzu düzenlemek için Paylaşılan Varlık Projesi türünü kullanın ve platforma özgü gereksinimleri yönetmek için derleyici yönergelerini kullanın #if .
  • Taşınabilir Sınıf Kitaplıkları (kullanım dışı) – Taşınabilir Sınıf Kitaplıkları (PCL'ler) ortak bir API yüzeyiyle birden çok platformu hedefleyebilir ve platforma özgü işlevler sağlamak için Arabirimler'i kullanabilir. PCL'ler Visual Studio'nun en son sürümlerinde kullanım dışıdır; bunun yerine .NET Standard kullanın.

Kod paylaşım stratejisinin amacı, tek bir kod tabanının birden çok platform tarafından kullanabildiği bu diyagramda gösterilen mimariyi desteklemektir.

Shared code application architecture

Bu makalede, uygulamalarınız için doğru proje türünü seçmenize yardımcı olacak yöntemler karşılaştırıldığında.

.NET Standart Kitaplıkları

.NET Standart kitaplıkları, Xamarin.Android ve Xamarin.iOS gibi platformlar arası projeler de dahil olmak üzere farklı proje türlerinde başvurulabilen iyi tanımlanmış bir temel sınıf kitaplıkları kümesi sağlar. Mevcut .NET Framework koduyla en yüksek uyumluluk için .NET Standard 2.0 önerilir.

.NET Standard diagram

Sosyal haklar

  • Birden çok projede kod paylaşmanıza olanak tanır.
  • Yeniden düzenleme işlemleri her zaman etkilenen tüm başvuruları güncelleştirir.
  • .NET Temel Sınıf Kitaplığı'nın (BCL) daha büyük bir yüzey alanı PCL profillerine göre kullanılabilir. Özellikle. .NET Standard 2.0, .NET Framework ile neredeyse aynı API yüzeyine sahiptir ve yeni uygulamalar ve mevcut PCL'lerin taşıması için önerilir.

Dezavantajlar

  • gibi #if __IOS__derleyici yönergeleri kullanılamaz.

Açıklamalar

.NET Standard , PCL'ye benzer, ancak platform desteği için daha basit bir modele ve BCL'den daha fazla sayıda sınıfa sahiptir.

Paylaşılan Projeler

Paylaşılan Projeler , bunlara başvuran herhangi bir projeye dahil edilen kod dosyalarını ve varlıkları içerir. Paylaşım projeleri kendi başına derlenmiş çıkış üretmez.

Bu ekran görüntüsünde üç uygulama projesi (Android, iOS ve Windows için) içeren ve ortak C# kaynak kodu dosyalarını içeren paylaşılan bir proje içeren bir çözüm dosyası gösterilmektedir:

Shared project solution

Kavramsal mimari, her projenin tüm paylaşılan kaynak dosyalarını içerdiği aşağıdaki diyagramda gösterilmiştir:

Shared project diagram

Örnek

iOS, Android ve Windows'ı destekleyen platformlar arası bir uygulama, her platform için bir uygulama projesi gerektirir. Ortak kod Paylaşılan Proje'de bulunur.

Örnek bir çözüm aşağıdaki klasörleri ve projeleri içerebilir (açıklayıcı olması için proje adları seçilmiştir, projelerinizin bu adlandırma yönergelerini izlemesi gerekmez):

  • Paylaşılan – Tüm projeler için ortak olan kodu içeren Paylaşılan Proje.
  • AppAndroid – Xamarin.Android uygulama projesi.
  • AppiOS – Xamarin.iOS uygulama projesi.
  • AppWindows – Windows uygulama projesi.

Bu şekilde, üç uygulama projesi aynı kaynak kodunu (Paylaşılan'daki C# dosyaları) paylaşıyor. Paylaşılan kodda yapılan tüm düzenlemeler üç projede de paylaşılır.

Sosyal haklar

  • Birden çok projede kod paylaşmanıza olanak tanır.
  • Paylaşılan kod, derleyici yönergeleri kullanılarak platforma göre dallandırılabilir (örneğin, Platformlar Arası Uygulamalar Oluşturma belgesinde açıklandığı gibi kullanılarak #if __ANDROID__ ).
  • Uygulama projeleri, paylaşılan kodun kullanabileceği platforma özgü başvurular içerebilir (windows Telefon için Tasky örneğinde kullanma Community.CsharpSqlite.WP7 gibi).

Dezavantajlar

  • 'Etkin olmayan' derleyici yönergeleri içindeki kodu etkileyen yeniden düzenleme işlemleri, bu yönergelerin içindeki kodu güncelleştirmez.
  • Diğer proje türlerinin çoğundan farklı olarak, Paylaşılan Projenin 'çıkış' derlemesi yoktur. Derleme sırasında dosyalar başvuran projenin bir parçası olarak değerlendirilir ve bu derlemede derlenir. Kodunuzu derleme olarak paylaşmak istiyorsanız .NET Standard veya Taşınabilir Sınıf Kitaplıkları daha iyi bir çözüm olur.

Açıklamalar

Yalnızca kendi uygulamalarında paylaşmaya (ve diğer geliştiricilere dağıtmamaya) yönelik kod yazan uygulama geliştiricileri için iyi bir çözüm.

Taşınabilir Sınıf Kitaplıkları

İpucu

.NET Standard 2.0 kitaplıkları Taşınabilir Sınıf Kitaplıkları üzerinden önerilir.

Taşınabilir Sınıf Kitaplıkları burada ayrıntılı olarak ele alınmaktadır.

Portable class library diagram

Sosyal haklar

  • Birden çok projede kod paylaşmanıza olanak tanır.
  • Yeniden düzenleme işlemleri her zaman etkilenen tüm başvuruları güncelleştirir.

Dezavantajlar

  • Visual Studio'nun en son sürümlerinde kullanım dışı bırakıldığında bunun yerine .NET Standart kitaplıkları önerilir. PCL ile .NET Standard arasındaki farkların bu açıklamasına bakın.
  • Derleyici yönergeleri kullanılamaz.
  • Seçilen profil tarafından belirlenen .NET çerçevesinin yalnızca bir alt kümesi kullanılabilir (daha fazla bilgi için bkz . PCL'ye giriş).

Açıklamalar

PCL şablonu, Visual Studio'nun en son sürümlerinde kullanım dışı olarak kabul edilir.

Özet

Seçtiğiniz kod paylaşım stratejisi, hedeflediğiniz platformlar tarafından yönlendirilir. Projeniz için en uygun yöntemi seçin.

.NET Standard, paylaşılabilir kod kitaplıkları (özellikle NuGet'te yayımlama) oluşturmak için en iyi seçenektir. Paylaşılan Projeler, platformlar arası uygulamalarında platforma özgü birçok işlevi kullanmayı plan eden uygulama geliştiricileri için iyi çalışır.

PCL projeleri Visual Studio'da desteklenmeye devam etse de, yeni projeler için .NET Standard önerilir.