Çözüldü C# WinUI 3 ile Dynamic proje nasıl yapılır?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Katılım
26 Temmuz 2023
Mesajlar
4.569
Makaleler
25
Çözümler
169
Yer
Başkent
Daha fazla  
Sistem Özellikleri
HP Victus 16 S1035NT
Cinsiyet
Erkek
Meslek
Yazılımcı/Yayıncı
Bu gerçekten çok karmaşık bir iş. Bu birden fazla yöntemle mümkün olabileceğini gördüm ancak hangisini seçmeliyim ve nasıl yapabileceğim hakkında pek bir bilgim şu an yok. İni. JSON. Text dosyalarında XAML ve CS kodlarını tutup dinamik olarak .exe çalışırken kullanmasını buldum fakat ne kadar sağlıklı veya güvenli bilmiyorum, sadece doğru yöntem bu değilmiş gibi hissediyorum daha iyi ve profesyoneli varmış gibi. Kafamda ufak bir düşünce var:
Bir WinUI 3 uygulaması düşününün ve bu uygulamaya sonradan kullanıcı isteğine bağlı olarak bir page yüklenecek ama bu .exe'nin içinde gömülü olacak. Yani önceden .exe farklıydı sonra kullanıcı istediği xaml ve CS dosyaları eklendi ortaya yeni .exe çıktı bu mümkün mü? Yani bir tane. İni. JSON veya. Text dosyasının içindeki kodları dinamik olarak .exe sürekli çekmek yerine bir defa alacak ve tamamen artık .exenin içinde olacak bu mümkün mü? Kendi kendini derleme gibi bir şey olacak .dll dosyaları gömeceğiz yani.

Nasıl desem bilemedim, umarım anlatabilmişimdir.

(Ekleme)
Kodun düzgün bir şekilde programa eklenebilmesini istemekle birlikte, kodu bulundurduğumuz dosyanın içini açarak bütün kodun ifşalanmasını da istemiyorum. %100 güvenlikli olsun istemiyorum ama %100 de güvenliksiz olmasını da istemiyorum. Mecburen dış dosyadan dinamik olarak veri çekeceksek eğer.
 
Son düzenleyen: Moderatör:
Çözüm
O zaman sadece gereksiz eklentileri olduğu gibi .json dosyasından çekerim (C# ve XAML de olabilir. Veya öneriniz varsa söyleyebilirsiniz). Önemli olanları da projenin içinde varsayılan olarak getirtirim.
Şuan hatırlamıyorum ama derlenmiş XAML dosyalarını kullanabilirsin. İstersen araştır eğer runtime olarak kullanılabiliyorsa optimizasyon ve güvenlik açısından bir artı olur.

O zaman sadece gereksiz eklentileri olduğu gibi .json dosyasından çekerim
Zaten diğer uygulamalar bir dosyayı almak için farklı bir yöntem kullanmıyor eğer bir resim alacaksan illa resim şeklinde alacaksın başka yolu yok. Bahsettiğimiz şey sadece derlenen kod için geçerliydi. 3D objeler de dosya şeklinde olmak zorunda mesela.

Her şeyi hazırlar zip dosyası şeklinde sıkıştırırsın uzantısını da .wuzip şeklinde yaparsın 😀. Yada
yine struct mantığını kullanarak dosyaları sıkıştıracak bir yöntem geliştirip kendi sıkıştırılmış dosyanla saklarsın ama yine "ufak çaplı" kategorisine girmez.

Aslında sonda oluşan zip dosyası üzerinde basit bir oynama yapıp kod içinde onu geri çekersen de kolay ve bir tık daha uğraştırıcı olur 😀 (görmek isteyen için)
JSON biraz kolaya kaçmak olur. Ayrıca hem daha yavaş hemde içindekiler açık bir şekilde gözükür. Dediğim yönteme göre birisi senin uygulamana tersine mühendislik yapıp struct'ların yapısını alması ardından bunları map'layecek bir program yazması yada kendisi teker teker okumaya çalışması lazım.


Yanlışlıkla tam istediğin şeye cevap vermişim 😀
Yani demek istediğin olay uygulamanın kendi uzantısıyla çalışabilecek bir dosyalar şeklinde mi saklamalıyım? Ve bunun için nasıl bir API hazırlayabilirim ki?
 
Yani demek istediğin olay uygulamanın kendi uzantısıyla çalışabilecek bir dosyalar şeklinde mi saklamalıyım? Ve bunun için nasıl bir API hazırlayabilirim ki?
Yapacağın şey şu örneğin belirli bir sistem var örneğin "Ayarlar". Şunu yapacaksın:

C:
struct settings
{
    bool dark_mode;
    int scale;
    float x;
    float y;
    int width;
    int height;
}

Bilgisayar bu struct'ın değişkenlerini direkt ramda yan yana yazacak yani struct'ın boyutu 1+4+4+4+4+4 olacak. Sende bunu haliyle bir dosyaya yazacaksın ardından dosyadan okuyup direkt cast ile struct halinde kullanırsın. Ekstra bir kütüphaneye de gerek yok.

Tabii basit değişkenler yazdım ama istediğin şekilde karmaşıklaştırırsın hatta iç içe struct'lar koyarsın.
 
Yapacağın şey şu örneğin belirli bir sistem var örneğin "Ayarlar". Şunu yapacaksın:

C:
struct settings
{
    bool dark_mode;
    int scale;
    float x;
    float y;
    int width;
    int height;
}

Bilgisayar bu struct'ın değişkenlerini direkt ramda yan yana yazacak yani struct'ın boyutu 1+4+4+4+4+4 olacak. Sende bunu haliyle bir dosyaya yazacaksın ardından dosyadan okuyup direkt cast ile struct halinde kullanırsın. Ekstra bir kütüphaneye de gerek yok.

Tabii basit değişkenler yazdım ama istediğin şekilde karmaşıklaştırırsın hatta iç içe struct'lar koyarsın.
Daha önce hiç struct kullanmadım ama dediklerinden anladığım şey sanırım oluşturduğun verileri RAM'de tutmana yarıyor. Ancak bu zaten normalde de böyle değil mi? Bir de
Sende bunu haliyle bir dosyaya yazacaksın ardından dosyadan okuyup direkt cast ile struct halinde kullanırsın.
Demek istediğin ile benimki örtüşüyor mu anlamadım şuan. Bir örnek hazırlayıp geliyorum.
 
Daha önce hiç struct kullanmadım ama dediklerinden anladığım şey sanırım oluşturduğun verileri RAM'de tutmana yarıyor. Ancak bu zaten normalde de böyle değil mi? Bir de

Demek istediğin ile benimki örtüşüyor mu anlamadım şuan. Bir örnek hazırlayıp geliyorum.
Yani demek istediğim istediğin bilgileri struct halinde depolarsın ardından kullanıcı o bilgilere ihtiyaç duyduğunda program direkt o bilgileri alır. İlla önceden ayarlanmış bir yapı olmak zorunda değil potansiyel olarak her şeyi yapabilirsin.
 
Sizin söylediğiniz sanırım şu:
1738243013883.png

1738243025844.png


Benim isteğim şu:
Bir örnek hazırlayıp geliyorum.
1738242960552.png


Sizin söylediğiniz sanırım şu:
1738243013883.png

1738243025844.png


Benim isteğim şu:

1738242960552.png
Şu görseldeki isteklerimi yapabilecek seviyede olayım da sonradan belki kullanıcıların kendi page'lerini atmasına da olanak sağlayacak bir şeyler geliştirmeye çalışırım.
 
Sizin söylediğiniz sanırım şu:
Eki Görüntüle 2411619
Eki Görüntüle 2411620

Benim isteğim şu:

Eki Görüntüle 2411614


Şu görseldeki isteklerimi yapabilecek seviyede olayım da sonradan belki kullanıcıların kendi page'lerini atmasına da olanak sağlayacak bir şeyler geliştirmeye çalışırım.
Anladım. Yani "Özellik" ten kasıt veri değil direkt bir XAML dosyası yada C# kodu değil mi? Gene veri oluyor tabii yinde dediğim yöntemle olur ama pek bir şey değişmez.

Full çalışan bir "Eklenti" yapmak istiyorsan doğrudan C# ile olmaz. Yani olur ama zaten konuyu açmanın sebebi o farklı ve güvenli bir yol.

Sizin söylediğiniz sanırım şu:
Ayrıca kastettiğim şey o değil.
 
Anladım. Yani "Özellik" ten kasıt veri değil direkt bir XAML dosyası yada C# kodu değil mi? Gene veri oluyor tabii yinde dediğim yöntemle olur ama pek bir şey değişmez.

Full çalışan bir "Eklenti" yapmak istiyorsan doğrudan C# ile olmaz. Yani olur ama zaten konuyu açmanın sebebi o farklı ve güvenli bir yol.
Yapmak istediğimi en mantıklı bir şekilde nasıl yapabilirim? Direk dosyayı çekmek veya kodu yazı biçiminde almak bir şey değiştirmiyor. Bunun ufak çaplı bir güvenliği olan bir şey yapmak istiyorum.
 
Yapmak istediğimi en mantıklı bir şekilde nasıl yapabilirim? Direk dosyayı çekmek veya kodu yazı biçiminde almak bir şey değiştirmiyor. Bunun ufak çaplı bir güvenliği olan bir şey yapmak istiyorum.
Biliyorsun C# kodunu string olarak alıp runtime olarak çalıştırabiliyorsun ama bunun "ufak çaplı" olabilecek tek yanı string'i şifrelemek ardından o şifreyi kullanarak eski haline geri almak. Onun dışında C# için daha karmaşık bir yöntem yok. Pubg gibi bir oyun yada atıyorum istediğin haritayı indirip onun sunduğu karakter özellikleriyle oynayabileceğin bir oyun C++ kullanır. Çok da kolay ve güvenli olur.
 
Biliyorsun C# kodunu string olarak alıp runtime olarak çalıştırabiliyorsun ama bunun "ufak çaplı" olabilecek tek yanı string'i şifrelemek ardından o şifreyi kullanarak eski haline geri almak. Onun dışında C# için daha karmaşık bir yöntem yok. Pubg gibi bir oyun yada atıyorum istediğin haritayı indirip onun sunduğu karakter özellikleriyle oynayabileceğin bir oyun C++ kullanır ve çok da kolay olur.
Yani sadece API mi çözüm? Ayrıca, Page.uzanti dosyasını .exe her çalıştırmak istediğinde apiden destek alırsa optimizasyon bakımından sorun yaratmaz mı?

Bir de tersine mühendislikle API de ortaya çıkar. Ortalıkta hiçbir şey kalmaz :D
 
Yani sadece API mi çözüm? Ayrıca, Page.uzanti dosyasını .exe her çalıştırmak istediğinde apiden destek alırsa optimizasyon bakımından sorun yaratmaz mı?
Elbette optimizasyon açısından kötü olur. Ama oyun olmadığı için test edip karar verirsin.

Bir de tersine mühendislikle API de ortaya çıkar. Ortalıkta hiçbir şey kalmaz :D
C# açık kaynak koddan farksız. Güzel bir dil ama o açıdan zayıf.
 

Technopat Haberler

Yeni konular

Geri
Yukarı