Mình thì đã học cả 2 món này lúc đi học. Mình giờ đang làm winform, muốn chuyển qua web nhưng không biết theo bên nào! Mình không có hoặc chưa có như cầu về việc chọn cái nào lương cao hơn, mình chỉ muốn biết cảm nhận của các bạn khi đã từng trải qua 2 món này thế nào. Thật ra mình thích sử dụng đồ của M$ hơn, vì nó tiện lợi, không cần phải học thêm ngôn ngữ nào khác nữa. Nhưng có một điều mình đang mắc phải đó là không hiểu sao bên ASP.NET mình không hiểu cái MVC, trong khi bên PHP, cụ thể là làm trên framework Phalcon (đang tìm hiểu) thì mình lại hiểu. Bạn mình đang làm bên ASP.NET nó nói chỉ cần biết MVC là được.
Giữa PHP và ASP.NET các bạn theo hướng nào và cảm nhận?
Nếu bạn thích dùng đồ của M$ thì cứ C#, ASP.NET mà thẳng tiến thôi, CEO mới của M$ đang cố gắng “mở hóa” nền tảng của M$ Người ta có thể chê Java hay PHP (bị tẩy chay quá đáng), nhưng mình ít khi thấy ai chê C# (ngoại trừ việc nó dính với M$ stack), theo góc nhìn của mình thì C# được thiết kế tốt hơn Java khá nhiều (trước đó 2 anh từng mượn ý tưởng của nhau). Vậy nên chốt lại cái ASP.NET nhé
MVC (Model - View - Controller), đơn giản chỉ là một design pattern (mẫu thiết kế) dạng “cấu trúc”. Bạn có thể áp dụng nó vào dự án của mình hoặc không (nếu bạn hiểu rõ mình đang làm gì). Ưu điểm của việc áp dụng nó là giúp bạn tách nhiều phần với những nhiệm vụ riêng biệt ra để dễ phát triển, sửa lỗi và bảo trì về lâu về dài. Bạn có thể hiểu như sau:
- Giả dụ, MVC là giám đốc ©, bán hàng / marketing (V), kế toán (M) trong một công ty.
- C / Controller / Giám đốc sẽ làm nhiệm vụ điều phối các hoạt động trong công ty đến các bộ phận liên quan. Nói theo cách khác là ổng biết rõ khả năng / chuyên môn của các bộ phận và chọn giao công việc phù hợp đến các bộ phận đó.
- V / View / Kinh doanh và marketing sẽ làm nhiệm vụ đi quảng bá sản phẩm và kiếm lợi nhuận về cho công ty. Hiểu nôm na là thuộc về phần hiển thị / tương tác với khách hàng.
- M / Model / Kế toán sẽ làm nhiệm vụ ghi lại sổ sách, tính toán doanh thu, lương bổng các kiểu. Khi giám đốc hoặc phía kinh doanh marketing cần thì có thể xuất ra báo cáo từ những dữ liệu đã nhập vào trước đó. Họ đa phần làm việc với dữ liệu và họ hiểu toàn bộ “business logic / rules”.
-
Tóm lại, nếu bạn chỉ cho một người chịu trách nhiệm cho cả 3 việc trên (anh Z) thì sẽ làm tăng áp lực lên Z, có thể Z sẽ tạo ra 1 mớ bòng bong, ban đầu khối lượng việc còn nhẹ Z có thể tự xoay xở được. Nhưng về lâu dài, khi công ty phát triển, khối lượng công việc tăng, cứ liên tiếp đổ dồn lên Z thì sẽ … BOOM
- Về mặt kỹ thuật mà nói, áp dụng theo mô hình MVC, là bạn tách một module dính với nhau ra nhiều thành phần riêng biệt: Model / quản lý dữ liệu, V / quản lý hiển thị tương tác, C / điều khiển, điều phối những tương tác từ V --> M --> V. Về lâu dài giúp bạn dễ bảo trì, nâng cấp, thêm mới, chỉnh sửa mà ít ảnh hưởng đến những thứ đã làm trước đó.
Nếu bạn vẫn chưa hiểu rõ về MVC, thì mình khuyên bạn nên dành thời gian đọc qua quyển sách này (rất xúc tích, dễ hiểu và chứa nhiều design pattern phổ dụng khác). Mình ước gì mình đã đọc nó sớm hơn trước khi lao đầu vào các framework
Patterns of Enterprise Application Architecture (1st Edition) by Martin Fowler
Cảm ơn bạn! Ví dụ của bạn rất hay và sinh động.
lúc mới chuyển từ Web Forms sang MVC thì có nhiều cái khác lạ, khó hiểu giống như kiểu muốn học MVC thì phải phế bỏ võ công bên Web Forms . Nhưng khi càng đi sâu vào tìm hiểu về MVC thì càng thấy nó có nhiều cái hay.
@Hoa_Hoa: rất vui khi biết được câu trả lời của mình giúp ích được cho bạn
@khiemnvd: mình chưa học qua C# hay từng làm việc với Web Forms, nhưng trước đó vô tình đọc trên trang chủ của ASP.NET thì họ nói muốn có được “full-control” thì cứ ASP.NET MVC mà thẳng tiến thôi Bạn có thể xem bảng so sánh của chúng tại đây: http://www.asp.net/get-started/websites
Mình từng làm việc với CodeIgniter và ASP.NET MVC cả ASP.NET. Cả 3 cái mình chỉ không thích ASP.NET Webform, do code phía front-end tự build mình không thể kiểm soát các thẻ html, làm cho người lập trình khó khăn trong xử lý code javascript và còn nhiều vấn đề khác nữa,.
Làm php thì còn nhiều framework để phát triển, CI dễ sử dụng cho người mới, nếu hiểu rồi có thể dễ chuyển qua các framework khác hơn.
ASP.NET MVC cũng tương tự như CI thôi theo mô hình MVC, nhưng đây là framework của ms nên tính tự động cao hơn, xử lý code đơn giản hơn. Bạn có thể tham khảo ở đây: http://myclass.vn/danh-sach-khoa-hoc/lap-trinh-vien-web-asp-net-mvc/
Đơn giản nhất là bạn thích cái nào thì theo cái đó thôi