2009-02-20 36 views
25

Chúng tôi sắp bắt tay vào một ứng dụng doanh nghiệp lớn. Tôi đang nghiêm túc xem xét sử dụng ASP.NET MVC vì:ASP.NET MVC có phải là lựa chọn tồi cho một dự án doanh nghiệp lớn không?

  1. Chúng ta cần phải sử dụng công nghệ Microsoft (biz logic là tất cả C#)
  2. Hiệu suất là rất quan trọng
  3. Tôi muốn thử nghiệm càng nhiều càng tốt

Nhóm của tôi chỉ sử dụng PHP để phát triển web, nhưng rất có kinh nghiệm với .NET winforms (vì vậy chúng tôi có đường cong học tập). Mối quan tâm của tôi là một số người đã bày tỏ lo ngại về khả năng mở rộng của ASP.NET MVC đối với các ứng dụng lớn. Nhưng từ những gì tôi đọc webforms có vấn đề riêng của họ là tốt.

Tôi có nên xem xét lại biểu mẫu web hoặc gắn bó với đường ruột của mình và sử dụng ASP.NET MVC không?

liên quan:

Should I build my next web app in ASP.NET MVC? https://stackoverflow.com/questions/521388/from-webforms-to-asp-net-mvc

+3

Đây không phải là bản dupe. Câu hỏi được nhắc đến là sử dụng nó trong khi đang thử nghiệm, điều này đang hỏi liệu có nên sử dụng nó cho một ứng dụng enerprise lớn hay không. Các câu hỏi khác nhau. –

+0

Đồng ý. Nhưng nó có liên quan. – Will

+0

Tôi muốn được nhìn thấy một nhận xét tiếp theo từ tác giả liên quan đến lựa chọn và kinh nghiệm của anh ấy. Tôi đã sử dụng MVC từ phiên bản beta và tôi thích nó. Hầu hết các ứng dụng của chúng tôi đều nhỏ nên tôi không thể nói về khả năng mở rộng của ứng dụng.Cảm giác của tôi là vì nó cho phép nhiều xử lý phụ phía khách (jQuery, Ajax, JSON) mà nó dễ dàng hơn trên máy chủ và do đó sẽ làm cho nó dễ mở rộng hơn. –

Trả lời

24

ASP.NET WebForms rất giống với Winforms và cho phép RAD (phát triển ứng dụng nhanh). Nó rất nhanh để có được một cái gì đó trong thời gian không. Vấn đề với điều này là thử nghiệm có thể là một nỗi đau lớn và nếu được sử dụng cho bất kỳ công chúng phải đối mặt có thể có nghĩa là một số vấn đề lớn với ViewState. WebForms có thể giữ trạng thái làm cho những thứ như một thuật sĩ dễ dàng sử dụng.

Mặt khác, ASP.NET MVC có thể mất nhiều thời gian hơn để phát triển và yêu cầu các nhà phát triển hiểu cách thức hoạt động của HTTP. Đó là một kiến ​​trúc không quốc tịch có nghĩa là mỗi yêu cầu là thế giới nhỏ bé của riêng nó và thường không có kiến ​​thức về các yêu cầu trước đó. Khuôn khổ cũng cho phép kiểm tra cao.

Theo như hiệu suất, chúng có thể giống nhau vì ASP.NET MVC chỉ là một khung được xây dựng trên kiến ​​trúc ASP.NET hiện có. Mặc dù cho kinh nghiệm phía khách hàng tôi muốn nói MVC là một chút nhanh hơn.

Theo như khả năng mở rộng, tôi có thể nói rằng chúng giống nhau về kỹ thuật. Làm thế nào để sử dụng API và tích hợp nó MVC có thể sẽ dễ dàng hơn một chút.

Trang web bạn đang sử dụng ngay bây giờ để hỏi câu hỏi phiên bản này được xây dựng trên ASP.NET MVC và họ có 2 máy chủ web và máy chủ db mạnh mẽ.

+11

Tôi không đồng ý rằng việc phát triển WinForms nhanh hơn MVC. HTTP dễ hiểu hơn (đối với các nhà phát triển web) so với sự phức tạp của mô hình sự kiện. Một cái gì đó như databinding một trang dựa trên sự kiện OnSelectedItemChanged của một điều khiển người dùng là một quá trình mệt mỏi trong WebForms, nhưng tầm thường trong MVC/jQuery. –

+5

Đó là một nhận xét chủ quan. Tôi nói WebForms nhanh hơn cho những người đã phát triển với WinForms. Rất nhiều nhà phát triển sẽ chỉ "nhận được nó." Nơi mà các nhà phát triển WinForms thông thường không hiểu ngữ cảnh không trạng thái (ASP.NET MVC/HTTP). –

+1

@ChadMoran: nơi bạn đã nói rằng * WebForms là nhanh hơn cho những người đã phát triển với WinForms *. Bạn không đặt bất kỳ mối quan hệ nào giữa hai người. Bạn chỉ cần nói rằng WebForms giống như WinForms và cho phép RAD. –

2

Stick với ruột của bạn. ASP.NET MVC giúp tạo điều kiện thử nghiệm vì hầu như toàn bộ API xuất phát từ các giao diện.

29

Biểu mẫu web ASP.NET có trọng lượng nặng và thả một số nội dung trên trang web của bạn, cả trong html/javascript và chế độ xem theo thứ tự. Tôi nhớ trang web ASP.NET đầu tiên của tôi khiến cho GC bị thổi phồng vì tất cả các đối tượng sống ngắn được bù nước từ chế độ xem có nguồn gốc thần thánh đó. Ồ, khi tôi còn trẻ và ngây thơ (tức là, 2 năm trước) ... Bạn phải có hiểu biết rất tốt về các biểu mẫu web để xây dựng các trang web có thể mở rộng từ chúng. Khả thi? Chắc chắn rồi. Dễ dàng? Không phải.

ASP.NET MVC khó mã hơn ban đầu, nhưng là SO dễ phát triển hơn nhiều so với biểu mẫu web. Những điều khó khăn nhất để tìm hiểu là 1) các quy ước còn gọi là "chuỗi ma thuật", 2) Html + mã nội tuyến aka ASP và 3) dạng html.

Với MVC, bạn không thể thoát khỏi cơn ác mộng của tiểu bang, điều này rất phổ biến đối với việc phát triển biểu mẫu web, điều đó có nghĩa là các trang web của bạn rất nhỏ. Nó cũng có nghĩa là bạn phải viết mã cho tiểu bang của bạn thông minh hơn một chút. Mã này cũng là MUCH đơn giản hơn và quy mô MUCH tốt hơn so với các dạng web truyền thống, imho.

Ngoài ra, thử nghiệm với ASP.NET là gần như không thể, do phụ thuộc khó mã hóa và unmockable nướng vào khuôn khổ. ASP.NET MVC đã thay thế tất cả các thành phần này bằng các thành phần System.Web.Abstractions là các trình bao bọc có thể mô phỏng được xung quanh các đối tượng được thiết kế kém và không thể thực hiện được này.

Chạy, đừng đi bộ, đến MVC.


Đối rõ ràng-impared, nếu bạn sử dụng một khuôn khổ mà ngồi ontop khuôn khổ ASP.NET, như MVC hoặc bất kỳ khác mà bạn đã viết hay mà người khác đã viết, Rõ ràng một số trong những bài phát biểu không áp dụng.

Nếu, mặt khác, bạn mã như người đàn ông đầu đã làm chống lại các mô hình ASP.NET webforms (ví dụ, Response.Write() trong Page_Load), ý kiến ​​của tôi áp dụng.

Bạn có thể viết mã có thể kiểm tra được đối với ASP.NET không? Chắc chắn rồi. Bạn có thể làm điều đó mà không bao gồm mã kiểm tra đặc biệt mà bạn hoặc ai đó khác đã viết không? Chắc chắn rồi. Nếu bạn có TypeMock.

+2

Nhận xét tuyệt vời, cảm ơn! –

+0

Vô nghĩa - bạn có thể thử nghiệm trong biểu mẫu web nếu bạn theo một mẫu thiết kế như Model-View-Presenter. –

+0

Hey, brighteyes, nếu bạn đang làm MVP bạn không làm biểu mẫu web. ASP.NET MVC cũng nằm trên cùng của biểu mẫu web, nhưng bạn không sử dụng bất kỳ mô hình webform nào (chẳng hạn như sự kiện tải của Trang). Đặt MVP hoặc MVC ontop của biểu mẫu web! = Biểu mẫu web. Tôi không nghĩ rằng sự khác biệt đó phải được nêu ra. – Will

0

Tôi muốn nói với MVC nếu bạn cần hoặc muốn các tính năng của nó. Nếu bạn đang xây dựng một ứng dụng kinh doanh như một hệ thống ERP hoặc CRM, tôi sẽ sử dụng các biểu mẫu web; nếu bạn đang xây dựng một trang cổng thông tin hoặc cộng đồng wiki, tôi sẽ đi với MVC. Cuối cùng nó đi xuống để ưu tiên và những gì chính xác ứng dụng doanh nghiệp của bạn cần phải thực hiện.

3

Không. Một điều mà ASP.NET MVC có trên ASP.NET Web Forms về hiệu suất là nó không sử dụng cây điều khiển. Cây điều khiển tiêu thụ rất nhiều bộ nhớ phía máy chủ và giữ cho bộ thu gom rác rất bận trên các trang có nhiều điều khiển. Tôi sẽ cho rằng bạn sẽ nhận được hiệu năng vượt trội từ ASP.NET MVC. Các khía cạnh thử nghiệm đơn vị của nó là một chiến thắng thực sự.

Mặt trái của điều này là bạn không thể sử dụng tất cả các tiện ích trong hộp điều khiển mà bạn nhận được với ASP.NET Web Forms và có thể bạn sẽ kết thúc việc phát triển JavaScript phía máy khách để ban đầu ngân sách phát triển có lẽ sẽ cần phải lớn hơn nếu bạn chọn ASP.NET MVC trên Web Forms, nhưng bạn sẽ có một giải pháp cao cấp cho lâu dài.

+0

Nếu bạn muốn tạo các trường động dựa trên dữ liệu định nghĩa biểu mẫu, tôi nghĩ biểu mẫu web sẽ là một tùy chọn dễ dàng hơn. Vì bạn có thể tự động xây dựng cây điều khiển, bao gồm các điều khiển, trình duyệt tính hợp lệ và vv Với MVC mặc dù nó không phải là không thể, tôi nghĩ nó sẽ khó hơn rất nhiều. – Kelvin

-2

Mọi thứ tôi đã đọc về asp.net MVC nói rằng nó có thể phục vụ nhiều yêu cầu trang hơn so với biểu mẫu web asp.net.

Tôi có một số nghi ngờ về tính ổn định và bảo mật của nó. Cả hai xuất phát từ thực tế là nó thậm chí không được phát hành và thậm chí với RC, chúng tôi đã thấy một số thay đổi trong khuôn khổ. Tôi chắc chắn sẽ có nhiều thay đổi hơn khi thời gian trôi đi và mọi thứ được tìm thấy. Nó mới nên không thực sự là "thực hành tốt nhất" cho nó và không có một sự giàu có của kinh nghiệm ra có chi tiết các vấn đề nhỏ hoặc gotchas mà bạn có thể chạy vào.

Tôi đã sử dụng và kết quả là các trang nhỏ hơn và hiệu suất nhanh hơn. Nhưng có rất nhiều điều tôi có thể làm trong các biểu mẫu web mà tôi không có ý tưởng làm thế nào để làm với mvc vì mvc không thúc đẩy việc sử dụng các điều khiển webforms.

0

"Với MVC, bạn không thể nhận được ngay với cơn ác mộng trạng thái đó là quá phổ biến để webforms phát triển, có nghĩa là phương tiện trang web của bạn là meth-nghiện mỏng"

Upmodded cho câu rằng!

9

ASP.NET MVC không phải là một vấn đề cho doanh nghiệp, nhưng không phải là ASP.NET, Silverlight, vv Họ là tất cả các công nghệ giao diện người dùng. Phần lớn logic ứng dụng của bạn sẽ tồn tại trong các thư viện bên dưới lớp UI, vì vậy hầu như mọi giao diện người dùng đều có thể được sử dụng.

  1. Chúng ta cần phải sử dụng công nghệ Microsoft
  2. Hiệu suất là rất quan trọng
  3. Tôi muốn thử nghiệm càng nhiều càng tốt

Dựa trên trên, ASP.NET MVC sẽ làm việc. Tuy nhiên, bạn có thể di chuyển mã xuống dưới giao diện người dùng và kiểm tra. Nếu thuật toán của bạn ở dưới giao diện người dùng, bạn có thể điều chỉnh chúng mà không thay đổi giao diện người dùng. Và, nếu lớp giao diện người dùng rất mỏng, lần truy cập hoàn thiện cho giao diện người dùng là không đáng kể.

+4

Cái gì? ASP.NET và ASP.NET MVC không phải là công nghệ giao diện người dùng ... –

-3

Nếu bạn có thể sử dụng các thủ tục được lưu trữ thì bạn không cần một tầng giữa lớn như những thứ được tạo bởi MVC. Tất cả những gì bạn phải làm là chuyển XML sang procs được lưu trữ của bạn thông qua trình xử lý HTTP đơn giản, lấy kết quả từ một proc được lưu trữ và chuyển đổi kết quả thành JSON. MVC và các công cụ trung gian khác chỉ phục vụ kiếm tiền cho các công ty bán các IDE như VS.

+4

Bạn có ví dụ nào về các công ty thực hiện điều này cho các ứng dụng doanh nghiệp lớn không? Tôi không thể tưởng tượng viết một phần lớn của phần mềm mà không có một khuôn khổ phong nha để hỗ trợ nó. –

+3

Những người duy nhất tôi thấy đề xuất các thủ tục lưu trữ mạnh mẽ lớn là các nhà cung cấp cơ sở dữ liệu. Đối với mọi người khác, đó là một ý tưởng thực sự tồi tệ. PL/SQL hoặc mã thủ tục T-SQL tored là hư không gần như mạnh mẽ, linh hoạt hoặc testable như .NET. – Robert

+0

@Robert tôi thực sự không hiểu những người ác cảm đã chống lại sql, nó là vô lý. Vâng orm là tốt và dễ dàng nhưng mọi thứ trở nên khó khăn, bạn nên suy nghĩ về refactoring mã của bạn đối với sql khi cần thiết. thủ tục lưu trữ giành chiến thắng từ tay orm xuống mười lần. Và nếu bạn thích sql để lập bản đồ đối tượng hãy xem mệnh lệnh của oracle. – bicycle

0

Ý kiến ​​của tôi: sử dụng ASP.NET Webforms.

Vô hiệu hóa ViewState trong Web.Config.

Không cần phải bảo tồn trạng thái vì mọi thứ bạn thực sự cần đều nằm trong đối tượng Yêu cầu. Sử dụng Javascript kết hợp với AJAX để truy xuất dữ liệu để hiển thị các điều khiển giao diện người dùng của bạn ở phía máy khách.

Tạo trình bao bọc serverside dưới dạng thẻ kiểm soát cho trình kết xuất thành phần phía máy khách của bạn. Đây là cách tôi đã làm việc cho lứa tuổi hiện nay, và nó nhanh chóng, đáng tin cậy, có thể kiểm tra và được tổ chức.

Phải mất một thời gian để thiết lập một khuôn khổ phù hợp cho phương pháp làm việc này, nhưng cuối cùng nó sẽ cai trị.

Tôi không có mã spaghetti như MVC. Đã ở đó với PERL/PHP và ASP cổ điển.

+2

Hoàn toàn không đồng ý, MVC có thiết kế tốt hơn và thiết kế các ứng dụng được thiết kế tốt hơn nhiều. Đã sử dụng cả trong một thời gian dài. – citykid

+0

MVC được hình thành bởi một anh chàng chưa từng làm việc thực sự. Nó sinh ra các thực hành mã tồi tệ nhất. Logic được rải rác khắp mọi nơi, từ html đến phía máy chủ. Nó không thể duy trì được. Chúc may mắn bước vào mess, er, code của người khác. Btw, người địa ngục có thời gian để kiểm tra? Các công việc này cho phép thời gian để xây dựng các bài kiểm tra đơn vị ở đâu? Đó là một con kỳ lân từ kinh nghiệm của tôi. – LargeDachshund

1

Đã sử dụng WebForms trong nhiều năm và không bao giờ thích chúng. Bây giờ sử dụng Asp.Net MVC trong một số năm và điều này là tốt hơn rất nhiều. Chắc chắn muốn giới thiệu MVC.

Asp.Net MVC có kiến ​​trúc tuyệt vời và là nguồn mở. Vì vậy, nếu bạn sẽ xác định bottelnecks trong chuỗi xử lý http, bạn có thể sửa chữa nó. Hầu hết thời gian bạn sẽ có thể sửa chữa các vấn đề hiệu suất bằng cách sử dụng một trong nhiều điểm mở rộng được cung cấp bởi Asp.Net MVC, như Binders làm ví dụ.

Các vấn đề liên quan