Tôi đang chuẩn bị một dự án Windows mới và tự hỏi loại công nghệ DAL nào sẽ sử dụng. Ban đầu tôi đã tìm kiếm một cái gì đó đơn giản hơn để không dành quá nhiều thời gian để xây dựng nó. Nhưng tôi cũng hiểu rằng nó phải hiệu quả và có thể mở rộng trong thời gian dài.Dự án .NET 3.5 mới: Công nghệ DAL nào được sử dụng?
Tôi định sử dụng WPF (MVVM) Ứng dụng khách và Dịch vụ WCF trên hệ thống 3 cấp.
Chỉ cần để tổng hợp tất cả các công nghệ hiện có Tôi quen thuộc với:
DataSets
PRO: Có thể là một chút cũ lỗi thời, nhưng rất dễ sử dụng và cho phép những phần nhất để được tự động được tạo cho bạn. Một khía cạnh mạnh mẽ về bộ dữ liệu là dễ dàng di chuyển dữ liệu liên quan thông qua Quan hệ. Cũng theo cách nó bị ngắt kết nối khỏi cơ sở dữ liệu và có thể đơn giản hóa các bản cập nhật bằng cách tự động kiểm tra dấu thời gian. Bao gồm xác thực.
CONTRA: Khá cũ. Một số coi chúng là không có các đối tượng/mô hình kinh doanh thực tế mà chỉ là một bản sao của các bảng dữ liệu SQL của bạn. Việc chuyển chúng giữa WCF Service/Client có thể khó khăn hơn các đối tượng nghiệp vụ tự tạo.
Thư viện Enterprise 4.1 - Data Access Khối
PRO: Các Dal là đẹp đưa vào một mô hình Nhà máy. Nó sẽ tự động mở kết nối và đóng tự động. Rất dễ sử dụng cho hầu hết các phần. Nó hỗ trợ cả hai dataSets và SQL Sps bình thường để tạo các đối tượng nghiệp vụ của riêng bạn. Là một phần của một Framework đang diễn ra, nó có thể hiệu quả hơn nhiều khi sử dụng kết hợp với phần còn lại của Thư viện doanh nghiệp để có một sản phẩm cuối cùng hiệu quả.
CONTRA: ??
LINQ to SQL
PRO: Tự động tạo ra các bảng SQL thành các đối tượng kinh doanh. Dễ dàng để CRUD. Về mặt lý thuyết, một cách rất hay để làm điều đó.
CONTRA: Đã chơi xung quanh với nó khi nó ra, tôi thấy nó flaky và đôi khi không ổn định. Nó đã được coi là một công nghệ đã chết sau khi Microsoft thông báo rằng Entity Framework 4.0 - như là một phần của .NET 4.0 - sẽ được Microsoft đề nghị. Chỉ có một vài sửa lỗi cũng được mong đợi trong .NET 4.0 nhưng không có thêm tính năng mở rộng kế hoạch.
Entity Framework 4.0
Tôi không biết bất cứ điều gì về nó, nhưng duy nhất mà nó sẽ thay thế mọi thứ khác như trên .NET 4.0. Tôi cũng bị cám dỗ để sử dụng nó, tuy nhiên kể từ khi nó vẫn còn trong BETA, tôi sẽ không thể đi theo cách đó được nêu ra.
Tôi rất cám dỗ khi sử dụng Thư viện doanh nghiệp 4.1 - Chặn truy cập dữ liệu và để tạo đối tượng kinh doanh của riêng tôi. Con lớn là nó sẽ mất nhiều thời gian hơn để tạo ra DAL. Trừ khi ai đó có thể thuyết phục tôi sử dụng DataSets thông qua Khối truy cập dữ liệu thay thế.
Ý kiến và ý tưởng của bạn là gì? Rất cám ơn, Kave
Tôi đã đưa ra một số suy nghĩ và tôi nghĩ bạn đúng. Sử dụng EntLib vẫn có nghĩa là rất nhiều công việc tạo ra mọi thứ bằng tay. Khi bạn đề cập đến EF, ý của bạn là phiên bản 4.0 BETA hay ý bạn là phiên bản 1.0 thực tế? Tôi đã thực sự cố gắng phiên bản 1.0 đêm qua và tôi phải nói rằng nó trông khá ổn và thực hiện công việc. Ngay trước đó, tôi đã thử SubSonic, không tạo được mã cho các bảng tra cứu của tôi, có cùng tên với một trong các trường hiện có của chúng. Điều này phải có lẫn lộn Subsonic. EF 1.0 đã hoàn thành tốt công việc và tôi nghĩ tôi sẽ đi theo cách này. Bạn nghĩ sao? – Houman
EF 1 không phải là bất cứ nơi nào gần như là tính năng phong phú như LinqToSql và LinqToSql là khá nghèo tính năng khôn ngoan. EF 1 thiếu hỗ trợ cho các khái niệm ORM cơ bản như hỗ trợ tải lười biếng thích hợp, mà LinqToSql không hỗ trợ. –
Tôi đã sử dụng EF 1.0 cho một vài ứng dụng, những ứng dụng có cơ sở dữ liệu nhỏ hơn và không hoạt động quan trọng, và đã hài lòng với nó - yêu cầu cơ bản là "lấy dữ liệu vào và ra khỏi cơ sở dữ liệu". Nếu các tính năng, khả năng mở rộng và hiệu suất là một mối quan tâm lớn, bạn vẫn có thể thử EF, nhưng có thể muốn truy cập dữ liệu trừu tượng bằng cách sử dụng một lớp phần mềm khác hoặc CSLA để bạn có thể chuyển đổi hoặc nâng cấp công nghệ truy cập dữ liệu sau này. Tất nhiên, tại thời điểm đó, các lợi ích RAD có thể không còn ở đó nữa và bạn có thể muốn xem xét một ngăn xếp tùy chỉnh đầy đủ. –