2009-04-09 4 views

Trả lời

7

Sinatra là khung nhỏ hơn nhiều, nhẹ hơn Rails. Nó được sử dụng nếu bạn muốn để có được một cái gì đó chạy nhanh chóng mà chỉ gửi đi một số URL và trả về một số nội dung đơn giản. Hãy xem Sinatra home page; đó là tất cả những gì bạn cần để có được một "Hello, World" và chạy, trong khi trong Rails bạn sẽ cần phải tạo ra một cấu trúc toàn bộ dự án, thiết lập một bộ điều khiển và một khung nhìn, thiết lập định tuyến và vv. viết một ứng dụng Rails trong một thời gian, vì vậy tôi không biết chính xác có bao nhiêu bước "Hello, World", nhưng nó chắc chắn hơn Sinatra). Sinatra cũng có ít phụ thuộc hơn Rails, vì vậy nó dễ dàng hơn để cài đặt và chạy.

Chúng tôi đang sử dụng Sinatra như một máy chủ web thử nghiệm nhanh cho một số thư viện máy khách web mà chúng tôi đang viết ngay bây giờ. Thực tế là chúng ta có thể viết một tệp duy nhất và bao gồm tất cả logic của chúng ta trong một tệp đó và có rất ít sự phụ thuộc, có nghĩa là nó dễ dàng hơn để làm việc và chạy thử nghiệm của chúng ta hơn nếu bạn có ứng dụng Rails.

Merb is being merged into Rails, vì vậy khá sớm sẽ không thực sự có lý do gì để sử dụng cái kia. Ban đầu nó được thiết kế để có trọng lượng nhẹ hơn một chút và được tách ra nhiều hơn Rails; Rails đã xây dựng nhiều hơn trong các giả định rằng bạn sẽ sử dụng ActiveRecord. Nhưng khi họ kết hợp cả hai, họ tách Rails theo những cách tương tự, vì vậy nếu bạn đã học Rails, thì có lẽ nó đáng để chỉ gắn bó với nó và làm theo những phát triển khi họ đến.

+0

@Brian - Cảm ơn bạn rất nhiều. Đó là chính xác những gì tôi muốn tìm hiểu. – tundal45

2

Tôi không thể nói nhiều cho Merb, nhưng Sinatra có hiệu quả cao đối với các giải pháp nhỏ hoặc nhẹ. Nếu bạn không làm việc với rất nhiều mã, hoặc không cần một trang web lớn, bạn có thể mã một trang web rất hiệu quả với Sinatra hoặc nhanh, hoặc nhanh gấp đôi Rails (theo ý kiến ​​riêng của tôi).

Sinatra cũng là tuyệt vời cho các phần mảnh vỡ của một ứng dụng, ví dụ như front-end cho một gói thống kê. Hoặc một cái gì đó như ErrCount, mà chỉ là một truy cập hit thực sự đơn giản.

Vì vậy, hãy suy nghĩ về các ứng dụng web nhẹ, nhanh và đơn giản (mặc dù sự phức tạp là lựa chọn của bạn) khi sử dụng Sinatra.

+0

Cảm ơn bạn rất nhiều vì đã thêm chi tiết đó. Bây giờ tôi có thể thấy nơi Sinatra có thể phù hợp với các cuộc tấn công mã hóa của tôi. – tundal45

1

Mọi thứ đang diễn ra, sắp tới sẽ là một câu hỏi tranh luận.

Như đã đề cập, Merb 2.0 và Rails 3.0 sẽ giống nhau. Các nhóm lõi Merb và Rails mới kết hợp đã sẵn sàng để đạt được điều đó. Tôi không biết liệu họ có đang lên kế hoạch cho bản phát hành (có thể là bản beta) của RailsConf vào tháng 5 hay không, nhưng nó chắc chắn sẽ xảy ra trong năm nay.

Nếu bạn đã chết bằng cách sử dụng ORM ngoài ActiveRecord, ví dụ, bạn có thể bắt đầu với Merb ngay bây giờ và cập nhật khi tàu 2.0 (Rails 3.0). Ngay bây giờ, Merb thường được chấp nhận để cung cấp một khuôn khổ tốt hơn cho các thành phần khác nhau của một người hơn Rails.

Sinatra trông giống như một giải pháp tuyệt vời cho một ứng dụng web có độ phức tạp giao diện thấp và mã mô hình thấp hơn một chút so với bình thường đối với Merb/Rails. Việc triển khai các API RESTful đơn giản sẽ là một ứng dụng tuyệt vời. Tôi ít bị thuyết phục về giá trị của nó khi có bất kỳ số lượng HTML nào tham gia, thậm chí ít hơn khi templating được tham gia.

Một lần nữa, với Rails (và do đó Merb sớm) hiện đang ngồi trên Rack, không có lý do gì để không đưa các ứng dụng Sinatra vào giải pháp: chúng có thể sống chung với nhau.Có a blog post that discusses that very concept