Vài nền tảng đã vẽ nên câu chuyện về ASP.NET (hoặc .NET nói chung) từ cộng đồng phát triển. Phần lớn các tiêu cực xuất phát từ những người đã không dành thời gian với .NET, không thích .NET. Không những thế, họ thường dựa trên quan niệm sai lầm hay thù hận để chỉ ra những ý kiến riêng của mình, và họ làm hại đến những người khác tìm cách để tìm hiểu công nghệ mới và nền tảng riêng của mình. Vì vậy, chúng ta hãy xem xét những lý do và thêm một liều thuốc thực tế trên lý do đó.
Nó được xây dựng bởi Microsoft
Đây là lý do ASP.NET bị ghét.
Microsoft là công ty phần mềm lớn, và giống như tất cả các công ty khác, họ đang kinh doanh để kiếm tiền. Thật không may, đây là 1 lý do ASP.NET bị ghét: đó là công nghệ của Microsoft, và vết nhơ vẫn lưu lại trong tâm trí của nhiều người trên người khổng lồ này. Bạn sẽ dễ dàng tìm thấy thú vị từ các công ty công nghệ lớn khác, như Google và Apple. Cá nhân tôi nghĩ rằng đa số người dân là những người có đầu óc bình thường. Họ không thực sự quan tâm những người làm ra sản phẩm miễn là sản phẩm hoạt động tốt.
Nhưng tôi không nói về những người bình thường. Những người bình thường không nhìn khả năng "ASP.NET" và có một sự thôi thúc sẽ comment 1 cách ngớ ngẩn. Thay vào đó, tôi đang nói về các nhà phát triển (và chuyên viên máy tính) đối xử với công nghệ, hoặc các công ty tạo ra nó, như một tôn giáo.
Thật buồn rằng công nghệ giống như 1 tôn giáo sử dụng suy nghĩ để tồn tại. Công nghệ chỉ là công cụ, và một nhà phát triển thực sự sẽ cố gắng sử dụng nhiều công cụ để giúp hoàn thành công việc của mình được tốt. "Bạn có biết bạn không thích nó cho đến khi bạn thử nó". Để cho người nào đó không thích một cái gì đó, người đó hãy cố thử nó. Vì vậy, không nên lắng nghe những người phê bình nó, họ đã không thử nó và đã không được hình thành kỹ năng về nó. Nếu bạn quyết định bạn muốn thử nó, họ sẽ cố gắng ngăn cản bạn bằng cách nói rằng chi phí bỏ ra quá nhiều.
Quan niệm sai lầm: Nó là đắt
Bạn thử tìm kiếm bất kỳ bài viết so sánh ASP.NET với nền tảng khác. Trước khi thảo luận về các chi phí thực tế của một cái gì đó, điều quan trọng là phải đưa thuật ngữ "đắt" trong bối cảnh nào, ví dụ như chi phí cho việc sử dụng cá nhân có thể được coi là giá rẻ trong một môi trường kinh doanh. Trong kinh doanh, có nhiều yếu tố tạo nên "chi phí" của một sản phẩm. Giá ban đầu rõ ràng cần phải được xem xét, nhưng lợi ích của sản phẩm cũng là yếu tố chi phí tổng thể.
Nếu một sản phẩm là 10,000$, nhưng nó giúp tiết kiệm công ty 1,000$/tháng, quyết định mua hàng là không có ưu việt. Nhưng trên một mức độ cá nhân, nó sẽ nhiều hơn khả năng khó có thể biện minh cho việc ban đầu chi phí 10,000$.
Vì vậy, khi nói về chi phí, điều quan trọng để giữ cho mọi thứ trong quan điểm theo nội dung mà nó sẽ được phát sinh. Để giữ cho mọi thứ đơn giản, giả sử rằng nếu bạn đang đọc bài này, bạn đang quan tâm nhiều hơn với chi phí cá nhân hơn so với chi phí kinh doanh (nếu bạn sử dụng môi trường Windows, ASP.NET là giá rẻ).
Bạn không thực sự cần Windows để phát triển các ứng dụng ASP.NET, nhờ các dự án Mono .
Bạn có thể lấy chi phí lớn nhất ra: hệ điều hành Windows. Bạn không thực sự cần Windows để phát triển các ứng dụng ASP.NET, nhờ các dự án Mono (thêm về điều này sau), nhưng Mono thường đứng sau .NET Framework sắp ra lò của Microsoft. Vì vậy, nếu bạn muốn tất cả các tính năng mới nhất và .NET tốt nhất, bạn sẽ cần Windows. Nhất là OEM(các công ty như Dell , HP, Acer, vv) gửi máy tính của họ với Windows đã được cài đặt; như vậy, nếu bạn mua máy tính từ một chuỗi cửa hàng điện tử như Best Buy, rất có thể bạn sẽ bị tổn thương vì máy tính sử dụng Windows. Nếu nhiều nguồn người dùng và xây dựng máy tính hoặc kế hoạch của riêng bạn chạy trên Windows trong máy ảo, bạn sẽ phải mua một bản sao của Windows. Phiên bản OEM của Windows sẽ chạy bất cứ nơi nào từ 99$ đến 189$, tùy thuộc vào phiên bản Windows bạn mua. Bạn không cần bản chuyên nghiệp (139$ OEM) hoặc Ultimate (189$ OEM), nhưng nếu bạn là người sử dụng, bạn sẽ có nhiều khả năng muốn lựa chọn một trong hai phiên bản (phiên bản OEM là rẻ hơn so với phiên bản bán lẻ, nhưng chúng được gắn với phần cứng bạn kích hoạt trên chúng).
Chi phí phát triển
Chúng ta hãy xem xét chi phí phát triển. Phát triển ASP.NET được cho là đắt vì hai lý do.
1. Đó là Microsoft. Họ được cho là không cho bất cứ điều gì miễn phí, nhưng đó là chính xác những gì họ làm. Tất cả mọi thứ bạn cần để phát triển các ứng dụng ASP.NET (hoặc ứng dụng .NET nói chung) có thể thu được mà không tốn một xu.
Người mới bắt đầu: Đầu tiên, Microsoft đưa ra WebMatrix, một môi trường phát triển nhắm vào người mới bắt đầu. Nó kết hợp môi trường phát triển tích hợp (IDE) với máy chủ web được xây dựng trong (IIS Express) và cơ sở dữ liệu (SQL Compact Edition). Nó cũng có các công cụ để giúp người dùng triển khai các trang web của họ đến máy chủ từ xa.
Người dùng cao cấp: Đối với các nhà phát triển nâng cao hơn, Microsoft có sẵn các phiên bản Express của Visual Studio. Như WebMatrix, các phiên bản cắt giảm của Visual Studio là miễn phí, nhưng chúng cung cấp một số tính năng và khả năng được tìm thấy trong các phiên bản đầy đủ của Visual Studio. Sản phẩm web nhanh tập trung vào là Visual Web Developer Express (VWD), và nó cũng có một máy chủ web được xây dựng trong đó. Nó không có cơ sở dữ liệu được xây dựng bên trong, nhưng Microsoft đưa ra SQL Server Express, một phiên bản cắt giảm của SQL Server, bạn có thể sử dụng để phát triển (và thậm chí một số trường hợp triển khai). Nếu sau đó bạn quyết định như Visual Studio và muốn mua phiên bản đầy đủ, các dự án phát triển với bạn VWD có thể được mở ra với Visual Studio.
Sinh viên: Và nếu bạn là sinh viên, bạn có thể nhận được rất nhiều phần mềm của Microsoft (Visual Studio Pro, Windows Server OS, và Expression Studio,...) miễn phí qua chương trình DreamSpark.
2. Thứ hai, dựa trên cơ sở lưu trữ Windows được cho là đắt. Mười năm trước, việc kiếm tìm hosting dành cho .NET là hiếm. Tuy nhiên ngày nay, bạn có thể tìm thấy không thiếu hosting giá cả hợp lý cho ASP.NET.
Vì vậy, chi phí bây giờ không thực sự là vấn đề, nhưng nhiều người phản đối sau đó sẽ nói ASP.NET chỉ thích hợp cho các trang web doanh nghiệp so với trang web cá nhân.
Quan niệm sai lầm: Nó là nhỏ, trang web cá nhân
Chỉ có nhìn vào lớp thư viện .NET Framework mới có thể nhận ra rằng nó sinh ra để "dành cho doanh nghiệp".
Nó thực sự dễ dàng để nhận ra rằng ASP.NET chỉ phù hợp với các trang web quy mô lớn. Microsoft là công ty nền tảng, các sản phẩm của họ chủ yếu tập trung hướng tới các giải pháp kinh doanh. .NET là rất lớn trong môi trường kinh doanh, và chỗ đứng của nó tiếp tục phát triển như Microsoft mở rộng sản phẩm mới và hồi sinh Azure (nền tảng Điện toán đám mây của Microsoft) và Windows Phone,... . Nó gần như là nếu hướng dẫn framework cho các nhà phát triển nhận thức rằng các ứng dụng .NET(ASP) cần phải được cấu trúc cao theo thiết kế hướng đối tượng. .NET phức tạp, những việc đơn giản không phải luôn đơn giản như nó phải được kỳ vọng.
Đơn giản
Đầu tiên, Microsoft muốn bạn phát triển trên nền tảng của họ, và họ đã nhận ra rằng nó cần một số (có lẽ rất nhiều) đơn giản hóa để phát triển. PHP là phổ biến vì nó là đặc biệt bởi vì đơn giản, và đó là lý do chính Microsoft phát hành WebMatrix: cung cấp các nhà phát triển mới (phát triển .NET hoặc phát triển web nói chung.) Một cách tiếp cận đơn giản để viết các trang web với ASP. NET.
Không chỉ là tất cả-trong-một IDE dễ sử dụng, nhưng Microsoft đã tạo ra một API đơn giản để phát triển ASP.NET dễ dàng hơn và ít phức tạp hơn.
Nhiều phương pháp tiếp cận
Bạn cũng có thể xây dựng các trang web với cùng một loại "kịch bản" phát triển mạnh trong PHP.
Có nhiều phương pháp để phát triển ASP.NET. Nếu bạn muốn tạo ra những kiệt tác có cấu trúc cao của thiết kế hướng đối tượng, bạn có thể. Nhưng bạn cũng có thể xây dựng các trang web với cùng một loại "kịch bản" phát triển mạnh trong PHP. Vấn đề là, phát triển ASP.NET là đủ linh hoạt để phù hợp với nhu cầu của bạn, và bạn có thể chọn phương pháp tiếp cận phát triển phù hợp nhất với bạn.
Lạ lùng thay, có một ý tưởng hơi phổ biến rằng ASP.NET là không phù hợp cho các trang web doanh nghiệp đẳng cấp.
Quan niệm sai lầm: Nó lớn, trang web doanh nghiệp
ASP.NET trội trong không gian doanh nghiệp. Tuy nhiên, chúng ta hãy xem xét một trang web trong thế giới thực (tốt, một mạng lưới các trang web) chạy trên ASP.NET.
Bạn đã bao giờ nghe nói về StackOverflow.com ? Bạn có thể biết, và nếu bạn không biết, đó là một trang web Q&A cho các nhà phát triển (không phân biệt công nghệ). Một nguồn tài nguyên vô giá.
StackOverflow là thành viên của Stack Exchange Network, một mạng lưới các trang web Q & A một loạt các chủ đề: máy chủ, cơ sở dữ liệu, Legos, khoa học viễn tưởng, xe hơi,... Hiện nay đang có 71 trang web trong mạng, và nó đang tiếp tục phát triển.
Hầu hết các mã chạy trên trang web là có nguồn mở, và chúng thường cung cấp thông tin về mạng nói chung. Trong một bài đăng blog Tháng 3 năm 2011 , Kyle Brandt cung cấp tổng quan về các công nghệ tạo nguồn cho giao dịch mạng Stack, cũng như lưu lượng truy cập mạng được. Ghi nhớ thông tin này là liên quan đến toàn bộ mạng ngăn xếp Exchange. Nó được 95 triệu lượt xem một tháng và xử lý 800 HTTP yêu cầu lần thứ hai, và những yêu cầu được xử lý bởi mười hai (có chỉ mười hai) máy chủ Windows web, hai máy chủ MS SQL Server, hai Linux chuyên cần bằng tải, và hai máy chủ bộ nhớ đệm Linux.
Đọc lại những số liệu thống kê. Thật ngạc nhiên rằng chỉ có mười hai máy chủ, phục vụ nhiều trang web khác nhau. Đó là một minh chứng cho máy chủ Microsoft và kiến trúc ứng dụng.
Nó kiểu tĩnh
Ngôn ngữ động cai trị web. Có thể là ở phía máy chủ, nơi các ngôn ngữ như PHP, Ruby, Python, Perl và trực tiếp, hoặc trong trình duyệt với JavaScript, các ngôn ngữ động là xương sống của trang web. Nó không phải là các thứ tiếng sau tốt hơn, nhưng chúng nhanh chóng được thông qua bởi vì ngôn ngữ động thường dễ dàng hơn để tìm hiểu và hiểu hơn kiểu ngôn ngữ tĩnh.
Vì vậy, cộng đồng lớn của các nhà phát triển đã chỉ được sử dụng các ngôn ngữ động, và cộng đồng có ác cảm với ngôn ngữ tĩnh.
Ngôn ngữ tĩnh có một hệ thống kiểu nghiêm ngặt.
Nó vô cùng dễ dàng để giới thiệu các lỗi vào ứng dụng của bạn nếu bạn không cẩn thận. Thông thường bạn sẽ không tìm thấy lỗi đó cho đến khi runtime, và một nguyên nhân phổ biến của lỗi là sự phân công của kiểu khác và không lường trước được có giá trị cho một biến quan trọng. Đây là nơi mà lợi ích chính của ngôn ngữ tĩnh: kiểu an toàn. Ngôn ngữ tĩnh có một hệ thống kiểu nghiêm ngặt, trong đó một biến chỉ có thể chứa một kiểu giá trị (ví dụ: biến khai báo là số nguyên chỉ có thể chứa các giá trị số nguyên, nó không thể chứa một chuỗi hoặc số dấu chấm động). Nếu bạn nhầm lẫn gán chuỗi cho biến số, ngay lập tức biết lỗi khi bạn biên dịch mã vì trình biên dịch ngăn chặn và cảnh báo bạn về các lỗi.
Kiểu an toàn cũng có thể làm giảm bớt các kiểu kiểm tra bạn cần phải thực hiện trong các ngôn ngữ động. Ví dụ, có bao nhiêu lần bạn viết code như sau để đảm bảo dữ liệu chức năng chấp nhận:
function add($a, $b) {
if (is_int($a) && is_int($b)) {
return $a + $b;
}
// throw error
}
Đây là chức năng PHP đơn giản cộng hai số với nhau. Để đảm bảo kết quả, kiểm tra nếu giá trị cung cấp là kiểu thích hợp là bắt buộc (phải thừa nhận rằng, kiểu kiểm tra ở đây không hoàn chỉnh, có nhiều kiểu số khác hơn so với số nguyên); nếu không, ứng dụng của bạn có thể phá vỡ. Ngược lại, chúng ta hãy nhìn vào mã C# tương đương:
int add(int a, int b) {
return a + b;
}
Mã này định nghĩa phương thức add(). C # là ngôn ngữ phổ biến nhất .NET, Và nó hoàn toàn là hướng đối tượng. Không có chức năng; chỉ phương thức của lớp. Phương thức này chấp nhận hai giá trị nguyên (kí hiệu là int từ khóa trước định danh a và b), và nó sẽ trả về một số nguyên như kí hiệu là int trước khi thêm. Bởi vì C # là ngôn ngữ tĩnh, kiểu kiểm tra được thực hiện bởi trình biên dịch không phải do bạn. Vì vậy, nếu bạn đã gọi phương thức này, vượt qua chuỗi như là một trong các đối số, như add ("hello", 123) , và cố gắng để biên dịch mã, trình biên dịch sẽ ngăn chặn quá trình xây dựng và cảnh báo bạn về các lỗi. Tuy nhiên, bạn thậm chí sẽ không cố gắng để biên dịch mã vì Visual Studio thực hiện kiểu riêng của mình và kiểm tra cú pháp; IDE sẽ cảnh báo bạn về các lỗi trước khi bạn cố gắng biên dịch (xem hình dưới đây của Visual Studio 2010).
Cũng cho rằng Microsoft liên tục cập nhật và cải thiện ngôn ngữ C#. Trong hai phiên bản đầu tiên của ngôn ngữ, bạn phải xác định kiểu của biến khi khai báo nó như thế này:
XmlDocument document = new XmlDocument();
Mã này tạo ra thể hiện của lớp XmlDocument bằng cách tuyên bố kiểu của nó trước tên của biến. Cú pháp này là khá cồng kềnh và thêm đánh máy hơn rất nhiều, nhưng C # 3.0, bạn có thể chỉ cần sử dụng từ khóa var để xác định biến, như thế này:
var document = new XmlDocument();
.NET cho phép phiên bản PHP, Ruby, Python, và PERL.
Trình biên dịch là đủ thông minh để suy ra rằng biến document là XmlDocument. Cú pháp này loại làm mờ ranh giới giữa các ngôn ngữ năng động và tĩnh. Bạn sẽ có được sự đơn giản, khai báo biến typeless với những lợi ích của kiểu an toàn.
Nhưng nếu tôi vẫn không thể thuyết phục bạn thử C#, các trang web ASP.NET không phải được viết bằng C# (hoặc thậm chí VB.NET). Có .NET cho phép phiên bản PHP, Ruby, Python, và PERL mà bạn có thể sử dụng để viết các trang web ASP.NET, và chúng chỉ là động như bình thường để nhờ ynamic Language Runtime, một tính năng của .NET 4. Vì vậy, tôi khuyên bất cứ ai chọn lên ASP.NET thì nên học C#.
Nó là Biên soạn
Các ngôn ngữ động giống nhau mà quy tắc web cũng được thông dịch, và có một lợi ích nhất đi kèm với ngôn ngữ thông dịch. Không giống như các môi trường biên dịch như ASP.NET nơi mà bạn thường viết mã, biên dịch nó, và tải nó lên, môi trường thông dịch cho phép bạn chỉ cần viết mã và tải nó lên. Ý tưởng chung được rằng môi trường biên soạn yêu cầu thêm một bước trong phát triển. Trình biên dịch cho chúng ta nhiều lợi ích mà chỉ có thể có được trong môi trường ngôn ngữ thông dịch.
Đầu tiên, trình biên dịch kiểm tra mã và cung cấp những cảnh báo. Hãy xem xét các mã sau đó sẽ gây ra cảnh báo:
string DoSomething()
{
var foo = "Hello";
var bar = "World!";
return foo;
}
Mã này định nghĩa phương thức gọi là DoSomething(). Phần thân của nó tạo ra hai đối tượng chuỗi, foo và bar, và foo được trả lại cho người gọi. Các biến bar không được sử dụng, do đó, trình biên dịch sẽ phát cảnh báo rằng bar được phân công nhưng giá trị của nó không bao giờ được sử dụng. Nó có thể tạo ra bar và quên nó, hoặc là tôi đã kết thúc không cần nó. Nhưng nó có thể là nguồn gốc của lỗi nếu tôi quên bar đã tồn tại và sử dụng nó ở những nơi khác trong phương thức này. Trình biên dịch gợi sự chú ý để tôi có thể giải quyết nó và tránh lỗi trong tương lai. Dưới đây là một ảnh chụp màn hình của những gì Visual Studio nói với tôi:
Bạn có muốn ví dụ khác?
void DoSomethingElse()
{
var foo = true;
if (foo = false)
{
// this code will never execute
}
}
Trong định nghĩa phương thức này, một biến boolean, foo , và xác định là đúng. Sau đó nó được sử dụng trong mệnh đề if, nơi mà nó được gán giá trị là sai. Đó chính xác là những gì tôi dự định, nhưng foo == false (không hợp lý toàn tử ! sẽ tốt hơn ở đây ... nhưng nó không hoạt động trong ví dụ của tôi). Nó không phải là lỗi, do đó trình biên dịch sẽ biên dịch mã. Tuy nhiên, nó sẽ đưa ra một cảnh báo yêu cầu == thay vì = . Đây là vấn đề tìm thấy trong môi trường thông dịch, nhưng tôi cần chạy ứng dụng và thử nghiệm nó để tìm ra những sai lầm.
Thứ hai, trình biên dịch kiểm tra mã lỗi. Đương nhiên, trình biên dịch không thể bắt lỗi logic, nhưng nó có thể kiểu kiểm tra và kiểm tra cú pháp của mã. Mặc dù, IDE sẽ làm những việc này cho bạn mà không cần một trình biên dịch.
Cuối cùng, bạn sẽ tăng hiệu suất. Biên dịch mã chạy nhanh hơn so với thông dịch. Phải thừa nhận rằng, .NET không phải là một môi trường thực sự biên soạn. Mã của chúng tađược biên dịch thành một ngôn ngữ trung gian (IL), mà sau đó biên soạn just-in-time bởi .NET runtime. IL, được tối ưu hóa, và .NET runtime thực hiện nó. Nhưng nó vẫn còn rất nhanh.
Trong thực tế, thực hiện ASP.NET nhanh hơn so với PHP .
Quan niệm sai lầm: Nó là mã nguồn đóng
Microsoft cung cấp mã nguồn .NET Framework có sẵn miễn phí.
Microsoft là một công ty bán phần mềm. Vì vậy, người ta nghĩ rằng ASP.NET (và .NET nói chung) là mã nguồn đóng, nhưng tùy trường hợp. Microsoft làm ra các mã nguồn cho .NET Framework có sẵn miễn phí, và bạn có thể vào trong mã khi gỡ lỗi các ứng dụng. Bạn thậm chí có thể xây dựng phiên bản cá nhân của riêng bạn của NET Framework..
Microsoft cũng cung cấp cho bạn truy cập vào mã nguồn của ASP.NET, như WebForms và MVC, qua CodePlex; cho bạn khả năng để kiểm tra các tính năng mới và cung cấp thông tin phản hồi cho nhóm ASP.NET. Tôi khuyến khích các nhà phát triển sử dụng .NET tải về những tài nguyên miễn phí và nghiên cứu chúng. Bạn sẽ đạt được một sự hiểu biết lớn hơn về cách hoạt động dưới, và bạn có thể áp dụng những kiến thức tương tự khi viết mã.
Đó chỉ dành cho Windows
Sự cởi mở của Microsoft với .NET Framework là những gì đã giúp khai sinh các dự án Mono, một phiên bản nền tảng của .NET Framework. Trong khi Mono không hỗ trợ chính thức Microsoft, dự án đã được công khai thừa nhận bởi Microsoft. Mono không đi xa; trong thực tế, nó ngày càng phổ biến Bất kể những gì nền tảng yêu thích, bạn có thể sử dụng .NET Framework và C# để viết các ứng dụng cho nó (thậm chí bạn có thể viết các ứng dụng iOS với Mono).