Bài viết này tuy cũ nhưng khá hay. Mình xin tạm đưa lên
SubSonic do Rob Conery viết cách đây từ năm 2007 dựa trên pattern Active Record. nHibernate cũng tương tự. Hai thư viện này đều được gọi là ORM, Object Relation Mapping. Mình từng thử học nHibernate thấy nó khá loằng ngoằng vì phải dùng file XML để ánh xạ bảng, hoặc kết nối bảng của CSDL với các đối tượng tập collection trong .NET.
Ngược lại SubSonic thì đơn giản hơn, nó có một tool quét tất cả các bảng, stored procedure trong CSDL chủ yếu ở đây là SQL 2005 trở lên, Oracle cũng hỗ trợ nhưng mình chưa thử. Sau có thông tin đầy đủ về tên bảng, tên cột, kiểu dữ liệu của cột thì SubSonic sẽ sinh mã C# định nghĩa các collection chứa class, trong class có các trường thành viên tương ứng với cột. SubSonic có thể mô tả được cả quan hệ một-nhiều. NHibernate cũng vậy.
Đối với stored procedure, thì SubSonic sinh mã là các hàm static. Khi lập trình viên CSDL thay đổi cấu trúc bảng, sửa, thêm mới stored procedure thì tool command line của SubSonic cần chạy lại để cập nhật ánh xạ. Ngoài ra lập trình viên có thể sử dụng partial class để thêm mới các method cho các class tương ứng với bảng trong CSDL. Mình rất thích tính năng này của SubSonic bởi không phải lo truyền sai tham số vào stored procedure.
Về tốc độ, mình nghĩ SubSonic và nHibernate không khác nhau nhiều. Nhưng về dễ sử dụng thì mình thích SubSonic hơn.
LINQ thì có nhiều điểm cải tiến hơn là ORM thuần tuý. LINQ có thể truy vấn cho .NET collection, XML, và SQL,… Căn bản bên trong của LINQ tận dụng những cú pháp mới trong C# 3.0:
- Hàm mở rộng, extension method, gắn hàm mới vào đối tượng kể cả kiểu cơ bản như int mà không cần định nghĩa hàm thừa kế. Hàm này phải khai báo là pubic static nhé
- Biểu thức Lamba, lambda expression, cách viết mới của delegate inline function.
Tốc độ thì cả 3 công nghệ trên khi đo đạc cá nhân sử dụng kiến trúc client-server đều không thể nhanh bằng viết lời gọi đến stored procedure. Tuy nhiên, khả năng mở rộng, phân tán các tập đối tượng, objection collection giữa các máy tính trong kiến trúc SOA rõ ràng là dễ dàng hơn so với Client Server ngày xưa.
Hơn nữa khi nói đến tốc độ, chúng ta phải bàn đến cả khả năng chịu tải truy cập, load balancing & scalability. Một câu lệnh SQL chạy rất nhanh khi chỉ có duy nhất yêu cầu query thì chưa chắc đã đủ. Thực tế nhiều khi là hàng nghìn yêu cầu query đến cùng một lúc. Lúc này, cần phải tính tới phân tải database server hoặc cache dữ liệu trên nhiều application logic tier trung gian. Khi đó LINQ hay ActiveRecord sẽ phát huy sở trưởng của mình.
Với LINQ chỉ cần học một cú pháp, có thể truy vấn nhiều nguồn dữ liệu khác nhau. Chúng ta có thể mở rộng cả cú pháp LINQ viết thêm các hàm deffered và non differed function mới khi chúng ta có kinh nghiệm với hàm mở rộng và biểu thức lamba. Riêng cái này thì ANSI SQL bó tay rồi.
Happy Coding!
Thứ Năm, 18 tháng 8, 2011
Đăng ký:
Đăng Nhận xét (Atom)
Bài đăng phổ biến
-
By Andrew S. Tanenbaum Publisher: Prentice Hall Number Of Pages: 669 Publication Date: 1998-10...
-
Here is a review of the Acronis Disk Director Suite . We will attempt to resize the primary partition and create a new logical partition ...
-
Bộ Tài Liệu MCSA 2003-2008 Tiếng Việt Dung lượng: 518.53 MB Free File Hosting Made Simple - MediaFire
-
QuanTriMang.com - Có lẽ không cần phải giới thiệu nữa về ứng dụng cơ bản này, là chương trình soạn thảo v...
-
(ictexpress.com) – Không cần phân vùng ổ cứng, không sợ mất dữ liệu, cài đặt Ubuntu chỉ với 1 click chuột, gỡ bỏ dễ dàng đó là ưu điểm mà ...
-
Phân tích và thiết kế HTTT Thực thể là một đối tượng hay một khái niệm trong thế giới thực được xác định bởi tổ chức và nó tồn tại độc lập...
-
ThinkTank Đây là game mini đồ họa 3D đẹp mắt, chơi solo và đặc biệt là chơi online, dung lượng nhẹ 9.2 MB link: http://www.mediafire.com/?wb...
-
Whether you’re a front-end graphics designer or a back-end web programmer, if you’ve worked long enough in the field of creating web-based s...
-
Đã 29 năm trôi qua kể từ ngày 30/8/1982, ngày hệ thống liên lạc bằng thư điện tử (email) được cấp bản quyền. Hiện có khoảng 3,1 tỉ tà...
-
Phần hướng dẫn sau đây sử dụng cho Install Shield 2010(Version 16) Bước 1: Tạo mới file cài đặt Chạy Install Shield 16 và chọn File/New. Ch...
Không có nhận xét nào:
Đăng nhận xét