Herkese merhaba arkadaşlar ben Kruvazör
Bu projenin Python kısmında bana uzun süredir destek veren @Helmsys'e teşekkür ederim.
Günümüzün modern yazılım geliştirme süreçlerinde çeşitli yazılım dillerinin beraber kullanılması sık sık karşılaştığımız bir olaydır.
Bu sebepten dolayı C# ve Python dillerini birbirine entegre etme konusu hususunda bir çalışma yaptım ve bu yazımda C# ve pythonun uyumlu biçimde çalışmasını mümkün kılan IronPythona bakacağız ve bir proje gerçekleştireceğiz.
IronPython official site
IronPython, Python dilinin ana özelliklerini korurken, C# tarafında entegrasyon sağlar. Bu birleşim, C# ve Python kodlarının bir arada kullanılabilmesini ve birbirleriyle etkileşimde bulunabilmesini mümkün kılar.
Örneğin, C# tarafından çağrılan bir Python modülü veya tersine Python tarafından çağrılan bir C# sınıfı oluşturabilirsiniz.
ya da C# Formda girilen bir veriyi python tarafında işleyebilir ve tam tersi işlem de gerçekleştirebilirsiniz.
IronPython, Dynamic Language Runtime (DLR) üzerine kuruludur. DLR, dinamik olarak yazılmış dillerin daha etkili bir şekilde çalışmasını sağlayan bir iletişim sunar.
IronPython ve genel yapıyı kavradığımıza göre kurulumları yapabilir ve kodlarımızı yazabiliriz.
Öncelikle Visual Studio aracılığıyla bir WinForm projesi açalım.
Ardından paketleri indirelim.
Şimdi Form kodlarımızı yazalım.
1 Label
4 adet textbox
1 adet button
Şimdi python kodlarımızı yazalım.
Bu projenin Python kısmında bana uzun süredir destek veren @Helmsys'e teşekkür ederim.
Günümüzün modern yazılım geliştirme süreçlerinde çeşitli yazılım dillerinin beraber kullanılması sık sık karşılaştığımız bir olaydır.
Bu sebepten dolayı C# ve Python dillerini birbirine entegre etme konusu hususunda bir çalışma yaptım ve bu yazımda C# ve pythonun uyumlu biçimde çalışmasını mümkün kılan IronPythona bakacağız ve bir proje gerçekleştireceğiz.
IronPython official site
IronPython, Python dilinin ana özelliklerini korurken, C# tarafında entegrasyon sağlar. Bu birleşim, C# ve Python kodlarının bir arada kullanılabilmesini ve birbirleriyle etkileşimde bulunabilmesini mümkün kılar.
Örneğin, C# tarafından çağrılan bir Python modülü veya tersine Python tarafından çağrılan bir C# sınıfı oluşturabilirsiniz.
ya da C# Formda girilen bir veriyi python tarafında işleyebilir ve tam tersi işlem de gerçekleştirebilirsiniz.
IronPython, Dynamic Language Runtime (DLR) üzerine kuruludur. DLR, dinamik olarak yazılmış dillerin daha etkili bir şekilde çalışmasını sağlayan bir iletişim sunar.
IronPython ve genel yapıyı kavradığımıza göre kurulumları yapabilir ve kodlarımızı yazabiliriz.
Öncelikle Visual Studio aracılığıyla bir WinForm projesi açalım.
Ardından paketleri indirelim.
Şimdi Form kodlarımızı yazalım.
1 Label
4 adet textbox
1 adet button
Şimdi python kodlarımızı yazalım.
Python:
import base64
originalString = str(originalString)
print("Orjinal metin: " + originalString)
encodedString = base64.b64encode(originalString.encode()).decode()
print("Şifreli metin: " + encodedString)
decodedString = base64.b64decode(encodedString).decode()
print("Şifresi açık metin: " + decodedString)
encodedString, decodedString
Şimdi de Pythona gönderdiğimiz verileri geri almak adına C# Kodlarımızı yazalım.
Global alanda bu şekilde tanımlama yapalım
Global alanda bu şekilde tanımlama yapalım
C#:
private ScriptEngine pythonEngine; //python engine
C#:
public Form1()
{
InitializeComponent();
pythonEngine = Python.CreateEngine();
// kütüphanelerin kurulu olduğu dizini gösteriyoruz ki kütüphaneleri bulsun.
var searchPaths = pythonEngine.GetSearchPaths();
searchPaths.Add("..\\..\\Lib");
pythonEngine.SetSearchPaths(searchPaths);
}
C#:
private void button1_Click(object sender, EventArgs e)
{
string originalString = textBox1.Text;
// Kullanıcıdan gelen bilgiyi python tarafına yolluyoruz.
var scope = pythonEngine.CreateScope();
scope.SetVariable("originalString", originalString);
// scriptPathte belirtilen Python kodunu çalıştır
string scriptPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "base64.py"); //proje klasöründe ara
pythonEngine.ExecuteFile(scriptPath, scope);
// Get the result from Python script
string encodedString = scope.GetVariable<string>("encodedString");
string decodedString = scope.GetVariable<string>("decodedString");
// Display results in labels
textBox2.Text = "Original string: " + originalString;
textBox3.Text = "Encoded string: " + encodedString;
textBox4.Text = "Decoded string: " + decodedString;
}
Python dosyamızı proje klasörüne taşıdıktan sonra uygulamayı açabiliriz.
Okuduğunuz için teşekkürler.