Masaüstü uygulaması taşıma Kılavuzu

Çoğu uygulama kodu aşağıdaki alanlardan biri halinde kategorilere ayrılabilir:

  • Kullanıcı arabirimi kodu (örn. pencereler ve düğmeler)
  • 3. taraf denetimleri (örn. grafik
  • İş mantığı (örn. doğrulama kuralları)
  • Yerel veri depolama ve erişim
  • Web Hizmetleri ve uzak veri erişimi

C# (veya Visual Basic .net) ile yazılan Windows Forms ve WPF uygulamalarında 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 sürümleri, var olan uygulamalarınızı inceleyebileceğiniz ve diğer platformlar için ne kadar kod ("olduğu gibi) bildirebileceğini söyleyen .net taşınabilirlik çözümleyicisi 'ni (Windows için indirme) destekler. Bu Kanal 9 videodandaha fazla bilgi edinebilirsiniz.

ayrıca, GitHub üzerinde taşınabilirlik çözümleyicisi 'nden indirilebilir ve aynı raporları sağlamak için kullanılan bir komut satırı aracı da vardır.

"kodumun x% ' i taşınabilir. Ne ileri? "

Çözümleyici, kodunuzun büyük bir kısmını taşınabilir, ancak diğer platformlara taşınamayacak her uygulamanın bazı bölümleri olacak şekilde görünür.

Farklı kod öbekleri, büyük olasılıkla aşağıda daha ayrıntılı olarak açıklanan bu demetlerden birine denk olur:

  • Yeniden kullanılan taşınabilir kod
  • Değişiklik gerektiren kod
  • Taşınabilir olmayan ve yeniden yazma gerektiren kod

Yeniden kullanılan taşınabilir kod

Tüm platformlarda kullanılabilir olan API 'Lere yönelik olarak yazılan .NET kodu, platformlar arası değiştirilmez. İdeal olarak, tüm bu kodu taşınabilir bir sınıf kitaplığına, paylaşılan kitaplığa veya .NET Standard kitaplığına taşıyabilir ve ardından mevcut uygulamanızda test edebilirsiniz.

Daha sonra bu paylaşılan kitaplık, 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. Bu API 'Ler kodunuzda mevcutsa platformlar arası API 'Leri kullanmak için bu bölümleri yeniden yazmanız gerekir.

Buna örnek olarak, .NET 4,6 ' de kullanılabilen, ancak tüm platformlarda kullanılabilir olmayan yansıma API 'lerinin kullanımı dahildir.

Taşınabilir API 'Ler kullanarak kodu yeniden yazdıktan sonra, bu kodu paylaşılan bir kitaplıkta paketleyebilir ve mevcut uygulamanızda test edebilirsiniz.

Taşınabilir olmayan ve yeniden yazma gerektiren kod

Platformlar arası olma ihtimali olmayan kod örnekleri şunlardır:

  • kullanıcı arabirimi – Windows Forms veya WPF ekranları, örneğin Android veya iOS üzerinde projelerde kullanılamaz. Kullanıcı arabiriminiz, bir başvuru olarak bu denetimlerin karşılaştırılması kullanılarak yeniden yazılması gerekir.

  • platforma özgü , platforma özgü bir teknolojiyi temel alan kod (örneğin, yerel bir SQL Server Express veritabanı). Bir platformlar arası alternatif (veritabanı altyapısı için SQLite gibi) kullanarak bunu yeniden yazmanız gerekir. UWP 'in Android ve iOS 'a biraz farklı API 'Ler (ör.) olduğundan, bazı dosya sistemi işlemlerinin ayarlanması de gerekebilir. 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 olabilir, ancak diğerleri (özellikle de grafikler veya medya oyuncuları gibi görsel denetimler)

kod 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ı olacak başka bir model.

  • Mesajlaşma – kodunuzda geçen ileti geçişini kullanarak, uygulamanın farklı parçaları arasında bir kaç adım etkileşim sağlayabilirsiniz.