Bagaimana perubahan kode dapat memengaruhi kompatibilitas
Kompatibilitas mengacu pada kemampuan untuk mengkompilasi atau menjalankan kode pada versi implementasi .NET selain yang kodenya awalnya dikembangkan. Perubahan tertentu dapat memengaruhi kompatibilitas dengan enam cara berbeda:
- perubahan perilaku
- kompatibilitas biner
- Kompatibilitas sumber
- kompatibilitas saat desain
- Kompatibilitas Mundur
- kompatibilitas maju (bukan tujuan .NET.NET Aspire)
Perubahan perilaku
Perubahan perilaku mewakili perubahan pada perilaku anggota. Perubahan mungkin terlihat secara eksternal (misalnya, metode dapat melemparkan pengecualian yang berbeda), atau dapat mewakili implementasi yang diubah (misalnya, perubahan dalam cara nilai pengembalian dihitung, penambahan atau penghapusan panggilan metode internal, atau bahkan peningkatan performa yang signifikan).
Ketika perubahan perilaku terlihat secara eksternal dan memodifikasi kontrak publik jenis, perubahan tersebut mudah dievaluasi karena memengaruhi kompatibilitas biner. Perubahan implementasi jauh lebih sulit dievaluasi; tergantung pada sifat perubahan dan frekuensi dan pola penggunaan API, dampak perubahan dapat berkisar dari parah hingga tidak berbahaya.
Kompatibilitas biner
Kompatibilitas biner mengacu pada kemampuan konsumen API untuk menggunakan API pada versi yang lebih baru tanpa kompilasi ulang. Perubahan seperti menambahkan metode atau menambahkan implementasi antarmuka baru ke jenis tidak memengaruhi kompatibilitas biner. Namun, menghapus atau mengubah tanda tangan publik dari rakitan sehingga konsumen tidak dapat lagi mengakses antarmuka yang sama yang disediakan oleh rakitan dapat memengaruhi kompatibilitas biner. Perubahan semacam ini disebut perubahan biner tidak kompatibel.
Kompatibilitas sumber
Kompatibilitas sumber mengacu pada kemampuan konsumen API yang ada untuk melakukan kompilasi ulang terhadap versi yang lebih baru tanpa perubahan sumber apa pun. Perubahan sumber yang tidak kompatibel terjadi ketika pengguna perlu memodifikasi kode sumber agar dapat berhasil dibangun terhadap versi API yang lebih baru.
Kompatibilitas saat desain
Kompatibilitas saat desain berarti menjaga pengalaman saat desain di seluruh versi Visual Studio dan lingkungan saat desain lainnya. Meskipun ini dapat melibatkan perilaku atau UI perancang, aspek terpenting dari kompatibilitas waktu desain menyangkut kompatibilitas proyek. Proyek atau solusi harus dapat dibuka dan digunakan pada versi lingkungan waktu desain yang lebih baru.
Kompatibilitas mundur
Kompatibilitas mundur mengacu pada kemampuan pengguna API yang ada untuk beroperasi pada versi baru sambil berperilaku dengan cara yang sama. Baik perubahan perilaku maupun perubahan kompatibilitas biner memengaruhi kompatibilitas mundur. Jika konsumen tidak dapat menjalankan atau berperilaku berbeda saat berjalan terhadap versi API yang lebih baru, API mundur yang tidak kompatibel.
Perubahan yang memengaruhi kompatibilitas mundur tidak disarankan, karena pengembang mengharapkan kompatibilitas mundur dalam versi API yang lebih baru.
Kompatibilitas ke depan
Kompatibilitas ke depan mengacu pada kemampuan pengguna API yang ada untuk berfungsi dengan versi yang lebih lama sambil mempertahankan perilaku yang sama. Jika konsumen tidak dapat menjalankan atau berperilaku berbeda saat dijalankan terhadap versi API yang lebih lama, API meneruskanyang tidak kompatibel.
Mempertahankan kompatibilitas dengan versi-versi mendatang mencegah perubahan atau penambahan apa pun dari versi ke versi, karena perubahan tersebut mencegah konsumen yang menargetkan versi yang lebih baru berfungsi pada versi sebelumnya. Pengembang mengharapkan bahwa konsumen yang bergantung pada API yang lebih baru mungkin tidak berfungsi dengan benar terhadap API yang lebih lama.
Mempertahankan kompatibilitas ke depan bukanlah tujuan .NET.NET Aspire.
.NET Aspire