Trong Visual Studio, bạn có thể tạo ra Web Application Projects, Web Site Projects. Từng loại dự án có ưu điểm và nhược điểm riêng, điều này thật sự hữu ích để hiểu sự khác biệt giữa chúng để chọn loại dự án tốt nhất cho nhu cầu của bạn. Bạn phải chọn loại dự án thích hợp trước khi bạn tạo dự án, bởi vì thực tế không dễ dàng để chuyển thành loại dự án khác.
Đối với một số tình huống, bạn không có lựa chọn. Ví dụ, nếu bạn muốn tạo ứng dụng ASP.NET MVC, bạn phải sử dụng Web application projects.
Chủ đề này bao gồm các phần sau:
- Script
- Tóm tắt các sự khác biệt
- Cấu trúc tập tin dự án
- Compilation
- Triển khai
Script
Script trong Web application projects là sự lựa chọn ưa nhìn bao gồm:
• Bạn muốn để có thể sử dụng Chỉnh sửa và Tiếp tục tính năng của các trình gỡ lỗi Visual Studio.
• Bạn muốn chạy kiểm thử đơn vị trên mã đó trong các tập tin lớp được liên kết với các trang ASP.NET.
• Bạn muốn tham chiếu các lớp được liên kết với các trang và điều khiển người dùng từ các lớp độc lập.
• Bạn muốn có được sự phụ thuộc dự án giữa các dự án Web.
• Bạn muốn trình biên dịch tạo ra assembly duy nhất cho toàn bộ trang web.
• Bạn muốn kiểm soát tên assembly và số phiên bản được tạo ra cho các trang web.
• Bạn muốn sử dụng MSBuild hay Team Buiding để lập dự án. Ví dụ, bạn có thể muốn thêm các bước pre-build và post-build.
• Bạn muốn tránh đặt mã nguồn trên máy chủ product.
• Bạn muốn sử dụng các công cụ triển khai tự động có sẵn trong Visual Studio 2010.
Kịch bản trong đó Web site projects là sự lựa chọn ưa thích bao gồm những điều sau đây:
• Bạn muốn bao gồm cả C # và mã Visual Basic trong dự án Web duy nhất. (Theo mặc định, một ứng dụng Web được biên soạn dựa trên các cài đặt ngôn ngữ trong các tập tin dự án ngoại lệ có thể được thực hiện, nhưng nó là tương đối khó khăn.)
• Bạn muốn mở trang web product trong Visual Studio và cập nhật trong thời gian thực bằng cách sử dụng FTP.
• Bạn không muốn lập dự án để triển khai nó.
• Nếu bạn precompile các trang web, bạn muốn trình biên dịch tạo ra nhiều cụm cho các trang web, trong đó có thể bao gồm assembly cho mỗi trang hoặc control người dùng, hoặc một hoặc nhiều assembly cho mỗi thư mục.
• Bạn muốn để có thể cập nhật các tập tin cá nhân trong product bằng cách chỉ cần sao chép phiên bản mới cho các máy chủ product, hoặc bằng cách chỉnh sửa các tập tin trực tiếp trên máy chủ product.
• Nếu bạn precompile các trang web, bạn muốn để có thể cập nhật trang web cá nhân ASP.NET (tập tin .aspx) mà không cần phải biên dịch lại toàn bộ trang web.
• Bạn muốn giữ mã nguồn trên máy chủ product vì nó có thể phục vụ như là bản sao lưu bổ sung.
Tóm tắt các sự khác biệt
Bảng sau đây tóm tắt những khác biệt chính.
Khu vực
|
Web application projects
|
Web site projects
|
Project file
structure
|
Dự án Visual Studio ( .csproj hoặc .Vbproj) lưu trữ thông tin về
dự án, chẳng hạn như danh sách các tập tin bao gồm trong dự án, và bất kỳ tài
liệu tham khảo dự án để dự án.
|
Không có tập tin dự án (.csproj hoặc .Vbproj) Tất cả
các tập tin trong cấu trúc thư mục sẽ tự động trong trang web.
|
Compilation
|
·
Biên dịch mã nguồn trên máy tính được sử dụng để phát triển
hoặc kiểm soát nguồn.
·
Theo mặc định, trình biên dịch tập tin mã
(không bao gồm các tập tin .aspx và .Ascx)
xuất assembly
duy nhất.
|
·
Mã nguồn được biên dịch tự động (automatically)
của ASP.NET trên máy chủ lần đầu tiên nhận được yêu cầu sau khi trang web
đã được cài đặt hoặc cập nhật.
Bạn có thể precompile các trang web (biên
dịch trước trên máy tính hoặc trên máy chủ).
·
Theo mặc định, biên soạn xuất nhiều assembly.
|
Namespaces
|
Namespaces được thêm vào các trang web, điều khiển, và các lớp theo mặc định.
|
Namespaces không được thêm vào các trang web, điều khiển, và các lớp theo mặc
định, nhưng bạn có thể thêm chúng bằng tay.
|
Triển khai
|
·
Bạn sao chép assembly một máy chủ. Assembly
được xuất bằng cách biên dịch các ứng dụng.
·
Visual Studio cung cấp các công cụ tích hợp
với các công cụ triển khai IIS Web để tự động hóa các nhiệm vụ triển khai.
|
· Sao chép các tập tin mã nguồn ứng dụng cho một máy tính đã cài
đặt IIS trên nó.
·
Nếu bạn precompile các trang web trên một
máy tính, bạn sao chép các Assembly
·
Visual Studio cung cấp các công cụ cho việc
triển khai, nhưng họ không tự động hoá càng nhiều nhiệm vụ triển khai như các
công cụ có sẵn cho các dự án ứng dụng Web.
|
Cấu trúc tập tin dự án
Web application projects sử dụng các tập tin dự án Visual Studio (.csproj hoặc .Vbproj) để theo dõi các thông tin về dự án. Trong số các nhiệm vụ khác, điều này làm cho nó có thể để xác định các tập tin bao gồm hoặc loại trừ khỏi dự án, và do đó các tập tin được biên dịch trong Run Time.
Đối với Web site projects, tất cả các tập tin trong cấu trúc thư mục sẽ tự động trong các trang web. Nếu bạn muốn loại bỏ gì đó từ biên dịch, bạn phải loại bỏ các tập tin từ thư mục dự án trang web hoặc thay đổi tên tập tin mở rộng không được biên dịch và không được phục vụ bởi IIS.
Một lợi thế của việc sử dụng các tập tin trong Web application projects như sau:
• Nó rất dễ dàng để tạm thời loại bỏ các tập tin từ các trang web, nhưng vẫn đảm bảo rằng bạn không bị mất theo dõi, bởi vì chúng vẫn còn trong cấu trúc thư mục. Ví dụ, nếu một trang không sẵn sàng để được triển khai, bạn có thể tạm thời loại bỏ nó từ việc xây dựng mà không xóa nó từ cấu trúc thư mục.
Một lợi thế của việc sử dụng cấu trúc thư mục mà không có file dự án trong Web site projects:
• Bạn không cần phải quản lý cấu trúc của dự án trong Visual Studio. Ví dụ, bạn có thể sao chép các tập tin vào dự án hoặc xóa chúng khỏi dự án bằng cách sử dụng Windows Explorer.
Compilation
Đối với Web application projects, bạn thường xây dựng các dự án trong Visual Studio hoặc bằng cách sử dụng trình biên dịch thực thi ASP.NET trên một máy tính đó không xuất trên máy chủ IIS. Tất cả các mã-đằng sau các tập tin lớp và các tập tin lớp độc lập trong dự án được biên dịch vào một assembly duy nhất, sau đó được đặt trong thư mục Bin của Web application project'.
Đối với Web site projects, bạn không phải tự lập dự án. Web site projects thường được biên dịch tự động ASP.NET (trên máy tính của cả hai phát triển và sản xuất các máy chủ IIS). Bạn có thể chọn giữa các chế độ biên soạn hàng loạt, mà thường sản xuất assembly cho mỗi thư mục, và chế độ biên soạn cố định, mà thường sản xuất assembly cho mỗi trang hoặc kiểm soát người dùng.
Ưu điểm của mô hình biên dịch cho Web application projects bao gồm những điều sau đây:
• Bạn có thể sử dụng MSBuild để tạo ra tiến trình thực thi biên dịch tùy chỉnh.
• Nó rất dễ dàng để xác định các thuộc tính assembly chẳng hạn như tên và phiên bản.
• Biên dịch trước đảm bảo rằng người dùng không phải chờ đợi trong khi trang web biên dịch trên các máy chủ sản xuất. (Nếu trang web là rất lớn, năng động lập một dự án trang web có thể mất một số lượng đáng kể thời gian biên soạn động xảy ra khi một yêu cầu cho một nguồn tài nguyên trang web nhận được sau khi một bản cập nhật cho trang web, và yêu cầu kích hoạt trình biên dịch có thể là bị trì hoãn trong khi các nguồn lực cần được biên dịch. Nếu chậm trễ này là không thể chấp nhận được, bạn có thể precompile các trang web. Tuy nhiên, sau đó một số trong những lợi thế của biên dịch động bị mất).
• Bạn có quyền kiểm soát hoàn toàn nơi bạn đặt các tập tin mã trong cấu trúc thư mục của dự án, và làm thế nào bạn các lớp trong dự án tham khảo với nhau. (Dynamic biên soạn yêu cầu rằng mã nguồn cho bất kỳ lớp được sử dụng trong trang web phải có trong thư mục App_Code Bạn có thể tham khảo một trang hoặc lớp kiểm soát người sử dụng từ một lớp trong App_Code).
Ưu điểm của mô hình biên soạn cho Web site projects bao gồm:
• Bạn có thể kiểm tra các trang cụ thể bất kể trạng thái của các trang khác. Điều này là bởi vì chạy một trang cá nhân không yêu cầu biên dịch toàn bộ trang web thành công, chỉ có trang và các thành phần phụ thuộc vào, chẳng hạn như mã trong thư mục App_Code hoặc tập tin Global.asax. (Trong Web application project, nếu có lỗi biên dịch bất cứ nơi nào trong trang web, bạn không thể tạo assembly và do đó không thể kiểm tra ngay cả các phần của trang web mà biên dịch.)
• Nó rất dễ dàng để cập nhật một trang web trong product. Bạn có thể cập nhật các tập tin mã nguồn cá nhân trên các máy chủ product mà không cần phải biên dịch lại các trang web một cách rõ ràng. Bạn có thể cập nhật các tập tin cá nhân mà đã sẵn sàng cho việc triển khai ngay cả khi các tập tin khác chưa sẵn sàng để biên dịch lỗi. Bạn cũng có thể mở trang web trên máy chủ IIS xuất trực tiếp trong Visual Studio và cập nhật các trang web trong thời gian thực.
• Tiền biên dịch nhiều cụm có thể có một lợi thế thực hiện trong một số tình huống. Một ví dụ điển hình là một trang web có nhiều trang với rất nhiều mã được viết. Hầu hết các trang hiếm khi được yêu cầu và chỉ có một số được sử dụng thường xuyên. Nếu bạn biên dịch một trang web như thế này thành nhiều cụm, các máy chủ product chỉ có thể tải các assembly được yêu cầu cho các yêu cầu hiện tại. Nếu một trang không có yêu cầu, tương ứng assembly không được tải.
Không có sự khác biệt về hiệu năng giữa Web site project và Web application project. Chỉ có trường hợp ngoại lệ đáng kể là những người đã được ghi nhận, và như là một vấn đề thực tế, chúng chỉ áp dụng cho các trang web rất lớn. Các yêu cầu đầu tiên cho trang web có thể yêu cầu trang web được biên dịch, có thể dẫn đến chậm trễ. Và nếu trang web được chạy trên một máy chủ IIS vào bộ nhớ, bao gồm toàn bộ trang web trong một assembly duy nhất có thể sử dụng nhiều bộ nhớ hơn sẽ được yêu cầu cho nhiều assemblies.
Triển khai
Để triển khai Web application project, bạn sao chép assembly được tạo ra bằng cách biên dịch các dự án đến một máy chủ IIS. Ngược lại, để triển khai Web site project, bạn thường sao chép các tập tin dự án mã nguồn đến một máy chủ IIS.
Ưu điểm của chiến lược triển khai đối với Web application projects:
• Bạn có thể tránh việc triển khai mã nguồn đến các máy chủ IIS. Trong một số tình huống, chẳng hạn như môi trường chia sẻ lưu trữ, bạn có thể quan tâm đến việc truy cập trái phép vào mã nguồn trên máy chủ IIS. (Đối với Web site project, bạn có thể tránh được nguy cơ này bằng tiền biên dịch trên một máy tính phát triển và triển khai các assembly tạo ra thay vì mã nguồn. Tuy nhiên, trong trường hợp bạn bị mất một số lợi ích của việc cập nhật trang web dễ dàng.)
• Triển khai thường liên quan đến các nhiệm vụ khác ngoài việc sao chép assembly hoặc mã đến một máy chủ. Ví dụ, các kịch bản cơ sở dữ liệu có thể có để chạy trong product, và chuỗi kết nối trong file Web.config có thể phải được thay đổi cho một máy chủ product. Visual Studio cung cấp các công cụ như một cú nhấp chuột làm việc với các dự án ứng dụng Web để tự động hóa nhiều những công việc này. Những công cụ này không có sẵn cho Web site projects.
Ưu điểm của chiến lược triển khai cho Web site projects:
• Nếu bạn thực hiện một thay đổi nhỏ cho trang web, bạn không cần phải triển khai lại toàn bộ trang web. Thay vào đó, có thể sao chép chỉ thay đổi các tập tin hoặc các tập tin máy chủ IIS. Bạn cũng có thể chỉnh sửa các tập tin trực tiếp trên máy chủ. (Bởi vì các tập tin mã của một ứng dụng Web của dự án được biên dịch thành một file assembly duy nhất, bạn phải triển khai toàn bộ trang web ngay cả đối với những thay đổi nhỏ, trừ khi sự thay đổi duy nhất là đến một file .ascx hoặc .aspx)