2009-07-23 41 views
66

Tôi đang tự hỏi về các phương pháp hay nhất để phát triển ứng dụng ASP.NET MVC với tùy chọn triển khai trên Linux. Nếu bạn đang tạo các loại ứng dụng MVC này,Triển khai ASP.NET MVC trên Linux: Thực tiễn tốt nhất, Công cụ & Bất ngờ

  • Bạn đang nhắm mục tiêu nền tảng Linux/Mono nào?
  • Bạn đang phát triển bao nhiêu trong Windows và bao nhiêu trên Linux?
  • Bạn đang sử dụng ORM để trừu tượng cơ sở dữ liệu? Cái nào?
  • Bạn có đang chạy công cụ xây dựng trên Linux không? Còn thử nghiệm thì sao?
  • Bạn đang sử dụng công cụ nào khác?
  • Có bao nhiêu công việc bổ sung để nhắm mục tiêu Linux ngoài Windows?
  • Bạn có gặp phải điều ngạc nhiên xấu xí hoặc dễ chịu nào không?
+0

Âm thanh như câu hỏi này phải là một wiki cộng đồng. Sẽ không có một câu trả lời đúng. – mkchandler

+2

Đồng ý, có thể không có một câu trả lời đúng, nhưng kể từ khi triển khai lên Linux yêu cầu chúng tôi tập hợp nhiều thành phần hơn trong môi trường không phải là bản địa, nó đáng nghe từ những nhà phát triển thực sự đã thực hiện hoặc đang trong quá trình thực hiện. – keithm

+0

Tôi đã bị cám dỗ để nói "Ngạc nhiên! Nó sẽ không hoạt động!" nhưng tôi chỉ gặp vấn đề của riêng mình khi triển khai một dự án lớn hơn. Mono thật là ngoạn mục. Chỉ cần nghĩ rằng sẽ cung cấp cho một vài cười khúc khích với những người vẫn đang cố gắng để hiểu những lỗi khó hiểu Mono đôi khi có thể ném lên :) – Chazt3n

Trả lời

34

Công ty tôi làm việc cho các mục tiêu Mono trên Linux là môi trường triển khai chính của chúng tôi. Do đó không có công việc "bổ sung" - chúng tôi cung cấp toàn bộ ngăn xếp, từ phần cứng, thông qua hệ điều hành (tùy chỉnh và cắt) cho các ứng dụng. Sử dụng nguồn mở mang lại khoản tiết kiệm rất lớn cho chúng tôi và khách hàng của chúng tôi (và có, chúng tôi đóng góp lại cho các Dự án hệ điều hành mà chúng tôi dựa vào).

Điều quan trọng là liên tục thử nghiệm bằng cách sử dụng mục tiêu thực tế của bạn (xin lỗi, Mono trên Windows không được tính). Chắc chắn, các nhà phát triển sử dụng Visual Studio, nhưng việc tích hợp liên tục (sử dụng CruiseControl.Net, bạn sẽ cần Mono 2.4.2 để chạy nó trên Linux) được thực hiện trên cả Windows và Linux, thử nghiệm tất cả các phiên bản Mono mà chúng tôi mong đợi để làm việc. ổn định hơn gần đây, nhưng vẫn còn, hồi quy xảy ra giữa các phiên bản). Nó khá dễ dàng để chạy parallel Mono versions trên một hệ thống * nix, thậm chí bạn có thể bao gồm một bản dựng svn snapshot nếu bạn muốn bắt các hồi quy ngược dòng sớm. Nếu bạn không tung ra bản phân phối của riêng mình, thì hãy nhớ rằng hầu hết các nhà cung cấp Linux gửi Mono với các bản vá lỗi tùy chỉnh - điều này đã gây ra vấn đề cho chúng tôi trước đây. Ngoài ra, nhiều bản phân phối có rất nhiều sự chậm trễ cập nhật Mono, và đây là một dự án tiến bộ nhanh chóng.

Đối với lớp cơ sở dữ liệu, chúng tôi sử dụng chủ yếu là "đồng bộ" ADO.NET - Oracle (với dotConnect for Oracle, chúng hỗ trợ Mono) và SQLite (Mono có kết nối làm việc). Tôi cũng đã sử dụng chính thức ADO.NET Driver for MySQL (Connector/NET) và nó cũng hoạt động tốt. Ánh xạ ORM phức tạp hơn, nhưng NHibernate có thể sử dụng được (hãy nhớ rằng chúng không hỗ trợ Mono chính thức).

Đối với công cụ xây dựng và thử nghiệm - NAntNUnit được biết đến và được kiểm tra kỹ lưỡng. Với hầu hết các phiên bản mới nhất của Mono xbuild (bản sao MSBuild) thực sự có thể sử dụng được, nhưng hãy chuẩn bị cho việc đóng góp khá nhiều bản vá nếu bạn quyết định sử dụng nó cho các kịch bản phức tạp hơn.

Viết kiểm tra. Rất nhiều người trong số họ. Hãy chuẩn bị để đóng góp các bản vá lỗi và các bản báo cáo, và nếu bạn sử dụng các thành phần thương mại - hãy đảm bảo rằng nhà cung cấp chính thức hỗ trợ Mono.Blog

+0

Cảm ơn bạn đã trả lời tuyệt vời. Cơ sở dữ liệu và phần mềm truy cập dữ liệu của bạn là gì? – keithm

+0

Cập nhật câu trả lời của tôi :-) – skolima

+0

Cảm ơn thông tin. Bạn vẫn đang làm việc theo cách này? Nếu vậy, bạn có cập nhật lên phiên bản .NET và MVC mới hơn không? Ngoài ra, bạn có đang sử dụng bất kỳ phần mềm ORM nào như Khung thực thể thành công không? Đó là một vài năm kể từ khi bạn trả lời, vì vậy tôi muốn biết rằng bạn vẫn còn tích cực về công nghệ ngăn xếp bây giờ như sau đó. Bạn vẫn muốn giới thiệu CC.NET, NAnt, NUnit, v.v ...? Cảm ơn :) –

1

Hãy xem Mono project. Âm thanh như thế là những gì bạn đang tìm kiếm. Nếu tôi nhớ chính xác, họ có ASP.NET MVC tích hợp vào nó ngay bây giờ.

Tôi chưa bao giờ làm việc với Mono, nhưng từ sự hiểu biết của tôi, không có nhiều khác biệt.

4

Nathan Bridgewater của có một số bài viết đẹp cho thấy, trong số những thứ khác:

  • chạy MVC3 với dao cạo trên mono
  • di cư ASP.NET MVC từ Windows/SQL Server sang Linux/MySQL
  • cài đặt và chạy MonoDevelop
  • cài đặt mono từ nguồn

http://iws.io/get-mvc3-razor-running-on-mono/

+0

liên kết đã chết – aclave1

+1

@ aclave1, cảm ơn, đã cập nhật. –

Các vấn đề liên quan