2 yıl sonra, hala çalışma yazılımı üretmek için pratik bir yöntem olarak MVVM ile mücadele ediyorum. Bazı durumlarda harika. MVVM kavramları olmayan bir kabus olacak küçük bir montaj hattını kontrol eden çok iş parçacıklı bir uygulama yaptım. Fiziksel montaj hattından soyutlama neredeyse hiç beyinsizdi.
Bununla birlikte, kariyerim çoğunlukla bir iş faaliyetlerini resmileştirmek ve optimize etmek için dahili iş uygulamaları serisi etrafında dönmektedir. Bu tür uygulamalarda, genellikle CRUD ve bileşik operasyonlar etrafında dönen bir iş teir vardır. LOB'larda, görünüm modellerim, iş sınıfı yöntemlerinin bir satır sarma işlevinin çok basit bir koleksiyonudur ve sonunda bir mesaj kutusu göstermek veya bir pencere açmak gibi en basit görevleri karmaşık hale getirir. İnsanlar on yıllardır süren bir Window.ShowDialog çağrısı için "bağımlılık enjeksiyonu" ve "mesajlaşma sağlayıcıları" gibi uzun açıklamalara girdiğinde bunu hiç kimse garip bulmuyor mu? Yığın taşması konusunda, winformlarda son derece basit olan görevler için tavsiye isteyen başka kaç soru var?
Beni yanlış anlamayın - MVVM'yi ve küçültülmüş ve pazarlanan bir yazılım paketinin yatay gelişimini yapan büyük ekipler için nasıl paha biçilmez olabileceğini anladım. Görünüm modellerinin test edilmesi, kötü bir RTM hatasından kaçınarak milyonlarca tasarruf sağlayabilir ve özel kullanıcı arayüzü geliştiricileri zengin bir deneyim sunabilir. Ama yeniden dağıtım maliyeti minimum olduğunda ve tüm iş için ödeme umurunda basit çalışma yazılımı, iş mantığı zaten birim test olduğunda neden basit bir "sarıcı" vm test birim zaman harcamak gerekir? İşletme gerçekten sevimli animasyonlar ve renk şemaları için ne kadar zaman harcayacağım? Küçük bir geliştiricinin yapması gereken bir şey var mı ("Save_Click" e bakarken, bir kaydetme işlevinde bir hatayı takip etmek,
Kuşkusuz, WPF'nin veri tabanını gerçekten seviyorum. Bundan yararlanmak için veri bağlamını pencerenin kendisine, iş sınıfına ve diğer gözlemlenebilir özelliklere erişime ayarladım. Evet bunu yaparak neredeyse her MVVM "kuralını" kırarım. Ama en azından ben okumak kolay basit olay güdümlü kod var VE ben yeni veri bağlama ve doğrulama yararlanmak olsun. Sorun tasarımcılarda - ki o kadar çok kullanmıyorum ama 2012'de daha iyi entegre olmasını umuyorum - tasarımcı bir pencerenin ve temel sınıflarının sahip olduğu yüzlerce özelliği gösteriyor.
İlişkiler için beni kaynaklara, kitaplara, hatta sadece yutmayı kolaylaştıran perspektif değişikliklerine yönlendirebilirsin. MVVM'ye bir şans daha vereceğim, ancak son kez bağımlılık enjeksiyonundan endişe duyduğum için kendimi oldukça aptal hissettim, sadece bir VM'den bir mesaj kutusu göstermek için birim test etme niyetim yoktu. Birim testi yapmış olsam bile, gerçekten "sıkı bağlı" uygulamaların derleme zamanı hataları için işlem zamanı testi yaparak daha fazla kalite alıyor muyuz?
Bir cevabın sadece winformlarda kalmak olduğunu anlıyorum. Ancak WebForms'un son destekçilerinden biri olarak (web geliştirme trendinin aynı eleştirisine sahibim), Microsoft sertifikasyon parçalarında artık WebForms kalmadığını keşfettiğimde biraz dinozor gibi hissettim. Sevmeme rağmen tek seçenek ilerlemektir.