Sau 2 năm, tôi vẫn đang vật lộn với MVVM như một phương pháp thực tế để sản xuất phần mềm làm việc. Trong một số trường hợp, nó thật tuyệt. Tôi đã làm một ứng dụng đa luồng điều khiển một dây chuyền lắp ráp nhỏ có thể là một màn đêm không có khái niệm MVVM. Một sự trừu tượng từ dây chuyền lắp ráp vật lý gần như không có trí tuệ.
Tuy nhiên, sự nghiệp của tôi chủ yếu xoay quanh dòng ứng dụng kinh doanh nội bộ - chính thức hóa và tối ưu hóa các hoạt động của một doanh nghiệp. Trong các ứng dụng như vậy, nhìn chung có một teir kinh doanh xoay quanh CRUD và các hoạt động hỗn hợp. Trong LOB, các mô hình khung nhìn của tôi cuối cùng là một tập hợp rất đơn giản của các hàm bao bọc một dòng của các phương thức của lớp nghiệp vụ và cuối cùng chỉ làm phức tạp các nhiệm vụ đơn giản nhất như hiển thị hộp thông báo hoặc mở cửa sổ. Không ai khác thấy kỳ lạ khi mọi người đi vào các bản mô tả dài về "tiêm phụ thuộc" và "nhà cung cấp dịch vụ nhắn tin" cho một cuộc gọi Window.ShowDialog đã tồn tại trong nhiều thập kỷ? Có bao nhiêu câu hỏi khác trên stack overflow để xin lời khuyên cho các nhiệm vụ cực kỳ đơn giản trong winforms?
Đừng hiểu sai ý tôi - Tôi có MVVM và làm thế nào nó có thể là vô giá đối với các nhóm lớn thực hiện phát triển theo chiều ngang của gói phần mềm được thu hẹp và bán trên thị trường. Việc kiểm tra đơn vị các mô hình xem có thể tiết kiệm hàng triệu bằng cách tránh một lỗi RTM xấu và các nhà phát triển UI chuyên dụng có thể mang lại trải nghiệm phong phú. Nhưng khi chi phí triển khai lại là tối thiểu và tất cả các doanh nghiệp quan tâm phải trả cho phần mềm làm việc đơn giản, tại sao tôi phải dành thời gian kiểm tra đơn vị vm "trình bao bọc" đơn giản khi logic kinh doanh của tôi đã được thử nghiệm? Công việc kinh doanh thực sự sẽ cho phép tôi dành bao nhiêu thời gian cho hoạt hình dễ thương và phối màu? Có còn gì để nhà phát triển cơ sở làm không (theo dõi lỗi trong chức năng lưu được sử dụng để xem "Save_Click",
Phải thừa nhận rằng, tôi thực sự thích cơ sở dữ liệu của WPF. Để tận dụng lợi thế của nó, tôi đặt bối cảnh dữ liệu cho chính cửa sổ, nơi nó có quyền truy cập vào lớp nghiệp vụ cũng như bất kỳ thuộc tính quan sát nào khác. Có, tôi phá vỡ gần như mọi "quy tắc" MVVM bằng cách làm như vậy. Nhưng ít nhất tôi có mã hướng sự kiện đơn giản, dễ đọc VÀ tôi tận dụng lợi thế của cơ sở dữ liệu và xác thực mới. Vấn đề nằm ở các nhà thiết kế - thứ mà tôi không sử dụng nhiều nhưng hy vọng đến bây giờ nó được tích hợp tốt hơn vào năm 2012 - nhà thiết kế cho thấy hàng trăm thuộc tính mà một cửa sổ và các lớp cơ sở của nó có.
Đối với những thứ có thể liên quan, bạn có thể chỉ cho tôi tài nguyên, sách hoặc thậm chí chỉ là những thay đổi trong quan điểm khiến việc này dễ nuốt hơn. Tôi sẽ cung cấp cho MVVM một lần nữa, nhưng lần trước tôi cảm thấy khá ngu ngốc vì lo lắng về việc tiêm phụ thuộc chỉ để hiển thị một hộp thông báo từ máy ảo mà tôi không có ý định thử nghiệm đơn vị. Ngay cả khi tôi đã thực hiện kiểm tra đơn vị, chúng tôi có thực sự đạt được chất lượng cao hơn bằng cách giao dịch kiểm tra thời gian chạy đối với các lỗi thời gian biên dịch của các ứng dụng "kết nối chặt chẽ" đáng sợ đó không?
Tôi nhận ra một câu trả lời là chỉ ở lại winforms. Nhưng là một trong những người ủng hộ cuối cùng của WebForms (tôi có nhiều chỉ trích về xu hướng phát triển web), tôi cảm thấy hơi giống một con khủng long khi tôi phát hiện ra không còn WebForms nào trong các dấu vết chứng nhận của Microsoft. Tiến về phía trước là lựa chọn duy nhất, ngay cả khi tôi không thích nó.