2010-08-11 36 views
31

JRebel là một công cụ cho Java có thể tự động hoán đổi trong các phiên bản mới của các lớp thành một JVM đang chạy. Việc triển khai phương pháp không chỉ có thể được thay đổi, nó cũng có thể thay đổi chữ ký của chúng, để thêm mới hoặc loại bỏ các phương thức hiện có, và cũng có thể thêm/xóa các trường. Về điều duy nhất không thể làm là cho phép hệ thống phân cấp lớp được thay đổi một cách nhanh chóng. Đó là một lợi ích thực sự cho phát triển ứng dụng web nói riêng.Có điều gì giống như JRebel cho .NET không?

Tôi có thể tìm thấy bất kỳ điều gì tương tự cho .NET không?

+1

Sự cố cụ thể với khả năng của Asp.Net để trao đổi nóng toàn bộ ứng dụng khi bạn cập nhật tệp của ứng dụng là gì? –

+0

JRebel có thể làm điều này mà không cần biên dịch lại toàn bộ ứng dụng. Điều đó có nghĩa là người dùng bạn không bị mất thông tin phiên làm ví dụ. Tôi không chắc chắn ASP.NET có thể làm điều này trên cơ sở từng trang vì tất cả các trang được biên dịch thành một dll duy nhất. Xem xét bản chất của postback trong ASP.NET cổ điển bạn có lẽ sẽ phá vỡ mà quá khi biên dịch lại toàn bộ ứng dụng. – stombeur

+0

Ai đó nên trả lời câu hỏi này thay vì bằng "Không", nhưng với quy trình phát triển giảm thiểu việc khởi động lại iisexpress hoặc bất kỳ máy chủ web nào bạn đang sử dụng. Ví dụ, đơn vị kiểm tra nhiều hơn - mã của bạn sẽ vững chắc hơn khi bạn chạy nó trong một máy chủ web. – Jess

Trả lời

0

Cũng có tính năng tích hợp kể từ VS 2005 được gọi là "Chỉnh sửa và tiếp tục". Bạn có thể xem ... http://msdn.microsoft.com/en-us/library/ms379578(VS.80).aspx.

Tôi nghĩ rằng điều đó không phải là quá phức tạp như JRebel.

+7

Không thực sự liên quan, và E & C không thực sự là một tính năng xem xét nó được triển khai như thế nào và nó vô dụng như thế nào. –

+1

Điều mà JRebel đang làm hoàn toàn khác với Chỉnh sửa và Tiếp tục. E & C là một tính năng bạn chỉ có thể sử dụng trong khi gỡ lỗi cho một. Và sự khác biệt lớn nhất là bạn không thể sử dụng Edit và Continue cho một ứng dụng web được lưu trữ trong IIS (hoặc Máy chủ phát triển Web vô dụng). Tôi nghĩ sự khác biệt lớn nhất là thứ hai. Nếu bạn đang phát triển một chu trình xây dựng/triển khai ứng dụng web lớn thì đó là sự lãng phí thời gian nhất. – tbaskan

+3

Quá tệ, nó không hoạt động trong 64 bit. Tôi ước Microsoft sẽ tiếp tục ... –

-1

Có Rebel.NET tương tự nhưng điều này đòi hỏi phải xây dựng lại các tệp nhị phân và không thể thay đổi mã trong khi thực thi.

0

Phản ánh được tích hợp vào .NET và có thể thực hiện hầu hết những thứ đó (viết/thay đổi mọi thứ khi chạy).

Nó sẽ không được đánh bóng và công việc sẵn sàng như JRebel, nhưng sau đó một lần nữa hai khuôn khổ có cấu trúc khác nhau để bắt đầu. Nó có thể không thực tế để nghĩ về chúng như là tương đương.

IMHO, thời gian chạy thay thế như một thực hành tiêu chuẩn có vẻ giống như một cách tốt để hỏng thời gian chạy cho tôi. Nếu bạn cần chức năng trao đổi nóng này, có lẽ bạn nên chọn ngôn ngữ thông dịch thay vì một ngôn ngữ được biên dịch.

Ngoài ra, phiên thường là điều cần tránh. Nếu bạn phải sử dụng nó cho ASP.NET, bạn có thể sử dụng một vài nhà cung cấp hộp khác nhau thay vì trong quá trình một, hoặc thậm chí sử dụng hồ sơ để thay thế. MSDN page for state manangement

2

Không có thứ gì trong thế giới .net không quá mạnh .. có một số thứ như Chỉnh sửa và Tiếp tục nhưng điều này giống như "Thay thế nóng" trong Java và không có gì khác. Vấn đề là trong .net bạn có toàn bộ mô hình của .dll (s) với các phiên bản và phụ thuộc của chúng giữa các dll trỏ đến phiên bản cụ thể để không thể thay thế dll mà không thay thế tất cả.

Giải pháp thay thế sẽ giống như biên soạn các lớp học, thêm tấn chuyển hướng lắp ráp, bằng cách nào đó dỡ tải và tải dll cũ nhưng đó là địa ngục khó.

Hãy nhớ rằng trong java sau khi "mô-đun" JSR được thực hiện có thể trong java 9 chúng tôi sẽ không có JRebel là tốt.

2

Không có điều gì cho. Net. Trong thời gian chờ đợi, bạn có thể thử NCrunch (http://www.ncrunch.net/), chạy thử nghiệm của bạn ở chế độ nền và thời điểm bạn ngắt hoặc thực hiện kiểm tra nó được báo cáo trong kết quả kiểm tra, vì vậy bạn không cần phải chờ để xây dựng lại và kiểm tra thực hiện như nó đang xảy ra trong thời gian thực.

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