2009-07-20 15 views
6

Bất cứ ai đã làm việc với Subsonic3 và Entity Framework ở đây ai có thể cho tôi biết ưu và khuyết điểm? Đây là lần đầu tiên tôi thử dùng những thứ này. Subsonic rất dễ thiết lập như Entity Framework. Tôi không chắc chắn nếu Entity Framework làm việc với các cơ sở dữ liệu khác như SubSonic không giống như MySql PGsql vv ...? Tôi đọc bài này (http://www.timacheson.com/Blog/2009/jun/entity_framework_vs_subsonic) đủ thuyết phục để chọn Khung thực thể trên SubSonic. Nhưng tôi muốn mở lần thứ hai.Khuôn mẫu thực thể 3 cận âm VS

+2

Điểm chuẩn của Tim không phải là các thử nghiệm hoàn hảo điển hình - không mất quá nhiều thời gian để SubSonic tải. http://blog.wekeroad.com/subsonic/subsonic-scaling/ –

Trả lời

17

Vâng, hai con thú này hoàn toàn khác nhau!

Subsonic 3 là một công cụ tuyệt vời để đơn giản và dễ dàng ánh xạ cấu trúc cơ sở dữ liệu 1: 1 cho các lớp đối tượng, trong đó mỗi lớp sẽ là biểu diễn chính xác của bảng trong cơ sở dữ liệu cơ bản (như trường hợp với LINQ- to-SQL là tốt).

Khuôn khổ thực thể khác nhắm mục tiêu các kịch bản phức tạp hơn, nơi tên miền hoặc mô hình đối tượng của bạn (các lớp của bạn) sẽ không nhất thiết ánh xạ 1: 1 cho các bảng cơ sở dữ liệu. Đó là lý do tại sao EF có một bộ ba tệp XML - một mô tả mức khái niệm (đối tượng miền của bạn), một mức lưu trữ (bố cục cơ sở dữ liệu) và ánh xạ giữa hai thứ đó.

IMHO, Subsonic 3 và Linq-to-SQL là hoàn hảo cho các dự án nhanh, nhỏ đến trung bình, nơi cơ sở dữ liệu của bạn đủ linh hoạt để thay đổi nếu cần thiết và nơi bạn có ánh xạ đơn giản đối tượng của bạn . EF thực sự tỏa sáng trong các ứng dụng doanh nghiệp quy mô lớn, nơi cấp cơ sở dữ liệu của bạn có thể được đặt trong đá và bạn không thể thay đổi nó - hoặc ứng dụng của bạn cần "tồn tại" ngay cả khi cơ sở dữ liệu chưa thay đổi.

Con thú hoàn toàn khác nhau - đối tượng hoàn toàn khác nhau, theo ý kiến ​​của tôi.

Marc

PS: Tôi tự hỏi liệu Tim có thực sự sử dụng Subsonic 3 trong so sánh này không và chính xác anh ấy đang làm gì. Cảm giác ruột của tôi sẽ là EF sẽ là chi phí "lớn hơn" và do đó có thể kém hiệu quả hơn một chút (nhưng linh hoạt hơn, và trong kịch bản Doanh nghiệp, nó có giá trị trọng lượng bằng vàng, ngay cả khi hi sinh một số hiệu suất)

+0

Cảm ơn bạn đã trả lời tuyệt vời. – Shuaib

+0

Hơn nữa để PS của bạn, bài báo nói "Subsonic 2.1 (kết quả tương tự được sản xuất với 3,0)". Giống như bạn, tôi đã nghĩ rằng SubSonic nhẹ hơn sẽ nhanh hơn. Và tôi biết tôi đang cho đi một chút hiệu suất sử dụng SS vs mã hóa cơ bản, nhưng sự linh hoạt chắc chắn là giá trị nó. – kevinw

3

Trong trường hợp này, trong các tiêu chuẩn của tôi Tôi đã sử dụng Subsonic 2.1 (như đã nêu) và so sánh các lớp truy cập dữ liệu trong kịch bản tải vừa phải (phương pháp như đã nêu). Tôi đã cung cấp mã, vì vậy thử nghiệm của tôi có thể dễ dàng được nhân rộng.

Nếu bạn chịu tải hệ thống, sao chép các điều kiện trong ứng dụng web khi đang sử dụng, EF chứng minh mang lại hiệu suất tốt hơn nhiều. Tải các bài kiểm tra của ứng dụng web hoàn chỉnh xác nhận điều này. Trong các bài kiểm tra phức tạp hơn, khả năng tối ưu hóa của EF như tải chậm có thể mang lại lợi thế hiệu suất cao hơn so với Subsonic.

Nếu bạn so sánh các hoạt động truy cập dữ liệu riêng lẻ, ví dụ: trong một bài kiểm tra đơn vị đơn giản, Subsonic có vẻ nhanh hơn. Đặc biệt, Subsonic khởi tạo nhanh hơn.

Tôi muốn giới thiệu Fluent NHibernate hoặc Entity Framework nếu hiệu suất là một yếu tố quan trọng.

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