Bagikan melalui


Berpindah dari aplikasi desktop ke UWP

Jika Anda memiliki aplikasi desktop yang sudah ada yang dibangun menggunakan .NET Framework (termasuk WPF dan Formulir Windows) atau C++ Win32 API, Anda memiliki beberapa opsi untuk pindah ke Platform Windows Universal (UWP) dan Windows 10/11.

Mengemas aplikasi desktop Anda dalam paket MSIX

Anda dapat mengemas aplikasi desktop Anda dalam paket MSIX untuk mendapatkan akses ke lebih banyak fitur Windows 10 dan Windows 11. MSIX adalah format paket aplikasi Windows modern yang memberikan pengalaman pengemasan universal untuk semua aplikasi Windows, termasuk aplikasi UWP, WPF, Formulir Windows, dan Win32. Mengemas aplikasi Windows desktop Anda dalam paket MSIX memberi Anda akses ke pengalaman penginstalan dan pembaruan yang kuat, model keamanan terkelola dengan sistem kemampuan yang fleksibel, dukungan untuk Microsoft Store, manajemen perusahaan, dan banyak model distribusi kustom. Anda dapat mengemas aplikasi apakah Anda memiliki kode sumber atau jika Anda hanya memiliki file penginstal yang ada (seperti penginstal MSI atau App-V). Setelah mengemas aplikasi, Anda dapat mengintegrasikan fitur UWP seperti ekstensi paket dan komponen UWP lainnya.

Untuk informasi selengkapnya, lihat Membangun paket MSIX dari kode dan Fitur Anda yang memerlukan identitas paket.

Menggunakan WINDOWS Runtime API

Anda dapat memanggil banyak API Windows Runtime langsung di aplikasi desktop WPF, Formulir Windows, atau C++ Win32 untuk mengintegrasikan pengalaman modern yang menyala untuk pengguna Windows 10. Misalnya, Anda dapat memanggil WINDOWS Runtime API untuk menambahkan pemberitahuan toast ke aplikasi desktop Anda.

Untuk informasi selengkapnya, lihat Menggunakan WINDOWS Runtime API di aplikasi desktop.

Memigrasikan aplikasi .NET Framework ke aplikasi UWP

Jika aplikasi Anda berjalan pada .NET Framework, Anda dapat memigrasikannya ke aplikasi UWP dengan memanfaatkan .NET Standard 2.0. Pindahkan kode sebanyak mungkin ke pustaka kelas .NET Standard 2.0, lalu buat aplikasi UWP yang mereferensikan pustaka .NET Standard 2.0 Anda.

Bagikan kode di pustaka .NET Standard 2.0

Jika aplikasi Anda berjalan pada .NET Framework, tempatkan kode sebanyak yang Anda bisa ke pustaka kelas .NET Standard 2.0. Selama kode Anda menggunakan API yang ditentukan dalam standar, Anda dapat menggunakannya kembali di aplikasi UWP. Lebih mudah daripada sebelumnya untuk berbagi kode di pustaka .NET Standard karena begitu banyak lagi API yang disertakan dalam .NET Standard 2.0.

Berikut adalah video yang memberi tahu Anda lebih lanjut tentang hal itu.

Menambahkan pustaka .NET Standard

Pertama, tambahkan satu atau beberapa pustaka kelas .NET Standard ke solusi Anda.

Menambahkan proyek standar dotnet

Jumlah pustaka yang Anda tambahkan ke solusi Bergantung pada cara Anda merencanakan untuk mengatur kode Anda.

Pastikan bahwa setiap pustaka kelas menargetkan .NET Standard 2.0.

Target .NET Standard 2.0

Anda dapat menemukan pengaturan ini di halaman properti proyek pustaka kelas.

Dari proyek aplikasi desktop Anda, tambahkan referensi ke proyek pustaka kelas.

Cuplikan layar panel Penjelajah Solusi yang memanggil referensi Pustaka kelas untuk proyek DOT NET.

Selanjutnya, gunakan alat untuk menentukan berapa banyak kode Anda sesuai dengan standar. Dengan begitu, sebelum memindahkan kode ke pustaka, Anda dapat memutuskan bagian mana yang dapat Anda gunakan kembali, bagian mana yang memerlukan modifikasi minimal, dan bagian mana yang akan tetap spesifik aplikasi.

Memeriksa kompatibilitas pustaka dan kode

Kita akan mulai dengan Paket Nuget dan file dll lainnya yang Anda peroleh dari pihak ketiga.

Jika aplikasi Anda menggunakan salah satunya, tentukan apakah aplikasi tersebut kompatibel dengan .NET Standard 2.0. Anda dapat menggunakan ekstensi Visual Studio atau utilitas baris perintah untuk melakukannya.

Gunakan alat yang sama ini untuk menganalisis kode Anda. Unduh alat di sini (dotnet-apiport) lalu tonton video ini untuk mempelajari cara menggunakannya.  

Jika kode Anda tidak kompatibel dengan standar, pertimbangkan cara lain agar Anda dapat menerapkan kode tersebut. Mulailah dengan membuka Browser .NET API. Anda dapat menggunakan browser tersebut untuk meninjau API yang tersedia di .NET Standard 2.0. Pastikan untuk mencakup daftar ke .NET Standard 2.0.

opsi dot net

Beberapa kode Anda akan spesifik platform dan harus tetap berada di proyek aplikasi desktop Anda.

Contoh: Memigrasikan kode akses data ke pustaka .NET Standard 2.0

Mari kita asumsikan bahwa kita memiliki aplikasi Formulir Windows yang sangat mendasar yang menunjukkan pelanggan dari database sampel Northwind kita.

Aplikasi Formulir Windows

Proyek ini berisi pustaka kelas .NET Standard 2.0 dengan kelas statis bernama Northwind. Jika kita memindahkan kode ini ke kelas Northwind , kode ini tidak akan dikompilasi karena menggunakan SQLConnectionkelas , , SqlCommanddan SqlDataReader , dan kelas yang tidak tersedia di .NET Standard 2.0.

public static ArrayList GetCustomerNames()
{
    ArrayList customers = new ArrayList();

    using (SqlConnection conn = new SqlConnection())
    {
        conn.ConnectionString = ...; // Your connection string goes here.

        conn.Open();

        SqlCommand command = new SqlCommand("select ContactName from customers order by ContactName asc", conn);

        using (SqlDataReader reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                customers.Add(reader[0]);
            }
        }
    }

    return customers;
}

Kita dapat menggunakan Browser .NET API untuk menemukan alternatifnya. Kelas DbConnection, DbCommand, dan DbDataReader semuanya tersedia di .NET Standard 2.0 sehingga kita dapat menggunakannya sebagai gantinya.

Versi yang direvisi ini menggunakan kelas tersebut untuk mendapatkan daftar pelanggan, tetapi untuk membuat DbConnection kelas, kita harus meneruskan objek pabrik yang kita buat di aplikasi klien.

public static ArrayList GetCustomerNames(DbProviderFactory factory)
{
    ArrayList customers = new ArrayList();

    using (DbConnection conn = factory.CreateConnection())
    {
        conn.ConnectionString = ...; // Your connection string goes here.

        conn.Open();

        DbCommand command = factory.CreateCommand();
        command.Connection = conn;
        command.CommandText = "select ContactName from customers order by ContactName asc";

        using (DbDataReader reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                customers.Add(reader[0]);
            }
        }
    }

    return customers;
}

Di halaman kode belakang Formulir Windows, kita hanya dapat membuat instans pabrik dan meneruskannya ke metode kita.

public partial class Customers : Form
{
    public Customers()
    {
        InitializeComponent();

        dataGridView1.Rows.Clear();

        SqlClientFactory factory = SqlClientFactory.Instance;

        foreach (string customer in Northwind.GetCustomerNames(factory))
        {
            dataGridView1.Rows.Add(customer);
        }
    }
}

Membuat aplikasi UWP

Sekarang Anda siap untuk menambahkan aplikasi UWP ke solusi Anda.

gambar jembatan desktop ke UWP

Anda masih harus merancang halaman UI di XAML dan menulis perangkat atau kode khusus platform apa pun, tetapi setelah selesai, Anda akan dapat mencapai luas perangkat Windows 10 dan Windows 11 dan halaman aplikasi Anda akan memiliki nuansa modern yang beradaptasi dengan baik dengan ukuran dan resolusi layar yang berbeda.

Aplikasi Anda akan merespons mekanisme input selain hanya keyboard dan mouse, serta fitur dan pengaturan akan intuitif di seluruh perangkat. Ini berarti bahwa pengguna belajar cara melakukan hal-hal satu kali, dan kemudian bekerja dengan cara yang sangat akrab tidak peduli perangkat.

Ini hanya beberapa barang yang datang dengan UWP. Untuk mempelajari lebih lanjut, lihat Membangun pengalaman hebat dengan Windows.

Menambahkan proyek UWP

Pertama, tambahkan proyek UWP ke solusi Anda.

Proyek UWP

Kemudian, dari proyek UWP Anda, tambahkan referensi proyek pustaka .NET Standard 2.0.

Cuplikan layar panel Penjelajah Solusi UWP yang memanggil referensi ke referensi Pustaka kelas untuk proyek DOT NET.

Membangun halaman Anda

Tambahkan halaman XAML dan panggil kode di pustaka .NET Standard 2.0 Anda.

Aplikasi UWP

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <StackPanel x:Name="customerStackPanel">
        <ListView x:Name="customerList"/>
    </StackPanel>
</Grid>
public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();

        SqlClientFactory factory = SqlClientFactory.Instance;

        customerList.ItemsSource = Northwind.GetCustomerNames(factory);
    }
}

Untuk mulai menggunakan UWP, lihat Apa itu aplikasi UWP.

Menjangkau perangkat iOS dan Android

Anda dapat menjangkau perangkat Android dan iOS dengan menambahkan proyek Xamarin.

Catatan

Untuk proyek lintas platform baru, pertimbangkan untuk menggunakan .NET MAUI.

Gambar yang menunjukkan perangkat Android dan perangkat i O S yang menampilkan aplikasi Xamarin.

Proyek-proyek ini memungkinkan Anda menggunakan C# untuk membuat aplikasi Android dan iOS dengan akses penuh ke API khusus platform dan khusus perangkat. Aplikasi ini memanfaatkan akselerasi perangkat keras khusus platform, dan dikompilasi untuk performa asli.

Mereka memiliki akses ke spektrum penuh fungsionalitas yang diekspos oleh platform dan perangkat yang mendasar, termasuk kemampuan khusus platform seperti iBeacons dan Fragmen Android dan Anda akan menggunakan kontrol antarmuka pengguna asli standar untuk membangun UI yang terlihat dan terasa seperti yang diharapkan pengguna.

Sama seperti UWP, biaya untuk menambahkan aplikasi Android atau iOS lebih rendah karena Anda dapat menggunakan kembali logika bisnis di pustaka kelas .NET Standard 2.0. Anda harus merancang halaman UI di XAML dan menulis kode khusus perangkat atau platform apa pun.

Menambahkan proyek Xamarin

Pertama, tambahkan proyek Android, iOS, atau Lintas Platform ke solusi Anda.

Anda dapat menemukan templat ini dalam kotak dialog Tambahkan Proyek Baru di bawah grup Visual C# .

Cuplikan layar kotak dialog Tambahkan Proyek Baru memperlihatkan opsi Visual C sharp yang diinstal > dipilih dan opsi Android, Lintas Platform, dan i O S dipanggil.

Catatan

Proyek lintas platform sangat bagus untuk aplikasi dengan fungsionalitas khusus platform kecil. Anda dapat menggunakannya untuk membangun satu UI berbasis XAML asli yang berjalan di iOS, Android, dan Windows. Pelajari selengkapnya di sini.

Kemudian, dari proyek Android, iOS, atau lintas platform, tambahkan referensi proyek pustaka kelas.

Cuplikan layar panel Penjelajah Solusi yang memanggil referensi ke referensi Pustaka kelas untuk proyek Android, i O S, atau lintas platform.

Membangun halaman Anda

Contoh kami menunjukkan daftar pelanggan di aplikasi Android.

Aplikasi Android

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp" android:textSize="16sp"
    android:id="@android:id/list">
</TextView>
[Activity(Label = "MyAndroidApp", MainLauncher = true)]
public class MainActivity : ListActivity
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        SqlClientFactory factory = SqlClientFactory.Instance;

        var customers = (string[])Northwind.GetCustomerNames(factory).ToArray(typeof(string));

        ListAdapter = new ArrayAdapter<string>(this, Resource.Layout.list_item, customers);
    }
}

Untuk mulai menggunakan proyek Android, iOS, dan lintas platform, lihat portal pengembang Xamarin.

Langkah berikutnya

Temukan jawaban atas pertanyaan Anda

Ada pertanyaan? Tanyakan kami di Stack Overflow. Tim kami memantau tag ini. Anda juga dapat meminta kami di sini.