Через 2 роки я все ще борюся з MVVM як практичним методом виробництва робочого програмного забезпечення. У деяких випадках це чудово. Я зробив багатопотокове додаток, яке контролювало невелику складальну лінію, яка була б кошмаром без концепцій MVVM. Абстракція від фізичної конвеєрної лінії майже не сприймала.
Однак моя кар’єра здебільшого обертається навколо внутрішньої лінійки бізнес-додатків - формалізації та оптимізації операцій бізнесу. У таких додатках зазвичай існує бізнес, що обертається навколо CRUD та складних операцій. У LOBs мої перегляди в кінцевому підсумку представляють собою дуже прості колекції функцій обгортки з одного рядка методів бізнес-класу, і в кінцевому підсумку лише ускладнюються найпростіші завдання, такі як показ вікна повідомлень або відкриття вікна. Хіба нікому іншому не здається дивним, коли люди вступають у довгі описи "введення залежності" та "постачальників повідомлень" для дзвінка Window.ShowDialog, який існує десятиліттями? Скільки інших питань виникає при переповненні стека, запитуючи поради щодо завдань, які були надзвичайно простими у форматі winform?
Не зрозумійте мене неправильно - я отримую MVVM і як це може бути безцінним для великих команд, що займаються горизонтальною розробкою скороченого та проданого програмного пакету. Тестування огляду моделей перегляду може заощадити мільйони, уникнувши поганої помилки RTM, а спеціальні розробники інтерфейсу можуть дати багатий досвід Але коли витрати на перерозподіл є мінімальними, і весь бізнес дбає платити за це просте робоче програмне забезпечення, чому я повинен витрачати одиницю часу на тестування простого "обгорткового" vm, коли моя бізнес-логіка вже перевірена одиницею? Скільки часу насправді бізнес дозволить мені витратити на милі анімації та кольорові схеми? Чи є щось, що може зробити молодший розробник (відстежувати помилку в функціональному режимі збереження, який раніше дивився на "Save_Click",
Правда, мені дуже подобається зв'язування даних WPF. Щоб скористатись цим, я встановив контекст даних у саме вікно, де він має доступ до бізнес-класу, а також до будь-яких інших властивостей, що спостерігаються. Так, таким чином я порушую майже кожне "правило" MVVM. Але принаймні у мене є простий код, керований подіями, який легко читати І я можу скористатися новими прив'язками даних і валідацією. Проблема полягає в дизайнерах - які я не так багато використовую, але сподіваюсь, що це краще інтегруватиметься у 2012 році - дизайнер демонструє сотні властивостей, які має вікно та його базові класи.
Для тих, хто може пов'язати, чи можете ви вказати мені на ресурси, книги чи навіть просто зміни в перспективі, які полегшили ковтання. Я дам MVVM ще один вистріл, але востаннє я відчував себе досить нерозумно, коли турбувався про ін'єкцію залежності, просто щоб показати вікно повідомлення від VM, я не мав наміру тестувати одиницю. Навіть якщо я зробив одиничний тест, чи справді ми отримуємо більш високу якість, торгуючи тестуванням часу запуску для помилок часу компіляції тих, які бояться «щільно зв'язаних» додатків?
Я усвідомлюю, що одна відповідь - просто залишатися у виграшних формах. Але як один з останніх прихильників WebForms (у мене дуже однакова критика тенденції розробки веб-сайтів), я відчував себе дещо схожим на динозавра, як це відбувається, коли я визнав, що більше не залишається WebForms у сертифікаційних треках Microsoft. Рух вперед - це єдиний варіант, навіть якщо мені це не подобається.