Công ty tôi làm việc sử dụng C ++ Builder 6. Chúng tôi đã phát triển mã gốc kể từ khi hình thành. Sản phẩm chủ lực của chúng tôi được viết hoàn toàn bằng mã gốc.
Vào .NET Framework với chuông và còi của nó. Tôi ngã, móc, câu và chìm. Tôi thuyết phục ban giám đốc rằng .NET hoàn toàn nên là khuôn khổ mới của chúng tôi cho tất cả các phát triển phần mềm mới và chúng tôi nên bắt đầu di chuyển mã hiện tại của mình càng sớm càng tốt. Với tất cả những lợi ích nó không có nhiều thuyết phục. Họ chấp nhận đề nghị của tôi như thường lệ.
Tại thời điểm này, tôi bắt đầu phát triển ứng dụng .NET đầu tiên của mình. Tất cả đều diễn ra đúng như kế hoạch. Dự án chỉ là một thành phần của sản phẩm của chúng tôi. Và vì vậy tôi bắt đầu tạo một trình cài đặt cho thành phần mới này. Là một công ty, chúng tôi tự hào về việc làm cho mọi thứ cho người dùng dễ dàng nhất có thể. Ngay cả Microsoft với hàng nghìn nhà phát triển cũng không tạo trình cài đặt như chúng tôi. Ví dụ: khi bạn cài đặt Microsoft CRM, bạn sẽ chỉ nhận được danh sách các lỗi và điều kiện tiên quyết cần cài đặt trước khi bạn có thể tiếp tục. Không phải chúng tôi. Không bao giờ. Nếu bạn cần một cái gì đó, chúng tôi sẽ cài đặt nó cho bạn.
Điều này làm cho cài đặt của chúng tôi cảm thấy rất dễ dàng. .NET Framework chưa được cài đặt? Không vấn đề gì! Chúng tôi sẽ làm điều đó cho bạn. Cần máy khách SQL Native? Khỏe!
Vấn đề là ở chỗ, hiện tại một thành phần duy nhất của giải pháp của chúng tôi được viết bằng .NET, nó làm phức tạp quá trình cài đặt một cách đáng kinh ngạc. Trước khi tôi có thể cài đặt sản phẩm của chúng tôi, tôi cần thực hiện những việc sau:
Phát hiện xem điều kiện tiên quyết đã được cài đặt hay chưa
Cài đặt nó nếu nó không
Xác minh rằng nó đã được cài đặt thành công
Điều kiện tiên quyết tiếp theo
Để cài đặt .NET Framework, trước tiên tôi cần có Windows Installer 4.5. Nhưng có các phiên bản khác nhau cho các hệ điều hành khác nhau, vì vậy tôi thêm tính năng phát hiện hệ điều hành và khởi chạy EXE chính xác. Ồ, .NET framework đã được đóng gói sẵn với 2k8 và exe của trình cài đặt không thể chạy trên nó, bạn phải chạy OCSetup.exe với các tham số để cài đặt nó.
Và vì vậy nó tiếp tục. Sau đó, SQL Express 2005 cần được cài đặt. Các phụ thuộc lại tăng lên một lần nữa.
Tôi tranh luận với ban quản lý rằng ngay cả Microsoft cũng không làm cho người dùng dễ dàng như vậy. Phản ứng của họ là không có lý do gì để chúng ta không giỏi hơn họ theo cách này. Tôi không thể tranh luận về điều đó ngoại trừ việc tôi cảm thấy rằng có những lý do rất tốt mà họ đã áp dụng cách tiếp cận của mình.
Đột nhiên, trình cài đặt của chúng tôi rất lớn. Tất cả các điều kiện tiên quyết cho .NET, thậm chí không nói về hỗ trợ 64 bit có một loạt EXE riêng biệt để cài đặt. Vì vậy, bây giờ nó đã đến mức mà chúng tôi muốn người dùng có thể tải xuống bản đánh giá "nhanh chóng". Thật là một câu chuyện hài hước. Bạn cần tải xuống 500MB để chạy ứng dụng 30MB. Phần lớn gói cài đặt là điều kiện tiên quyết.
Ban quản lý cảm thấy rằng chúng tôi có quá nhiều phụ thuộc / điều kiện tiên quyết. Tôi hoàn toàn hiểu. Họ gợi ý rằng chúng ta nên rời khỏi .NET framework, quay trở lại bản địa nơi mọi thứ vẫn còn "dễ dàng" về mặt cài đặt. Đây là nơi mà một phần tôi muốn ủng hộ .NET giải thích những lợi ích trong bức tranh lớn, trải nghiệm phát triển được cải thiện, bảo trì dễ dàng hơn và chất lượng mã tổng thể. Phần khác tôi hết lòng đồng ý với họ! Việc phát triển trong .NET chỉ đơn giản là yêu cầu bạn cài đặt quá nhiều điều kiện tiên quyết khác khiến quá trình cài đặt trở nên phức tạp.
Có, một số người ủng hộ .NET sẽ tuyên bố rằng mọi thứ nên được cài đặt trên hệ điều hành được vá và cập nhật. Điều này đúng, nhưng không phải tất cả khách hàng đều có điều này và chỉ cần nói "Tôi xin lỗi, hãy cập nhật trước" sẽ không cắt đứt được. Hãy nhớ rằng, chúng tôi tự hào về trải nghiệm người dùng nói chung.
Bây giờ chúng tôi đang xem xét viết lại mã gốc và tôi biết chúng tôi đang thua về tốc độ phát triển và tất cả các tính năng của .NET. Nhưng chúng tôi đang đạt được lợi nhuận trong lĩnh vực này, dù là nhỏ nếu bạn nhìn vào bức tranh lớn hay không. Vì chúng tôi có kỹ năng phát triển mã gốc và .NET thực sự là nền tảng mới đối với chúng tôi, nên việc quay trở lại cũng rất hợp lý.
Câu hỏi của tôi là: quan điểm của công ty bạn về vấn đề này là gì nếu nó thậm chí là một vấn đề và trường hợp kinh doanh sẽ như thế nào mà tôi đề xuất với ban quản lý giả sử tôi muốn tiếp tục chuyển tất cả các sản phẩm của chúng tôi sang .NET?