Masaüstü uygulaması taşıma kılavuzu
Çoğu uygulama kodu aşağıdaki alanlardan birinde kategorilere ayırılabilir:
- Kullanıcı arabirimi kodu (örn. pencereler ve düğmeler)
- Üçüncü taraf denetimleri (örn. grafikler)
- İş mantığı (örn. doğrulama kuralları)
- Yerel veri depolama ve erişim
- Web hizmetleri ve uzaktan veri erişimi
C# (veya Visual Basic.NET) ile yazılmış Windows Forms ve WPF uygulamaları için şaşırtıcı miktarda iş mantığı, yerel veri erişimi ve web hizmetleri kodu platformlar arasında paylaşılabilir.
.NET Taşınabilirlik Çözümleyicisi
Visual Studio 2017 ve üzeri, var olan uygulamalarınızı inceleyip diğer platformlara ne kadar kodun "olduğu gibi" taşınabilir olduğunu gösteren .NET Taşınabilirlik Çözümleyicisi'ni (Windows için indirme) destekler.
GitHub'da Portability Analyzer'dan indirilebilen ve aynı raporları sağlamak için kullanılabilen bir komut satırı aracı da vardır.
"Kodumun %x'i taşınabilir. Sırada ne var?"
Çözümleyici kodunuzun büyük bir kısmının taşınabilir olduğunu gösterir ancak her uygulamanın diğer platformlara taşınamayan bazı bölümleri kesinlikle olacaktır.
Aşağıda daha ayrıntılı olarak açıklandığı gibi, farklı kod öbekleri büyük olasılıkla bu demetlerden birine girer:
- Yeniden kullanılabilir taşınabilir kod
- Değişiklik gerektiren kod
- Taşınabilir olmayan ve yeniden yazma gerektiren kod
Yeniden kullanılabilir taşınabilir kod
Tüm platformlarda bulunan API'lere karşı yazılan .NET kodu, platformlar arası değiştirilmeden alınabilir. İdeal olarak, bu kodun tamamını Taşınabilir Sınıf Kitaplığı, Paylaşılan Kitaplık veya .NET Standart Kitaplığı'na taşıyabilir ve ardından mevcut uygulamanız içinde test edebilirsiniz.
Bu paylaşılan kitaplık daha sonra diğer platformlar (Android, iOS, macOS gibi) için uygulama projelerine eklenebilir.
Değişiklik gerektiren kod
Bazı .NET API'leri tüm platformlarda kullanılamayabilir. Kodunuzda bu API'ler varsa, platformlar arası API'leri kullanmak için bu bölümleri yeniden yazmanız gerekir.
Buna örnek olarak .NET 4.6'da bulunan ancak tüm platformlarda kullanılamayan Düşünceler ion API'lerinin kullanımı verilebilir.
Taşınabilir API'leri kullanarak kodu yeniden yazdıktan sonra, bu kodu paylaşılan bir kitaplıkta paketleyebilmeniz ve mevcut uygulamanız içinde test edebilmeniz gerekir.
Taşınabilir olmayan ve yeniden yazma gerektiren kod
Platformlar arası olması olası olmayan kod örnekleri şunlardır:
Kullanıcı Arabirimi – Örneğin, Windows Forms veya WPF ekranları Android veya iOS'taki projelerde kullanılamaz. Kullanıcı arabiriminizin, başvuru olarak bu Denetim Karşılaştırması kullanılarak yeniden yazılması gerekir.
Platforma özgü depolama - Platforma özgü bir teknolojiye (yerel SQL Server Express veritabanı gibi) dayalı kod. Bunu platformlar arası bir alternatif (veritabanı altyapısı için SQLite gibi) kullanarak yeniden yazmanız gerekir. UWP'nin Android ve iOS'a göre biraz farklı API'leri olduğundan bazı dosya sistemi işlemlerinin de ayarlanması gerekebilir (örneğin, bazı dosya sistemleri büyük/küçük harfe duyarlıdır ve diğerleri değildir).
3. taraf bileşenleri – Uygulamalarınızdaki 3. taraf bileşenlerinin diğer platformlarda kullanılabilir olup olmadığını denetleyin. Görsel olmayan NuGet paketleri gibi bazıları kullanılabilir ancak bazıları (özellikle grafikler veya medya oynatıcılar gibi görsel denetimler)
Kodu taşınabilir hale getirmek için İpuçları
Bağımlılık Ekleme – Her platform için farklı uygulamalar sağlayın ve
Katmanlı yaklaşım : MVVM, MVC, MVP veya taşınabilir kodu platforma özgü koddan ayırmanıza yardımcı olan başka bir desen.
Mesajlaşma – Uygulamanın farklı bölümleri arasındaki etkileşimleri çözmek için kodunuzu ileti geçirmeyi kullanabilirsiniz.