Có phải là một cách tốt hơn là chỉ "Xuất bản" trong Visual Studio và sau đó phải FTP thủ công các tệp đã thay đổi?
Dao cạo của Occam thường là phương pháp ưa thích: càng đơn giản, càng tốt. FTP rất dễ dàng với ít hoặc không có biến chứng. Một số người sử dụng XCOPY, Filezilla hoặc WSFTP, những người khác có thể sử dụng Công cụ triển khai web MS (mà tôi chưa quen), nhưng tất cả, có một cách tốt hơn để triển khai các ứng dụng web ASP.NET (và khác ứng dụng nói chung). IMO, nếu việc triển khai được xem xét từ khi bắt đầu phát triển, việc triển khai có thể được tích hợp với ứng dụng web giúp triển khai tương đối dễ dàng và suôn sẻ trong tương lai.
Là một nhà phát triển .NET, người đã làm việc tại một số công ty phát triển các ứng dụng web ASP.NET có quy mô, độ phức tạp và số lượng người dùng (từ vài trăm người dùng đến hàng chục nghìn), IMO 'triển khai' thường là chủ đề "trôi chảy" nhất. Một số tổ chức đưa nó đi quá xa về mặt quan liêu trong khi những tổ chức khác không giải quyết bất kỳ vấn đề nào với việc triển khai. Theo kinh nghiệm của tôi, các vấn đề với việc triển khai có xu hướng rơi vào 1 hoặc nhiều hơn 3 loại về những khó khăn / thất bại:
Triển khai bị bỏ qua / quên sâu trong giai đoạn thiết kế:
Hầu hết các ứng dụng web có xu hướng kết hợp máy chủ web và cơ sở dữ liệu. Ngoài mã ứng dụng, có thể một số thủ tục được lưu trữ và bảng cơ sở dữ liệu, việc triển khai không cần nhiều suy nghĩ. ASP.NET không chỉ có khả năng hỗ trợ triển khai, nhưng hầu hết các nhà phát triển thường bị phân tâm về việc làm cho ứng dụng thực sự chạy và thực hiện nhiệm vụ của nó trong khi để lại cách triển khai như một vấn đề riêng biệt.
Triển khai rất phức tạp trên nhiều hệ thống và mọi người đang chơi:
Sự phức tạp là một con chó cái. Từ MSMQ, các thủ tục và trình kích hoạt được lưu trữ T-SQL, Dịch vụ báo cáo, nhắn tin SOAP / XML, xác thực AD, SSAS / SSIS, v.v., số lượng công nghệ đang chơi tăng số lượng người tham gia. Tệ nhất là tất cả các thành phần khác nhau này thường được quản lý bởi các thực thể khác nhau trong một tổ chức. Trừ khi tất cả mọi người đồng bộ với nhau, việc triển khai có thể tăng độ phức tạp nhanh chóng dẫn đến nhiều điểm thất bại.
Lười biếng, thờ ơ hoặc thiếu giao tiếp và / hoặc quản lý:
Từ ít đến không có tài liệu đến thiếu giao tiếp và giao thức phối hợp, thật dễ dàng để thực hiện một quy trình tương đối đơn giản. Triển khai nên là một thủ tục đơn giản với nhiều kiểm tra được thực hiện trong khi ghi lại những gì đã làm, nhưng thường thì không bao giờ như vậy. Hầu hết mọi người chỉ muốn trang web chết tiệt này hoạt động. Theo kinh nghiệm của tôi, mọi người (không phải lập trình viên) không thực sự quan tâm cho đến khi một cái gì đó thực sự xuất hiện . Trách nhiệm hiếm khi rơi vào chỉ một người để thực sự làm việc triển khai như không ai thực sự muốn trở thành lý do cho sự thất bại nên trách nhiệm giải trình được thường phân tán.
Có rất nhiều trường hợp ngoại lệ tập tin khó hiểu mà tôi phải tự động hóa quá trình càng nhiều càng tốt, để ngăn chặn việc tải lên ngẫu nhiên. Vậy làm thế nào để nhóm của bạn làm điều đó?
Tôi không biết bất kỳ nhà cung cấp nào có mặt để tự động hóa triển khai mặc dù tôi sẽ không ngạc nhiên nếu có một vài nhà cung cấp. Bạn có thể có thể kịch bản một giải pháp thông qua VBScript / WMI hoặc tập lệnh bó một giải pháp, nhưng thực tế là bạn cần điều chỉnh một giải pháp cùng nhau cho các trang web ASP.NET phức tạp hơn. Các trang web đơn giản bao gồm các trang, kết nối cơ sở dữ liệu và không có gì khác, bạn không cần phải làm gần như vậy để mở rộng các nỗ lực triển khai của mình phù hợp với sự phức tạp của chính ứng dụng.
Cho đến nay, tại triển khai công việc hiện tại của tôi vẫn được thực hiện qua FTP và di chuyển một loạt các tệp. Nó xấu xí, dễ làm hỏng và không có ý nghĩa về một lịch sử chính xác. Cấp cho bạn có thể kết hợp thông qua nhật ký FTP, không ai thực sự bận tâm để làm như vậy. Các ứng dụng của chúng tôi khá đơn giản mà không cần nhiều đến FTP. Làm thế nào nhóm của tôi triển khai các ứng dụng web của chúng tôi thực sự rất ít sử dụng cho bạn. Thay vào đó, tôi muốn sử dụng cơ hội này để đề xuất các thực tiễn tốt hơn .
- Giả sử không có gì. Tài khoản người dùng, đặc quyền R / W / X, ACL, tường lửa, thời gian (khi nào triển khai và thời gian bạn phải làm) và nếu có thể, hãy thử triển khai đến tất cả các môi trường trước "ngày ra mắt" cuối cùng.
- Trước khi phát triển thực sự bắt đầu, yếu tố triển khai vào phát triển. Nếu đó là một trang web đơn giản, vì vậy hãy là nó. Nếu có nhiều bộ phận chuyển động, hãy đặt tất cả vào đó và thực sự xây dựng một kế hoạch mà tất cả các thành phần (mã, cơ sở dữ liệu, báo cáo, hàng đợi, v.v.) đều nằm trên cùng một kế hoạch.
- Phối hợp với các cộng đồng khác và giao tiếp hiệu quả và hiệu quả.
- Tài liệu càng nhiều thông tin thích hợp nếu có thể.
- Môi trường: một máy chủ web so với trang trại web; 32 bit so với 64 bit; tìm cách theo dõi nhật ký / lỗi / xoay, v.v.
- Tìm (hoặc xây dựng) các công cụ có thể hỗ trợ triển khai.
- Nếu có thể để triển khai lập trình, chọn một mô hình và gắn bó với nó. Ví dụ: nếu bạn muốn sử dụng máy chủ cơ sở dữ liệu làm phương tiện chính để thực hiện trạng thái của ứng dụng, triển khai, truy cập và như vậy, hãy nướng nó vào ứng dụng và gắn bó với nó. Nếu bạn thích đọc các tệp XML (như web.config), chỉ cần sử dụng mô hình nhất quán để triển khai ứng dụng. Một ví dụ khác: một số tổ chức rời web.config dưới dạng tệp tĩnh trong mỗi môi trường không được triển khai sang các môi trường khác. Web.config chương trình khác theo cách mà nó có thể được triển khai trên các môi trường mà không gặp lỗi.
Tôi nhận ra rằng bài đăng này có thể là quá mức cho câu hỏi ban đầu được hỏi. Thật không may, việc triển khai không phải là một điều đơn giản vì các ứng dụng có thể khác nhau về độ phức tạp. Tôi cá rằng hầu hết các tổ chức triển khai các ứng dụng ASP.NET phức tạp theo thời gian đã phát triển một số chiến lược nhất định mà công việc (ít nhất là) đáng tin cậy.