.NET'e .NET Framework genel bakış
Bu makalede kodunuzu .NET'e (eski adı .NET Core) .NET Framework neleri göz önünde bulundurarak göz önünde bulundurabilirsiniz? Birçok proje için .NET'e .NET Framework çok kolaydır. Proje dosyalarınızın karmaşıklığı, proje dosyalarının ilk geçişini tamamladikten sonra ne kadar iş yapacaklarınızı gösterir.
Uygulama modelinin .NET'te (kitaplıklar, konsol uygulamaları ve masaüstü uygulamaları gibi) kullanılabilir olduğu projeler genellikle çok az değişiklik gerektirir. Yeni bir uygulama modeli gerektiren projeler ( örneğin, ASP.NET Core'ASP.NET daha fazla çalışma gerektirir. Eski uygulama modelinden gelen birçok desenin, dönüştürme sırasında kullanılmaktadır eşdeğerleri vardır.
Kullanılamayan teknolojiler
.NET'te .NET Framework birkaç teknoloji vardır:
-
Ek uygulama etki alanları oluşturma desteklenmiyor. Kod yalıtımı için alternatif olarak ayrı işlemler veya kapsayıcılar kullanın.
-
İletişim, artık desteklenmeyecek uygulama etki alanları arasında iletişim kurmak için kullanılır. İşlemler arasında basit iletişim için, sınıf veya sınıf gibi iletişime alternatif olarak işlemler arası iletişim (IPC) System.IO.Pipes mekanizmalarını MemoryMappedFile düşünün. Daha karmaşık senaryolar için StreamJsonRpc veya ASP.NET Core (gRPC veya RESTful Web API hizmetlerini kullanarak) gibi çerçeveleri göz önünde bulundurabilirsiniz.
-
CAS, .NET Framework tarafından desteklenen ancak .NET Framework 4.0'da kullanım dışı olan bir korumalı alan tekniğidir. Bu, Güvenlik Saydamlığı ile değiştirilmiştir ve .NET'te desteklenmiyor. Bunun yerine, işletim sistemi tarafından sağlanan sanallaştırma, kapsayıcılar veya kullanıcı hesapları gibi güvenlik sınırlarını kullanın.
-
CAS'ye benzer şekilde, bu korumalı alan .NET Framework artık önerilmez ve .NET'te desteklenmiyor. Bunun yerine, işletim sistemi tarafından sağlanan sanallaştırma, kapsayıcılar veya kullanıcı hesapları gibi güvenlik sınırlarını kullanın.
-
System.EnterpriseServices (COM+) .NET'te desteklenmiyor.
Windows Workflow Foundation (WF) ve Windows Communication Foundation (WCF)
WF ve WCF , .NET 5+ 'da (.NET Core dahil) desteklenmiyor. Alternatifler için bkz. CoreWF ve CoreWCF.
Bu desteklenmeyen teknolojiler hakkında daha fazla bilgi için bkz. .NET Core ve .NET 5+ üzerindekullanılamayan .NET Framework teknolojileri.
Windows masaüstü teknolojileri
.NET Framework için oluşturulan birçok uygulama, Windows Forms veya Windows Presentation Foundation (WPF) gibi bir masaüstü teknolojisi kullanır. Hem Windows Forms hem de WPF .NET'e taşınabilir, ancak bunlar yalnızca Windows teknolojileri olmaya devam ediyor.
Bir Windows Forms veya WPF uygulamasını geçirmeden önce aşağıdaki bağımlılıkları göz önünde önünde önünden yapın:
- Project .NET dosyaları, dosyalardan farklı bir biçim .NET Framework.
- Projeniz .NET'te mevcut olmayan bir API kullanabilir.
-
- taraf denetimler ve kitaplıklar .NET'e taşınabilir ve yalnızca .NET Framework.
- Projeniz artık .NET'te mevcut olan bir teknoloji kullanıyor.
.NET, Windows Forms ve WPF'nin açık kaynak sürümlerini kullanır ve .NET Framework.
Masaüstü uygulamanızı .NET 5'e nasıl göreceğiniz hakkında öğreticiler için aşağıdaki makalelerden birini okuyun:
Windows API'lere özgü
Uygulamalar yine de .NET tarafından desteklenen platformlarda yerel kitaplıkları P/Invoke ile çağırabiliyor. Bu teknoloji tek bir Windows. Ancak, başvurdurma Windows biruser32.dllveya kernel32.dll gibi özel ise, kod yalnızca __ Windows. Uygulamanın üzerinde çalışmasına istediğiniz her platform için platforma özgü sürümleri bulmanız veya kodunuzu tüm platformlarda çalıştıracak kadar genel hale getirin.
Bir uygulamayı .NET Framework .NET'e .NET Framework. .NET Framework'de kullanılabilen birçok API, Windows Registry veya GDI+ çizim modeli gibi Windows'a özgü teknolojiye dayandırıldıklarına göre .NET'e GDI+ değildi.
Windows Uyumluluk Paketi, .NET'e .NET Framework API yüzeyinin büyük bir kısmını sağlar ve Microsoft.Windows. Uyumluluk NuGet paketi.
Daha fazla bilgi için bkz. .NET'e Windows için Uyumluluk Paketi'ni kullanma.
.NET Framework uyumluluk modu
.NET Framework uyumluluk modu, 2.0 .NET Standard tanıtıldı. Bu uyumluluk modu, .NET Standard ve .NET 5 + (ve .NET Core 3.1) projelerinin yalnızca .NET Framework kitaplıklarına Windows sağlar. .NET Framework kitaplıklarına başvurmak, örneğin kitaplığın Windows Presentation Foundation (WPF) API'lerini kullanması gibi tüm projelerde işe yaramasa da birçok bağlantı noktası oluşturma senaryosunun engelini kaldırır. Daha fazla bilgi için bkz. Bağımlılıklarınızı .NET'e .NET Framework bağlantı noktası koduna analiz etme.
Platformlar arası
.NET (eski adıyla .NET Core), platformlar arası olacak şekilde tasarlanmıştır. Kodunuz belirli teknolojilere Windows, macOS, Linux ve Android gibi diğer platformlarda çalışır. Buna aşağıdakiler gibi proje türleri dahildir:
- Kitaplıklar
- Konsol tabanlı araçlar
- Otomasyon
- ASP.NET siteleri
.NET Framework, yalnızca Windows bir bileşendir. Kodunuz Windows Formlar ve Windows Presentation Foundation (WPF) gibi Windows'ye özgü teknolojiler veya API'ler kullandığında, kod yine de .NET üzerinde çalışır ancak diğer işletim sistemlerinde çalışmaz.
Kitaplığınız veya konsol tabanlı uygulamanız çok fazla değişiklik yapmadan platformlar arası kullanılabilir. .NET'e bağlantı sağlarken bunu göz önünde bulundurarak diğer platformlarda da test etmek iyi olabilir.
.NET Standard'ın geleceği
.NET Standard , birden çok .NET uygulamasında kullanılabilen .NET API'lerinin resmi bir belirtimidir. Bu .NET Standard .NET ekosistemi içinde daha fazla tekdüzite oluşturmaktır. .NET 5'den başlayarak, tekdüzlük kurmaya farklı bir yaklaşım benimsendi ve bu yeni yaklaşım birçok senaryoda .NET Standard ihtiyaç ortadan kaldırıyor. Daha fazla bilgi için bkz. .NET 5 ve .NET Standard.
.NET Standard 2.0, 2.0 sürümünü destekleyen son .NET Framework.
Taşınabilirliği yardımcı olacak araçlar
Bir uygulamayı .NET'e .NET Framework el ile taşıma yerine, geçişin bazı yönlerini otomatikleştirmeye yardımcı olmak için farklı araçlar kullanabilirsiniz. Karmaşık bir projenin taşınabilirliği, kendi içinde karmaşık bir işlemdir. Bu araçlar bu yolculukta yardımcı olabilir.
Uygulamanıza bağlantı noktası uygulamanıza yardımcı olmak için bir araç kullanıyorsanız bile, bu makaledeki Taşınabilirlik ile ilgili önemli noktalar bölümünü gözden geçirebilirsiniz.
.NET Yükseltme Yardımcısı
.NET Yükseltme Yardımcısı, farklı türlerde ve farklı uygulamalar üzerinde çalıştırılacak bir .NET Framework aracıdır. Uygulamalarınızı .NET 5'e .NET Framework yardımcı olacak şekilde tasarlanmıştır. Aracı çalıştırdıktan sonra, çoğu durumda uygulama geçişi tamamlamak için daha fazla çaba gerektirir. Araç, geçişi tamamlamaya yardımcı olacak çözümleyicilerin yüklemesini içerir. Bu araç, aşağıdaki uygulama türleri üzerinde .NET Framework çalışır:
- Windows Forms
- WPF
- ASP.NET MVC
- Konsol
- Sınıf kitaplıkları
Bu araç, bu makalede listelenen diğer araçları kullanır ve geçiş sürecine rehberlik sağlar. Araç hakkında daha fazla bilgi için bkz. .NET Yükseltme Yardımcısı'nı genel bakış.
try-convert
Try-convert aracı, masaüstü uygulamalarını .NET 5'e taşıma da dahil olmak üzere bir projeyi veya çözümün tamamını .NET SDK'ya dönüştüren bir .NET genel aracıdır. Ancak, projenizin özel görevler, hedefler veya içeri aktarmalar gibi karmaşık bir derleme işlemi varsa bu araç önerilmez.
Daha fazla bilgi için try-convert GitHub bakın.
.NET Taşınabilirlik Çözümleyicisi
.NET Taşınabilirlik Çözümleyicisi, derlemeleri analiz eden ve uygulama veya kitaplıkların belirtilen hedef .NET platformlarında taşınabilir olması için eksik olan .NET API'leri hakkında ayrıntılı bir rapor sağlayan bir araçtır.
.NET Taşınabilirlik Çözümleyicisi'Visual Studio için marketten uzantıyı yükleyin.
Daha fazla bilgi için bkz. .NET Taşınabilirlik Çözümleyicisi.
Platform uyumluluk çözümleyicisi
Platform uyumluluğu Çözümleyicisi , çalışma ZAMANıNDA bir API kullanıp kullanmayacağınızı analiz eder PlatformNotSupportedException . .NET Framework 4.7.2 veya üzeri bir sürümü taşıyorsanız, bu yaygın olmasa da kontrol etmeniz iyidir. .NET üzerinde özel durum oluşturan API 'Ler hakkında daha fazla bilgi için bkz. .NET Core 'da her zaman özel durum oluşturan API 'ler.
Daha fazla bilgi için bkz. platform uyumluluğu Çözümleyicisi.
Taşıma sırasında dikkat edilecek noktalar
Uygulamanızı .NET 'e taşırken aşağıdaki önerileri sırayla göz önünde bulundurun.
✔️ projelerinizi geçirmek için .NET Yükseltme Yardımcısı 'Nı kullanmayı düşünün. Bu araç önizlemede olsa da, bu makalede ayrıntılı olarak açıklanan adımları otomatik hale getirir ve geçiş yolunuza devam etmek için harika bir başlangıç noktası sağlar.
✔️ önce bağımlılıklarınızı incelemeyi düşünün. Bağımlılıklarınız .NET 5, .NET Standard veya .NET Core 'u hedeflemelidir.
✔️ bir NuGet packages.config dosyasından PackageReference proje dosyasındaki ayarlara geçiş yapın. package.config dosyayı dönüştürmekiçin Visual Studio kullanın.
Uygulamanızı bağlantı noktası oluşturamasanız bile en son proje dosya biçimine yükseltmeyi düşünün ✔️. .NET Framework projeler eski bir proje biçimini kullanır. SDK stilindeki projeler olarak bilinen en son proje biçimi .NET Core ve daha fazlası için oluşturulsa da, .NET Framework ile çalışır. Proje dosyanızın en son biçimde olması, uygulamanızı daha sonra oluşturmak için iyi bir temel sağlar.
✔️ .NET Framework projenizi en az .NET Framework 4.7.2 için yeniden hedefleyebilirsiniz. Bu, .NET Standard var olan API 'Leri desteklemediği durumlarda en son API alternatiflerine yönelik kullanılabilirliği sağlar.
✔️ .NET Core 3,1 yerine .NET 5 ' i hedeflemeyi düşünün. .NET Core 3,1 uzun süreli destek (LTS) altındayken, .NET 5 en son ve .NET 6, yayımlanamadığında LTS olacaktır.
✔️ Windows Forms ve WPF projeleri için .net 5 ' i hedefleyin. .NET 5, masaüstü uygulamalarına yönelik birçok geliştirme içerir.
.NET Framework projeleri ile de kullanılabilecek bir kitaplığı geçiriyorsanız, .NET Standard 2,0 ✔️ hedeflemeyi düşünün. ayrıca, .NET Framework ve .NET Standard hedefleyerek kitaplığınızı çok hedefleyebilirsiniz.
✔️ Microsoft. Windows başvuru ekleme. uyumluluk NuGet paketi geçiş sonrasında, eksik apı 'lerden oluşan hataları alırsınız. .NET Framework apı yüzeyinin büyük bir bölümü, .net tarafından NuGet paketi aracılığıyla kullanılabilir.