2010-08-04 27 views
5

Chúng tôi sắp bắt đầu một dự án mới. Nó sẽ là một nhóm các ứng dụng web với một số lượng tốt các thành phần được chia sẻ. Nó sẽ có tới 50.000 lượt người dùng duy nhất mỗi ngày và sẽ là một loại bảng điều khiển quản lý. Tất cả các dự án sẽ được xây dựng trong asp.net mvc 2 và tất cả họ sẽ làm việc trên một cơ sở dữ liệu SQL Server.Lựa chọn OR Mapper cho dự án mới

Chúng tôi đã rất thành NHibernate cho đến khi tôi tìm thấy trang web ormbattle.net, nơi thử nghiệm hiệu suất cho NHibernate trông rất kém so với những người lập bản đồ khác. Trong bản tóm tắt này tôi đã tìm thấy thư viện chưa được biết đến trước đây. BLToolkit trông thực sự hứa hẹn, nhưng có cả hai lợi thế và bất lợi.

BLToolkit có hỗ trợ cộng đồng yếu, rất ít ví dụ và tôi không thực sự nghe nói về người đã sử dụng nó trong một dự án lớn. Ngoài ra nó rất nhẹ có nghĩa là nó không hỗ trợ nhiều mối quan hệ, tải chậm và bộ nhớ đệm ...

Mặt khác hiệu suất thực sự tuyệt vời và cũng có hỗ trợ LINQ rất tốt.

Trong trường hợp này tôi giữa việc lựa chọn một trong những cách sau:

  1. Đừng quan tâm quá nhiều về hiệu suất và sử dụng Nhibernate hay EF hoặc chỉ L2SQL (cái nào sẽ tốt hơn?) Và sử dụng ORMapper có nhiều chức năng hữu ích hơn.
  2. Tập trung vào hiệu suất tuyệt vời đó và xây dựng một số giải pháp riêng dựa trên BLToolkit này, sử dụng thư viện này chủ yếu là cơ sở rất tốt. Có lẽ tôi không cần bộ nhớ đệm nếu tôi sẽ sử dụng hành động bộ nhớ đệm trong MVC. Có lẽ tôi không cần các hiệp hội như xa như tôi có thể viết các truy vấn LINQ tốt với một biểu thức tham gia. Có lẽ tôi không cần tải chậm như xa như tôi sẽ cẩn thận xây dựng các phương pháp chính xác mà sẽ nhận được từ DB tất cả tôi cần.

Tôi không tìm kiếm bản án trong trường hợp này. Những gì tôi yêu cầu là một cuộc thảo luận nhỏ, để chỉ cho tôi một số vấn đề mà tôi đã không xem xét hoặc chỉ chia sẻ một số kinh nghiệm với tôi về việc sử dụng không chỉ BLToolkit mà còn khác hoặc người lập bản đồ.

+0

http://stackoverflow.com/questions/1377236/nhibernate-entity-framework-active-records-or-linq2sql/ –

+0

Chỉ cần thêm ghi chú về LINQ trong NH3 alpha1 vào câu trả lời được chấp nhận. –

+0

Bạn đã bắt đầu sử dụng BLToolkit chưa? Tôi đã tìm thấy dự án này và tôi được khuyến khích để cho nó một cơ hội :) – twk

Trả lời

3

Bạn có thể tạo nguyên mẫu với một vài ORM khác nhau mà bạn đang cân nhắc và xem liệu chúng có hoạt động tốt cho nhu cầu của bạn không? Bạn có thể viết một số mã "hiệu suất tăng đột biến", và điền các bảng của bạn với dữ liệu mẫu bằng cách sử dụng data generator trong Visual Studio.

Tôi nghĩ rằng việc chọn một ORM dựa trên niềm tin rằng các lựa chọn thay thế sẽ không hoạt động tốt là một tối ưu hóa sớm - trừ khi bạn đã thực hiện các kiểm tra để xác nhận sự nghi ngờ của bạn.


Về ormbattle.net, đây là Ayende's prespective - anh ấy là một trong những nhà phát triển NHibernate. Điều này là từ một thời gian trở lại, tôi không biết nếu ormbattle.net đã thay đổi kể từ đó.

LINQ to SQL không còn được phát triển tích cực nữa - vì vậy nếu bạn muốn sử dụng ORM từ Microsoft, EF sẽ là lựa chọn tốt nhất.

Cá nhân tôi thích NHibernate cho EF, nhưng phiên bản hiện tại của EF không có triển khai LINQ hoàn chỉnh hơn phiên bản hiện tại của NHibernate. NHibernate 3 (vào cuối năm nay) sẽ có hỗ trợ LINQ đầy đủ, cũng như một API loại an toàn khác được gọi là QueryOver.

+0

Ngày phát hành NHibernate 3 đã biết chưa? Có phải một số alpha, beta hoặc một cái gì đó hiện hữu không? Nghe có vẻ giống như một lựa chọn tốt, nhưng tôi không có quá nhiều thời gian cho đến khi chúng tôi bắt đầu dự án của mình. –

+1

NHibernate 3 alpha 1 có tại đây: http://sourceforge.net/projects/nhibernate/files/. Tôi không nghĩ ngày phát hành cuối cùng đã được thiết lập. Dựa trên chuỗi thảo luận này, có vẻ như vào mùa thu này, chắc chắn trước khi kết thúc năm: http://groups.google.com/group/nhusers/browse_thread/thread/d6104226e150a735/da22cbc3556b48b1 –

+0

Nice .. thêm một câu hỏi nữa. .. Có một hướng dẫn sử dụng hoặc bất kỳ ví dụ để Nhib3 avaible một nơi nào đó? –

4

BLToolkit thật tuyệt vời với cộng đồng tuyệt vời trên tiếng Nga forum, bạn có thể dễ dàng đặt câu hỏi bằng tiếng Anh, vì hầu hết các thành viên của cộng đồng này đều biết tiếng Anh.

+0

Liên kết tốt, cảm ơn ... Bạn đã sử dụng BLToolkit trong một số dự án thương mại lớn? Cảm xúc của bạn về nó là gì? –

+3

Có, tôi đã sử dụng BLToolkit cho sản phẩm thương mại, tôi đã sử dụng NHibernate cho một dự án khác và đây là những công cụ hoàn chỉnh khác nhau. Nếu bạn cần giải pháp vững chắc và bạn sẽ sử dụng nó như là Nhibernate là dành cho bạn. BLToolkit không phải là một ORM, nó là một công cụ tuyệt vời để tạo DAL onw của bạn, nó hỗ trợ lập bản đồ, tạo yêu cầu và vân vân, nhưng bạn sẽ phải viết một số mã để thực hiện giải pháp cho nhu cầu của mình, nhưng nó hoạt động nhanh hơn nhiều sau đó hibernate và bạn có nhiều kiểm soát hơn nữa của dòng dữ liệu. – Mike

+1

BTW, bạn có thể tải xuống mã BLToolkit hoàn chỉnh, nơi bạn sẽ tìm thấy một loạt các bài kiểm tra đơn vị và ví dụ. – Mike

2

Webstite ormbattle.net có thể rất thiếu hàng đầu, vì ORM khác nhau được thiết kế để sử dụng theo nhiều cách khác nhau, vì vậy điểm chuẩn đơn giản không cho bạn biết phù hợp.

Bạn có hai tùy chọn cơ bản.

  • Chọn thiết kế lược đồ hệ thống và cơ sở dữ liệu của bạn, sau đó tìm một hệ thống truy cập dữ liệu hoạt động tốt.
  • Hoặc chọn hệ thống truy cập dữ liệu và thiết kế lược đồ cơ sở dữ liệu của bạn để làm việc tốt với nó.

Ví dụ: nếu bạn chọn Nhibernate, bạn sẽ thấy rằng các chuyên gia Nhibernate sẽ sử dụng một kiểu lược đồ cơ sở dữ liệu (và các đối tượng). Sao chép chúng và bạn sẽ có ít đau nhất. Vấn đề là không có ORM đối phó tốt với tất cả các kiểu lược đồ cơ sở dữ liệu và bạn không thể biết cho đến khi một chặng đường dài vào sự phát triển của một hệ thống mà tất cả các nhu cầu lưu trữ dữ liệu của bạn là gì, trừ khi bạn đã viết một hệ thống tương tự khác trước đây .

Hãy nhớ rằng bạn luôn có thể bỏ qua ORM và sử dụng SQL viết bằng tay nếu bạn thấy ORM của mình chậm để cập nhật một số.

2

Câu hỏi rất mở - vào cuối ngày, chúng tôi đã liệt kê các yêu cầu/kỳ vọng của chúng tôi và đi từ đó. Một số tiêu chí lựa chọn bao gồm:

  • Hỗ trợ LINQ
  • POCO Hỗ trợ vs Proprietary/Đối tượng nhúng
  • Háo hức tải/Lazy Loading
  • Cho phép tùy chỉnh Sprocs khi quyền lực hơn là cần thiết

Một số liên kết Best ORM to use with C# 4.0

http://ormbattle.net/

Ayende so sánh EF4 và NH2.5 + http://ayende.com/blog/archive/2010/01/05/nhibernate-vs.-entity-framework-4.0.aspx

Chúc may mắn

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