Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon MVVMCross'ta akıcı bağlamalar ve İsviçre/Tibet Bağlamaları arasında herhangi bir performans farkı var mı?


MVVMCross'ta akıcı bağlamalar ve İsviçre/Tibet Bağlamaları arasında herhangi bir performans farkı var mı?


MVVMCross'ta, veri bağlama için hem akıcı bağlar hem de Swiss/Tibet bağları kullanılır, ancak yaklaşımlarında ve kullanımlarında farklılık gösterirler. Bu iki bağlama türü arasındaki performans farklılıkları hakkında açık bir bilgi olmasa da, potansiyel sonuçları anlamak için özelliklerini analiz edebiliriz:

Akıcı Bağlamalar

Akıcı bağlar, geliştiricilerin kodda bağlar oluşturmasına izin veren C#tabanlı bir sözdizimidir. Bu yaklaşım özellikle XML düzeni dosyalarının kolayca insan düzenlenemediği iOS ve OSX gibi platformlarda yararlıdır. Akıcı bağlamalar, derleme zamanında tip uyumsuzlukları yakalayarak çalışma zamanı hatalarını azaltmaya yardımcı olabilecek özellikleri bağlamak için tipte güvenli bir yol sağlar. Bununla birlikte, kodda tanımlandıkları için, Kod Bakımı açısından İsviçre/Tibet gibi bildirimsel bağlamalara kıyasla daha fazla yük gerektirebilirler.

Swiss/Tibet Bağlamaları

İsviçre ve Tibet bağları bildiricidir, yani XML veya dize formatlarında tanımlanırlar. Bu bağlamalar daha özlüdür ve düzen dosyalarına kolayca gömülebilir. Özellikle Tibet Bağlayıcı Sözdizimi, işlev benzeri değer dönüştürücü çağrısı, çoklu bağlar ve basit operatör sözdizimi gibi özelliklere sahip daha zengin bir ifade dili sunar. Bu bildirici yaklaşım, düzen dosyalarında bağlamalar açıkça görülebildiğinden, kod okunabilirliği ve sürdürülebilirlik açısından daha verimli olabilir.

Performans Hususları

Akıcı ve İsviçre/Tibet bağlamaları arasındaki performans farklılıkları hakkında spesifik veri olmasa da, aşağıdaki faktörler performansı etkileyebilir:

-Derleme süresi ve çalışma zamanı Çözümü: Genel olarak, derleme zamanında çözülen bağlamalar (tipte güvenli doğaları nedeniyle akıcı bağların bazı yönleri gibi) çalışma zamanı çözünürlüğüne kıyasla daha iyi performans sunabilir. Bununla birlikte, MVVMCross bağları tipik olarak çalışma zamanında çözülür.

- Yansıtma yükü: Hem akıcı hem de İsviçre/Tibet bağları, mülk adlarını çözmek için muhtemelen yansımayı kullanır. Bununla birlikte, akıcı bağlamaların, tipte güvenli doğaları nedeniyle hafif bir avantajı olabilir, bu da çalışma zamanında kapsamlı yansıma ihtiyacını potansiyel olarak azaltır.

- Bağlayıcı ifadelerin karmaşıklığı: Tibet bağları, bu ifadelerin ayrıştırılması ve değerlendirilmesi nedeniyle potansiyel olarak ek yük getirebilecek daha karmaşık ifadelere izin verir. Bununla birlikte, bu karmaşıklık aynı zamanda daha güçlü veri bağlama özellikleri sağlar.

Özetle, MVVMCross'ta akıcı ve Swiss/Tibet bağlarını karşılaştıran açık bir performans ölçütü olmasa da, akıcı bağlar, türden güvenli doğaları ve çalışma zamanı yansımasındaki potansiyel azalma nedeniyle hafif avantajlar sunabilir. Bununla birlikte, İsviçre/Tibet bağlamalarının bildirici doğası, hataları azaltarak ve kod kalitesini artırarak dolaylı olarak geliştirme verimliliğini ve genel uygulama performansını etkileyebilecek kod okunabilirliğini ve sürdürülebilirliğini artırabilir. Nihayetinde, bu bağlayıcı yöntemler arasındaki seçim, UI'nın karmaşıklığı, hedeflenen platform ve kod tabanlı ve bildirici bağlamaların tercihi gibi projenin özel ihtiyaçlarına dayanmalıdır.

Alıntılar:
[1] http://slodge.blogspot.com/2013/06/tibet-binding.html
[2] https://github.com/mvvmcross/mvvmcross/issues/1342
[3] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/compiled-bindings?view=net-maui-9.0
[4] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[5] https://stackoverflow.com/questions/46522577/mvvmcross-iseses-with-fleent-binding
[6] https://www.reddit.com/r/businessintelligence/comments/ky0dq9/is_it_a_best_practice_to_connect_with_views/
[7] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[8] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[9] https://www.mvvmcross.com/documentation/fundament/value-converters
[10] https://stackoverflow.com/questions/48422489/mvvmcross-tibet-do-viewmodel-it kendini