Khi nào nên sử dụng PHP hay ASP.NET? [đóng cửa]


46

Tôi đã làm việc rất nhiều trong việc phát triển các ứng dụng web bằng PHP và ASP.NET, nhưng một trong những câu hỏi mà khách hàng liên tục đặt ra là liệu có nên tiến lên với một trang web php hay một trang web asp.net.

Vì vậy, tự nhiên điều đầu tiên xuất hiện trong đầu là trả lời câu hỏi như thế này:

PHP là mã nguồn mở và ASP.NET là của Microsoft.

Thông thường sau khi một cái gì đó như thế được nói rằng khách hàng có một cái nhìn trống rỗng trên khuôn mặt đó. Rõ ràng thực tế là một là nguồn mở và cái kia không thực sự làm họ sợ. Và vì lý do chính đáng, bởi vì khi tôi nghe nó lần đầu tiên, nó thực sự không cho tôi biết nhiều.

Tôi biết từ làm việc với cả hai đều có sự khác biệt khi phát triển trang web.

Câu hỏi của tôi là sự khác biệt giữa ASP.NET và PHP là gì

  1. Đặc trưng
  2. Bảo vệ
  3. Khả năng mở rộng
  4. Khung
  5. Thời gian phát triển trung bình

Tôi đang cố gắng lập một danh sách các sự kiện để có thể so sánh với khách hàng để có thể đưa ra lựa chọn sáng suốt trên nền tảng phát triển phù hợp.


7
Tôi đã sử dụng cả hai, tôi nghĩ Visual Studio và ASP.NET mạnh hơn nhiều. IDE một mình chiến thắng tôi.
Người đàn ông Muffin

7
PHP sẽ luôn có một điểm yếu đối với tôi vì đó là ngôn ngữ lập trình web đầu tiên của tôi ... nhưng sau 2 năm ASP.NET C # đơn giản là tôi không thể quay lại .... Visual Studio IDE thật tuyệt vời!
Dal

Vâng, tôi ước php sẽ có một số IDE chính, nhưng tôi đoán điều đó sẽ giết chết chính tinh thần của PHP là nguồn mở. Chắc chắn là một yếu tố để xem xét.
Edward

2
6. Chi phí trong suốt vòng đời của dự án?
VirtuosiMedia

@VirtuosiMedia một yếu tố quan trọng khác tôi không đề cập đến.
Edward

Câu trả lời:


39

Các tính năng , Bảo mậtKhả năng mở rộng sẽ ít nhiều giống nhau. Những gì có thể được thực hiện với PHP có thể được thực hiện với ASP.NET.

Khung - Một lần nữa, khi nói đến các tính năng của khung, nó sẽ ít nhiều giống nhau. Tuy nhiên, cụ thể hơn ngôn ngữ, bạn sẽ muốn xem xét:

  • Những gì các nhà phát triển của bạn cảm thấy thoải mái nhất. Kiến thức = hiệu quả .
  • Trên cơ sở từng dự án, một khung trong một ngôn ngữ có thể phù hợp tự nhiên hơn so với khung trong ngôn ngữ khác. Cụ thể hơn ngôn ngữ tự nó có nghĩa là một khung không thể giúp nhưng phù hợp với một số nhiệm vụ và ít phù hợp hơn với các nhiệm vụ khác.

Thời gian phát triển trung bình - Thời gian phát triển trung bình của bạn cho một dự án rất nhỏ thể tốt hơn với PHP vì máy chủ web rất dễ tìm và máy dev rất dễ thiết lập. Tuy nhiên, với bất cứ điều gì lớn hơn, miễn là bạn có nhà phát triển tốt, hoặc đã được thiết lập cho một trong hai, nó có thể sẽ là một rửa.


Cân nhắc chính bạn nên thực hiện là những gì công nghệ ngăn xếp khách hàng của bạn muốn được gắn kết để đi về phía trước. Không trộn lẫn tốt (dễ dàng) với nhau. Họ có thể có những nhà phát triển quen thuộc với cái này hay cái khác.

  • Nếu khách hàng của bạn thích ý tưởng kết nối với Microsoft, thì hãy đến với ASP.NET. Một số khách hàng sẽ có sự thoải mái hơn về hỗ trợ, nâng cấp, v.v. trong tương lai với MS.

  • Nếu họ thích ý tưởng về máy chủ nguồn mở và Linux, hãy dùng PHP . Điều này có thể khiến một số khách hàng quan tâm do khả năng chuyển đổi của máy chủ web, phần mềm miễn phí, v.v.

Và cuối cùng, nếu họ không quan tâm, thì hãy đi với những gì bạn cảm thấy thoải mái nhất . Không có gì nhiều ngoài điều đó.


8
+1 cho "Cân nhắc chính bạn nên thực hiện là công nghệ nào mà khách hàng của bạn muốn được gắn kết để tiến lên."
Hệ thống xuống

phân nhánh bảo mật là không có tài nguyên để xem mỗi nền tảng đã hoạt động như thế nào?
Edward

3
@loyalpenguin - đó là một câu hỏi trong và của chính nó. Tôi không chắc ý của bạn là "cách mỗi nền tảng hoạt động", nhưng nếu bạn đang nói về các lỗ hổng bảo mật nền tảng (hầu như luôn được vá nhanh chóng) thì đó là điều bạn lo lắng nhất. Đối với hầu hết các phần, mỗi ngôn ngữ là "an toàn" như nhà phát triển đang viết mã.
Nicole

điểm tốt. Chỉ cần một câu hỏi cuối cùng Làm thế nào tôi có thể thoát khỏi câu hỏi đó là an toàn hơn sau đó?
Edward

@loyalpenguin khi tôi nói đó là một câu hỏi khác, tôi có nghĩa là câu hỏi là "Các vấn đề bảo mật nền tảng có phải là nguyên nhân chính gây lo ngại trong các ứng dụng web không? PHP, ASP.NET, Java, Ruby on Rails, v.v.? " Đối với tôi, tôi không chắc chắn rằng nó thực sự một nguyên nhân lớn gây lo ngại.
Nicole

29

Chỉ để đưa ra một nền tảng về những gì tôi đang dựa trên câu trả lời của mình, tôi đã thực hiện phát triển PHP một cách chuyên nghiệp trong hơn 6 năm, tôi đã chơi xung quanh với ASP.NET MVC trong khoảng 3-4 tháng qua và tôi đã làm C # lập trình cho chừng nào lập trình PHP.

Đối với tôi đây là một cuộc tranh luận giữa PHP và C # hơn là cuộc tranh luận giữa PHP và ASP.NET.

Tính năng /
Khả năng mở rộng Tôi nghĩ rằng ASP.NET thắng ở đây và điều này còn hơn vì khả năng sử dụng ngôn ngữ như C #. C # là một ngôn ngữ tốt hơn nhiều so với PHP với hỗ trợ OO. Tôi cũng là một người thích một ngôn ngữ gõ tĩnh (thậm chí đã nghĩ với C # 4.0, tôi tin rằng bạn có thể thực hiện các biến được gõ động). Điều duy nhất mà PHP có trên C # về tính năng ngôn ngữ là các tham số tùy chọn nhưng đó là một điều khác đã được thêm vào trong C # 4.0 (không chắc nó hoạt động tốt như thế nào khi tôi chưa thử nó).

An ninh
có lẽ tôi sẽ nói rằng đó là một sự tẩy rửa giữa hai người. Tôi nghĩ rằng cả hai đều có chức năng giúp bảo mật nhưng cuối cùng công việc của lập trình viên là đảm bảo ứng dụng của họ an toàn.

Các khung
tốt PHP dường như có nhiều khung chính hơn (CakePHP, Codeigniter, Symfony, Zend Framework) và rất nhiều khung nhỏ hơn khác so với ASP.NET. ASP.NET có 2 khung chính từ Microsoft, WebForms (một phần hoàn toàn tào lao) và ASP.NET MVC (lý do tôi bắt đầu tham gia phát triển ASP.NET). Trong khi PHP có nhiều khung công tác hơn, tôi thấy rằng khung công tác ASP.NET MVC 3 tốt hơn bất kỳ khung công tác PHP nào.

Thời gian phát triển trung bình
Tôi nghĩ rằng đối với các dự án nhỏ hơn, thời gian phát triển tốt hơn nhiều trong PHP tuy nhiên khi dự án của bạn tăng kích thước, C # có quy mô tốt hơn trong vấn đề này.

Chi phí
Một số nên được đưa lên là chi phí. PHP chiến thắng trên mặt trận này. Mặc dù bạn có thể chạy ASP.NET trên Mono trong Linux, nhưng nó có vấn đề riêng.

Nếu bạn đang thực hiện một dự án quy mô nhỏ đến trung bình và / hoặc chi phí là một yếu tố, PHP sẽ thắng. Nếu bạn đang làm một dự án quy mô lớn, tôi sẽ chọn ASP.NET w / C # & ASP.NET MVC.


3
Web Forms có lợi ích mặc dù. Ví dụ, hàng ngàn điều khiển sẵn sàng để sử dụng các ứng dụng web xây dựng nhanh chóng là một lợi thế để bán khách hàng của tôi trên một trang web.
Edward

1
Tôi đồng ý với @ryanzec WebForms không phải là rác rưởi và tốt như ASP.NET MVC từ các góc độ khác nhau. Tôi đã sử dụng khung ASP.NET MVC kể từ Bản xem trước 2 của phiên bản đầu tiên trong môi trường thương mại. Ngoài ra, tôi đã sử dụng WebForms trong hơn 7 năm qua. Hơn nữa, bạn không thể tranh luận về chi phí nữa đối với ASP.NET, Microsoft cung cấp các công cụ miễn phí, giờ đây tốt hơn những gì PHP đang cung cấp. Ngoài ra Microsoft đang cung cấp một phiên bản SQL Compact và SQL Server miễn phí. Ngày nay, lưu trữ bên thứ ba cho .NET tương đương với Linux.
Nickz

Mặc dù tôi sẽ đồng ý rằng chi phí lưu trữ ASP.NET đã tốt hơn nhưng tôi vẫn có thể tìm thấy VPS LAMP Hosting rẻ hơn dễ dàng hơn so với lưu trữ VPS Windows.
ryanzec

Ngoài ra, về vấn đề WebForm, nói rằng đó là chuyện tào lao có thể rất khắc nghiệt, đó không phải là tách trà của tôi. Đúng là bạn có thể hoàn thành mọi thứ nhanh hơn tuy nhiên một khi bạn cố gắng làm điều gì đó bên ngoài những gì được cung cấp cho bạn từ các thành phần hoặc một khi bạn sửa đổi nhiều thành phần hiện có, nó sẽ khó hơn theo cấp số nhân. Ngoài ra, toàn bộ cách hệ thống hoạt động với các postback và công cụ có vẻ quá rắc rối đối với tôi để phát triển web. Tôi thích ASP.NET MVC vì nó mang lại cho tôi bộ điều khiển 100% những gì được tạo ra và phù hợp với sự phát triển web tốt hơn theo quan điểm của tôi.
ryanzec

8

PHP vs ASP.NET giống như so sánh táo và cam, có mục tiêu cho các giải pháp khác nhau.

PHP là một khung phù hợp tốt hơn cho các giải pháp khởi nghiệp quy mô nhỏ. PHP sẽ chạy hoặc Linux, windows mà không có quá nhiều yêu cầu. Microsoft ASP.NET là một khung sức mạnh công nghiệp, có mọi thứ bạn có thể tưởng tượng và hơn thế nữa. ASP.NET là rất nhiều tính năng môi trường phong phú. Nhiều người sẽ cho rằng ASP.NET đắt tiền, đó là trường hợp vài năm trước nhưng không còn nữa. Đầu tiên các công cụ là miễn phí (phiên bản express), các tùy chọn cơ sở dữ liệu là miễn phí (SQL Compact hoặc SQL Server 2005 trở lên Express). Mua Hosting bây giờ rất rẻ, vì vậy câu hỏi không phải là tốt hơn mà là phù hợp với giải pháp của bạn. Cá nhân tôi thích ASP.NET, nhưng đó là vì tôi làm việc trong môi trường doanh nghiệp, nơi tính linh hoạt và khả năng mở rộng là rất quan trọng do đó các giải pháp chỉ ra khuôn khổ.

Một điều rất quan trọng là bạn giỏi ngôn ngữ nào nhất? Đây phải là yếu tố cuối cùng trong quyết định.

Nếu mục tiêu của bạn là thuyết phục một khách hàng, thì asp.net là một lựa chọn tốt hơn. Tên công ty lớn ủng hộ một ngôn ngữ làm cho khách hàng cảm thấy thoải mái. Trong trường hợp này, các tùy chọn tốt nhất là (Microsoft) ASP.NET và (Oracle) Java JSP.

EDIT: Tính năng phong phú - ASP.NET cung cấp hai lựa chọn thay thế để xây dựng một trang web WebForms và cách tiếp cận MVC. Vì ngoài .NET framework, bạn phải có các tính năng rất mạnh như WF (quy trình làm việc), DLR (Runtime Ngôn ngữ động), Parallel Linq, Linq, định tuyến, các hình thức quản lý trạng thái dữ liệu khác nhau: các mục HTTPContext, ViewState, Runtime Cache, trang bộ đệm đầu ra, ba loại thực hiện phiên khác nhau InProc, State và SQL Server. ASP.NET thực hiện các hình thức bảo mật khác nhau, ví dụ Nhà cung cấp thành viên và Nhà cung cấp vai trò. Tôi không muốn bỏ túi PHP, nhưng ASP.NET ở một giải đấu khác.


5
Tôi luôn nghe rằng đó là một cái cớ, rằng "Microsoft = Đắt tiền", đó là lý do tại sao tôi học PHP trước. Nhưng tôi phải đồng ý rằng thực sự không còn như vậy nữa.
Edward

Đúng là sân chơi bây giờ khá là khó, thật khó để biết nên sử dụng ngôn ngữ nào trong những ngày này.
Nickz

Chính xác thì "khung sức mạnh công nghiệp" nghĩa là gì? "Tất cả mọi thứ bạn có thể tưởng tượng và nhiều hơn nữa"? "Rất nhiều tính năng phong phú ngoài môi trường"? ASP.NET là những thứ này như thế nào, theo cách mà PHP không có? Cho đến khi bạn đã giải thích rằng, đây chỉ là ngôn ngữ quảng cáo của Microsoft.
Nicole

mục tiêu thiết kế - php ban đầu là viết tắt của các trang chủ cá nhân và được thiết kế để làm cho kịch bản máy chủ đơn giản trở nên dễ dàng. asp.net được xây dựng để cạnh tranh w / java ee như một giải pháp cấp doanh nghiệp. php đã đồng hóa nhiều tính năng trong những năm qua, nhưng "tính năng giải quyết vấn đề" này thông qua sự không nhất quán về ngôn ngữ và các vấn đề nền tảng. Tôi sử dụng php thường xuyên, nhưng nó được và được thiết kế để trở thành ngôn ngữ web, không phải là nền tảng lập trình cho mục đích chung
bunglestink

6

Đã làm việc rộng rãi với cả hai, bạn đã biết rằng các câu trả lời sẽ khác nhau tùy thuộc vào vấn đề và khách hàng. Theo một nghĩa rất chung chung:

  • PHP rất tốt cho các dự án cần làm việc với ngân sách. Ví dụ: bạn sẽ không bị ảnh hưởng với phí cấp phép cơ sở dữ liệu lớn.
  • ASP.NET là tuyệt vời cho các dự án cần loại hỗ trợ và văn hóa nhà phát triển mà Microsoft cung cấp.

Nếu bạn đang biên soạn một danh sách các sự kiện cho khách hàng của mình, hãy căn cứ vào những gì bạn biết. Nghiên cứu của bạn, cho dù kết quả của bạn có thiên vị đến đâu, vẫn tốt để có được điểm đạn của bạn.


8
Nó làm tôi khó chịu khi .Net tự động được liên kết với "phí cấp phép cơ sở dữ liệu lớn". Tất nhiên bạn phải biết rằng .Net có thể giao tiếp với khá nhiều RDBMS, miễn phí và không, và tất nhiên, PHP cũng vậy, miễn phí và không (và nó không giống như Microsoft là RDBMS phổ biến duy nhất có phí cấp phép lớn).
quentin-starin

3
Chưa kể rằng các phiên bản Express và Web của SQL Server có phí cấp phép hợp lý hơn nhiều (miễn phí trong trường hợp Express).
quentin-starin

Xin lỗi, không có nghĩa là irk. MS dường như bán tốt hơn khi là một chồng đầy đủ và tôi đã giả sử một công cụ DB lớn hơn Express.
Fred Wilson

1
Không được thực hiện cá nhân, tôi dường như chỉ thấy hiệp hội được thực hiện khá thường xuyên.
quentin-starin

1
@loyalpenguin: Theo kinh nghiệm của tôi, rất hiếm khi tìm thấy một công cụ lưu trữ không được hỗ trợ trong .Net. Tôi không thể bình luận về việc liệu điều này có đúng với PHP hay không.
quentin-starin

1

Các điều khiển .net đẹp hơn nhiều so với những gì bạn có thể tìm thấy với nền tảng PhP. Nhìn vào Infragistic chẳng hạn, tương đương với LAMP là gì?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.