Pages

3 thg 7, 2010

PHP và ASPX

Tại sao chúng tôi chọn ngôn ngữ lập trình web là ASPX trên nền tảng công nghệ .NET. ?

Tài liệu này trình bày quan điểm riêng của công ty HTS về 2 công nghệ chủ yếu làm web hiện nay là PHP và ASPX. Việc trình bày các quan điểm này chúng tôi không đi sâu vào chi tiết kỹ thuật hay định nghĩa mà tài liệu này chỉ là những nhận định của chúng tôi dựa trên quá trình tìm hiểu của riêng chúng tôi về PHP và ASPX

Các thông tin chi tiết và kỹ thuật về PHP và ASPX thì các bạn vui lòng tìm hiểu thông tin từ các nhà cung cấp các sản phẩm trên. Chúng tôi luôn đón nhận sự phản hồi và góp ý của tất cả những ai có thiện ý giúp chúng tôi phân tích rõ hơn vấn đề.

Trước tiên, cần phải hiểu rõ là PHP là ngôn ngữ thiết kế web mã nguồn mở, còn .NET là một bộ công cụ lập trình do Microsoft phát triển. Chúng ta chỉ so sánh 2 công cụ chủ yếu để thiết kế web là ASP.NET và các công cụ thiết kế web được phát triển từ nền PHP (ví dụ như:Joomla, Drupal..). Để so sánh PHP với ASP.NET ở trên diện rộng hơn chúng ta nên so sánh giải pháp LAMP (Linux + Apache + MySQL + PHP hay Python) với ASP.Net + SQL Server (hay Oracle)
Dĩ nhiên mọi so sánh đều không thể toàn diện và đầy đủ. Từng giải pháp đều có những phần mà giảp pháp kia không thể bằng được. Dưới đây là những so sánh có tính tổng quát nhất.

1. Thị Phần

Theo thống kê mới nhất, hiện nay số lượng web PHP chiếm 36.1%, ASP.Net chiếm 54.4%, và 9.5% là các ngôn ngữ khác như Java…Tuy nhiên tốc độ tăng trưởng của PHP nhanh hơn đáng kể so với ASP.Net (các giải pháp web trên Java đang bị sụt giảm thị phần. Các bạn có thể xem ở bài viết này: http://www.businessweek.com/technolo...213_042973.htm ) nhưng nếu chia tỉ lệ 36.1% của PHP đó cho các công cụ như: Joomla, Drupal, PHPBB, Mambo… thì tỉ lệ của mỗi công cụ PHP này không là bao nhiêu.

Điều này phản ánh các xu thế sau:
+ PHP bắt đầu phát triển mạnh do lợi thế mã nguồn mở miễn phí. Chi phí thực hiện rẻ, giảm giá thành phát triển.
+ ASPX vẫn là công cụ phát triển web đứng đầu thế giới bởi tính ổn định, ưu việt, cùng mức độ đáp ứng tốt cửa nó với các dự án từ nhỏ đến lớn.

2. Kỹ Thuật

Theo các đánh giá chung, các giải pháp ASPX của Microsoft đáp ứng rất tốt ở cấp Enterprise (cấp doanh nghiệp vừa và lớn, cái này thì chỉ có java J2EE mới sánh được). Xin đừng nhầm lẫn giữa khái niệm Enterprise với website có nhiều người truy cập, ở đây nói về độ phức tạp của các dịch vụ, độ tin cậy, tính khả chuyển… những tiêu chuẩn mà chỉ khi thiết kế các ứng dụng phục vụ cho các tập đoàn lớn thì chúng ta mới đụng tới.

PHP rất thích hợp hơn cho những nhóm phát triển nhỏ, các website nhỏ, ít kinh phí. Đáp ứng tốt cho cách phát triển kiểu agile, nghĩa là có thời gian phát triển và đưa vào sử dụng nhanh. Toàn bộ mã nguồn và các plug in cuả nó được chia sẻ miễn phí trên mạng nên thời gian hoàn thành web là rất nhanh.

3. Ngôn ngữ lập trình, nhân lực phát triển

ASP.Net, nói chính xác hơn là C# hay VB.Net, là ngôn ngữ lập trình hướng đối tuợng được thiết kế tốt, thừa hưởng rất nhiều thế mạnh của Java. ASP.Net cũng có bộ công cụ phát triển hạng nhất: Visual Studio.Net. Để tạo một trang web đơn giản bằng ASP.Net khá dễ, nhưng để hiều sâu sắc cho những vần đề phức tạp hơn lại là cả một quá trình và giá phải trả là tài nguyên và thời gian học. Do đó, những người thiết kế ASP.Net điều phải giỏi về kỹ thuật.
PHP là một ngôn ngữ được sinh ra với mục đích duy nhất là để dùng lập trình Web: giản dị và dễ hiểu. Mãi đến PHP 5, lập trình hướng đối tượng mới được đưa vào tương đối đầy đủ. Công cụ phát triển (IDE) cho PHP không có cái nào có thể sánh được với bộ Visual Studio. Nhưng hiện nay, nếu dùng Eclipse plug-in cũng có thể nói đạt 8/10 so với bộ Visual Studio

Một vấn đề nữa là PHP thường nhúng mã logic chương trình vào trang web (embedded scripts) còn ASP.Net tách rời phần hiển thị và logic rất rõ ràng (chúng ta nói tới kiến trúc MVC: Modal –View - Controller). Do đó, tốc độ hiển thị của APS.Net nhỉnh hơn chút đỉnh so với PHP

Vấn đề nhân lực, vì các lập trình viên ASP.Net giỏi kỹ thuật nên thích hợp cho các nhóm phát triển lớn. Ngược lại việc phát triển trên nền PHP đơn giản hơn, nên dễ tìm ra nhân lực cho các dự án nhỏ.

4. Chi Phí

Rõ ràng là chi phí phát triển web bằng ASP.Net tốn kém hơn nhiều so với PHP. Bạn phải trả phí bản quyền cho SQL Server, Windows Server, Visual Studio, MSDN. Ngoài ra, việc hỗ trợ kỹ thuật của ASP.Net cao hơn nhiều so với LAMP là của cộng đồng mã nguồn mở. Dù rằng ở VN chúng ta thường dùng phần mềm “chùa” nhưng nếu tạo một ứng dụng thương mại nghiêm túc thì chi phí bản quyền phải trả là khá lớn.

Ngược lai, chi phí sở hữu tổng cộng (Total ownership cost) của LAMP lại có thể cao hơn nhất là khi bạn quản trị nhiều server Linux lớn do thiếu các chuyên gia giỏi về Linux. Đây là vấn đề gây tranh cãi, trong khi Microsoft khẳng định chi phí cho Windows rẻ hơn thì một số nghiên cứu lại cho kết quả ngược lại, ví dụ bản báo cáo này http://www-1.ibm.com/linux/RFG-LinuxTCO-vFINAL-Jul2002.pdf

4. Tốc độ

Có khá nhiều tranh cãi về tốc độ của LAMP hay của ASP.Net + SQL Server cao hơn. Cái này còn tùy vào cấu hình, đặc thù của ứng dụng. Nhìn chung về mặt web server, Linux “có tiếng” hơn Windows Server về tốc độ (Google, Yahoo đều dùng Linux server cho các dịch vụ của mình và tôi không dám phàn nàn gì về tốc độ cả!). Theo một số người, PHP script nhanh hơn ASP.Net script (như C#, VB.Net) trong các tác vụ thông thường và tốn ít bộ nhớ hơn, tuy nhiên điều này cũng còn nhiều tranh cãi!.

Về database server, MySQL có tốc độ rất tốt (đặc biệt là kiểu MyISAM) nhưng thiếu một số tính năng cao cấp như stored procedure, trigger (phiên bản MySQL 5 có hỗ trợ các tính năng này nhưng còn yếu và có nhiều lỗi) của SQL Server. Tất nhiên, PHP cũng có thể dùng với nhiều database khác, còn ASP.Net nếu dùng với Oracle thì không có gì phải bàn về tốc độ cả.

Ý kiến riêng của tôi là bạn không cần phải băn khoăn gì về tốc độ của MySQL hay SQL Server cho bất kỳ website nào dù lớn hay nhỏ. Vấn đề chỉ là thiết kế ứng dụng hiệu quả và tìm được dịch vụ hosting tốt. Điều này cũng đúng cả với PHP và ASP.Net.

5. Bảo mật và Virus

Linux luôn có tiếng tốt về bảo mật và cũng ít bị các loại virus nhắm vào. Nhưng thực tế cho thấy là ít có hacker nào thèm tấn công Linux chứ chưa hẳn Linux tốt hơn WinDows. Bạn thử nghĩ xem, nếu bạn là hacker thì bạn sẽ muốn viết công cụ để hack 10 máy Linux hay 1 triệu máy Windows? Để cho trang web của bạn thực sự bảo mật thì lại là vấn đề thiết kế và lập trình. Cả PHP và ASP.Net đều có những lỗ hổng có thể khai thác. Tuy nhiên, do mã nguồn chia sẻ nên lỗi của web PHP này cũng sẽ xuất hiện tại web PHP khác cùng sử dụng mã ấy. Do đó, nếu bạn không muốn việc bảo mật của mình phải trông chờ vào lòng tốt của bá tánh thì ASP.Net là lựa chọn phù hợp.

6. Cộng đồng phát triển và mã nguồn

Nói chung bạn có thể nhận đựơc nhiều mã nguồn và sự giúp đỡ từ cộng đồng mã nguồn mở như PHP miễn là bạn có kỹ năng “Search” tốt. Ngược lại MSDN đựơc đầu tư công phu và rất hữu ích giúp cho việc tìm kiếm nhanh chóng hơn. Một vài website như Codeproject.com cũng có rất nhiều mã nguồn ASP.Net giá trị.

TÓM LẠI

Chúng ta thường bị “nói quá” về ngôn ngữ này hay ngôn ngữ kia tốt hơn, thực tế là cái nào tốt hơn hoàn toàn phụ thuộc vào kỹ năng của người lập trình và quản lý hệ thống. Trong khi phần lớn các website lớn của Việt Nam chọn ASP.Net thì PHP và Java lại được các LTV Ấn Độ ưa thích hơn. Có thể không hẳn vì các LTV Ấn Độ “giỏi” hơn chúng ta mà vì chúng ta đi sau nên ưa chuộng những kỹ thuật ra đời sau như ASP.Net.

Lựa chọn một giải pháp thích hợp cho website của mình là một việc rất khó, bạn cần cân đối các giá trị và những khó khăn mà giải pháp đó đem lại. Cá nhân tôi, nếu chọn một giải pháp làm website cho khách hàng thì tôi sẽ chọn ASP.Net vì hai lý do
(1) thời gian phát triển nhanh hơn, dễ test và deploy hơn và
(2) dễ tìm nhân viên chuyên nghiệp hơn.
Nhưng nếu làm cho cá nhân tôi, các đơn vị ít kinh phí thì tôi chọn LAMP vì chi phí thấp hơn và việc trển khai nhanh hơn

1 nhận xét:

Unknown nói...

Bài phân tích rất hay,nhưng hay hơn nếu đưa thêm ca web java vào phân tích ^^!

Đăng nhận xét

Powered By Blogger