Uygulama İkili Arabirimi (ABI), çalışma zamanlarının ve işletim sistemlerinin alt düzey ikili ayrıntıları ifade etmek için kullandığı arabirimdir. Bu ayrıntılar çağırma kurallarını (yani parametrelerin nasıl geçirildiğini ve sonuçların döndürüldüğünü), özel durum işlemeyi ve sembol mangling'i içerebilir. Aşağıdaki liste, birlikte çalışabilirlik konusunda rehberlik ararken kullanabileceğiniz dillerin, çalışma zamanlarının ve hatta genel teknolojilerin adlarını içerir.
C
C dili, .NET'in desteklendiği tüm platformlarda kararlı bir ABI'yi temsil eder. Genel olarak C, .NET birlikte çalışma API'leri için varsayılan hedeftir ve çoğu birlikte çalışma senaryosu için önerilen hedef dildir.
CsWin32 , Windows Win32 API yüzeyine erişmek için bir kaynak oluşturucudur
C++
C++ dilinde tüm .NET desteklenen platformlarda ve en popüler C++ derleyici uygulamalarında (MSVC, clang ve GCC) tanımlı ABI yoktur. Bu tutarlı ABI eksikliği, doğrudan hedeflemeyi zorlaştırır.
C++ ile birlikte çalışmanın önerilen yolu, ile extern "C" işaretlenmiş işlevleri dışarı aktarmak ve bunları C işlevleri olarak çağırmaktır.
COM ve IUnknown ABI, C diliyle uyumlu olacak şekilde tanımlanmıştır. Özellikle C++ gibi nesne odaklı programlamayı desteklemek için tasarlanmıştır, ancak kararlı bir ABI sağlamak için tasarlanmıştır. .NET, COM ve IUnknownile derin bir geçmişe sahiptir ve bu ABI başlangıçta C ile uyumlu olacak şekilde tasarlandığından, tüm .NET platformlarında desteklenir.
.NET 5+'ta, platformlar arası alt düzey IUnknown yaşam süresi desteği ComWrappers tarafından sağlanır. .NET 8+ GeneratedComInterfaceAttribute ve GeneratedComClassAttribute, kaynak tarafından oluşturulan C# projeksiyonlarını sağlar. .NET 5 öncesi sürümleri hedef alıyorsanız, yerleşik COM birlikte çalışma sistemini kullanmanız gerekir ve bu destek Windows ile sınırlıdır.
WinRT platformu, COM ve IUnknown ABI'nin evrimini temsil eder.
CsWinRT araç seti bunun için destek sağlar ve ComWrappers üzerine kurulmuştur.
Java Sanal Makinesi (JVM), C'de diğer platformlarla birlikte çalışması için bir yabancı işlev arabirimi (FFI) tanımlar. .NET ve Java arasında birlikte çalışabilirlik bu arabirim aracılığıyla gerçekleştirilebilir.
Objective-C dili, C dilinin ABI'sini izler ve .NET'te desteklenir. .NET 8+'da Objective-C ile birlikte çalışma destekleyen belirli API'ler ad alanı altında System.Runtime.InteropServices.ObjectiveC bulunabilir.
CPython adlı Python çalışma zamanının başvuru uygulaması, C'de diğer platformlarla birlikte çalışmak için bir yabancı işlev arabirimi (FFI) tanımlar. .NET ile Python arasında birlikte çalışabilirlik bu arabirim aracılığıyla gerçekleştirilebilir.
Go programlama dili, işlem içi birlikte çalışabilirlik için desteklenmez. Go çalışma zamanı, başka bir çalışma zamanıyla bir işlemde barındırılmak için gereksinimler uygular. Özellikle, sinyal işleyicilerini çalıştıran iş parçacıklarında SA_ONSTACK bayrağının kullanılması gereksinimdir. Bu gereksinimler şu anda .NET tarafından karşılanmamaktadır.
Golang ile birlikte çalışmanın önerilen yolu, golang tarafından barındırılan bir işlem kullanmak ve işlemler arası iletişim mekanizması aracılığıyla iletişim kurmaktır.
Bu içeriğin kaynağı GitHub'da bulunabilir; burada ayrıca sorunları ve çekme isteklerini oluşturup gözden geçirebilirsiniz. Daha fazla bilgi için katkıda bulunan kılavuzumuzu inceleyin.
.NET geri bildirimi
.NET, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin:
Diğer geliştiriciler ve uzmanlarla gerçek dünyadaki kullanım örneklerini temel alan ölçeklenebilir yapay zeka çözümleri oluşturmak için toplantı serisine katılın.
Azure HPC, en iyi uygulama performansı, ölçeklenebilirlik ve değer sunmak için önde gelen işlemcileri ve HPC sınıfı InfiniBand ara bağlantısını kullanan HPC ve AI iş yükü için amaca yönelik bir bulut özelliğidir. Azure HPC, iş ve teknik gereksinimleriniz değiştikçe dinamik olarak ayrılabilen yüksek oranda kullanılabilir hpc ve yapay zeka teknolojileri aracılığıyla kullanıcıların yenilik, üretkenlik ve iş çevikliğini ortaya çıkarmalarını sağlar. Bu öğrenme yolu, Azure HPC'yi kullanmaya başlamanıza yardımcı o
.NET çalışma zamanının nasıl çalıştığını denetlemeyi gerektiren gelişmiş senaryoları desteklemek için yerel koddan .NET çalışma zamanını barındırmayı öğrenin.
P/Invoke aracılığıyla yerel kitaplıkları yüklerken çalışma zamanının hangi yolları arayacağını öğrenin. Ayrıca SetDllImportResolver'ı kullanmayı da öğrenin.