• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

SubSonic - Tự động sinh DAL

Các công cụ hỗ trợ thêm cho lập trình viên dùng .NET

Điều hành viên: tungcan5diop, QUANITGROBEST

Nội qui chuyên mục
1. Gửi bài viết tại đây, Tester sẽ chuyển vào trong nếu bài viết đạt yêu cầu.
2. Chỉ nên đưa link download tại website của nhà sản xuất phần mềm nếu như giới thiệu các công cụ mà sử dụng phải trả phí, mang tính chất thương mại.
3. Tuyệt đối không được giới thiệu, đưa link cũng như upload lên diễn đàn những file, thông tin liên quan đến crack, keygen, serial...
4. Gửi bài theo mẫu qui định: viewtopic.php?f=2&t=5
[tenchuongtrinh][/tenchuongtrinh]
[phienban][/phienban]
[tacgia][/tacgia]
[chucnang][/chucnang]
[end][/end]
Fioenix
Bài viết: 1
Ngày tham gia: CN 11/01/2009 8:10 pm

SubSonic - Tự động sinh DAL

Gửi bàigửi bởi Fioenix » T.Sáu 12/06/2009 2:35 am

Tên chương trình: SubSonic
Phiên bản: 2.2 Final
Tác giả: http://subsonicproject.com
Chức năng: Auto-generated Dal, Scaffold & more...



Biên soạn lại từ bài viết trên các báo điện tử của tác giả Phạm Đình Trường (phdtruong@yahoo.com)
Xin mời các bạn tham gia cộng đồng SubSonic Việt Nam: http://www.subsonicvn.net




1.Giới thiệu

SubSonic là một .NET Open Source Project (tạm dịch là đề án mã nguồn mở triển khai trên nền tảng của công nghệ .net) được phát triển bởi Rob Conery và đội ngũ developer nòng cốt gồm Eric Kemp, Scott Watermasysk, Jon Galloway, Phil Haack và Gavin Joyce.
Rõ hơn, SubSonic là một framework, với rất nhiều công cụ giúp xây dựng project architecture (kiến trúc đề án), đặc biệt là cho các web project, một cách thuận tiện và nhanh chóng, trong đó ý tưởng là tự động hóa việc sinh mã (Auto-Generated Code) cho DAL (Data Access Layer)

2.Đặc điểm

SubSonic tự động cập nhật những thay đổi của thiết kế Database để đồng bộ và sinh mã cho DAL. Từ đó, nâng cao tiến độ làm việc của project.
SubSonic sử dụng mô hình Entity làm nền tảng.
SubSonic thiết kế DAL dựa trên Provider Pattern và Active Record Pattern (một pattern đặc biệt của Entity, có 3 trạng thái đặc trưng là IsLoaded, IsNew và IsDirty, ngoài ra giữa chúng có mối liên kết tương tự như các Table của một Database).
Hình ảnh

SubSonic sinh mã theo mô hình Active Record Pattern có nghĩa là mỗi Table/View/Stored Procedure sẽ được ánh xạ vào một đối tượng (Active Record), đối tượng này tương tác với Table/View/Stored Procudure bằng những hàm chuẩn Load(), Save()... Các đối tượng này còn gọi là Wrapper Object. Tất cả các đối tượng được sinh ra từ SubSonic đều kế thừa ActiveRecode hoặc ActiveList.
Hình ảnh
Dựa vào ORM (Object Relational Mapping), SubSonic xây dựng ánh xạ giữa các Table/View/Stored Procedures với các đối tượng tạo nên DAL. Ngoài ra, SubSonic được thiết kế tương thích với nhiều Database Management System (MS SQL, MySQL, Oracle...).
SubSonic được xây dựng trên .NET Framework 2.0 trở đi nên hổ trợ Partical Class. Mỗi Wrapper Object có hai phần, một phần do SubSonic tạo ra phần còn lại để bổ sung các đoạn code mới mà không làm ảnh hướng đến hoạt động của hệ thống.
Hình ảnh
SubSonic tận dụng khả năng đem lại của Audit Field và đưa ra thiết kế chuẩn bao gồm các Audit Field sau: CreatedBy, CreatedOn, Deleted, IsActive, IsDeleted, ModifiedBy, ModifiedOn.

SubSonic khuyến nghị các Table trong Database nên được thiết kế với các trường dành riêng này.


3.Kiến trúc

Hình ảnh
Trung tâm của SubSonic Framework là DAL Builder, có nhiệm vụ tạo ra một loạt các Object (Model & Controller) nhờ đó giảm tối đa thời gian và công sức xây dựng DAL. Tất các các Object này được được thiết kế theo kỹ thuật strongly-typed sao cho dữ liệu được quản lý an toàn và hiệu quả.
SubSonic hổ trợ một Query Engine cho phép truy vấn dữ liệu động mà không cần phải viết script, từ đó giảm rất đáng kể thời lượng làm việc của developer.
Lớp ngoài cùng là thư viện API ngày càng được hoàn thiện với nhiều control mới. Đáng kể nhất là Scaffold, giúp xây dựng nhanh các trang admin tạm thời.

4.SubSonic và MVC (Model View Controller)

Phương pháp thiết kế MVC là phương pháp chia nhỏ ứng dụng nhiều class hoặc chia nhỏ phần giao diện người dùng (User Interface) thành ba thành phần chính là Model, View và Controller.
Ở đây, SubSonic sẽ tự động sinh ra Model và Controller.
Hình ảnh
Model:Theo định nghĩa của MVC thì Model sẽ quản lý thông tin và thông báo cho các Observer khi thông tin đó thay đổi. Lợi dụng đặc điểm này, SubSonic xây dựng các Model trong đó thiết lập ánh xạ với các Table/View. Các thuộc tính cơ bản của ActiveRecord là: IsLoaded, IsNew, IsDirty sẽ nói lên trạng thái của thông tin được thay đổi ra sao.
Controller:Trong mô hình MVC, Controller chịu trách nhiệm kết nối các tương tác người dùng với phản hồi của ứng dụng. Controller nhận đầu vào từ View và điều khiển Model để thực hiện các tác vụ tương ứng. Controller kết nối các Model khác nhau và quản lý nguồn dữ liệu của các Model đó (do đó còn gọi là Object Data Source Controller). Cũng như Model, với mỗi Table/View, SubSonic tự động tạo ra Controller tương ứng. Ngoài ra, Controller có thể được mở rộng (partial class) với các "business rule" đặc thù cho từng module.
Như vậy, đối với mỗi một Table/View, sẽ có 3 đối tượng được tự động tạo ra bởi SubSonic: Hai đối tượng Model (một kế thừa ActiveRecord và một kế thừa ActiveList) và một đối tượng Controller.

5.Scaffold

Trong một project, công việc thao tác với dữ liệu mẫu là rất cần thiết, tuy nhiên không nên để developer hay tester tương tác trực tiếp với database vì lý do bảo vệ an toàn dữ liệu. Từ đó phát sinh ra một phương phá khá an toàn là dựng nên các giao diện tạm với đầy đủ chức năng CRUD (Create, Read, Update, Delete) như một trang quản trị để bất kỳ người nào cũng có thể tương tác được. Tuy nhiên, các database có thể rất lớn và việc xây dựng các giao diện tạm như thế tốn rất nhiều thời gian và công sức.Thuật ngữ Scaffold ra đời để tái hiện các giao diện tạm đó giống như các "giàn giáo" trong ngành xây dựng, giúp các developer, tester đẩy mạnh tiến độ project. Và khi project kết thúc, các “giàn giáo” đó sẽ được gỡ bỏ và rất có thể, một số trong số đó được giữ lại hoặc thậm chí nâng cấp thành các trang Admin.
Hình ảnh
Ngoài các chức năng cơ bản CRUD, SubSonic còn trang bị cho Scaffold các control tiện dụng như: GridView, Paging, Calendar, DropDown...
Scaffold trong SubSonic rất đa đạng và được phân loại như sau:
-[FONT=&quot]QuickTable:[/FONT]Hiển thị toàn bộ dữ liệu của một bảng trên GridView, không có đầy đủ CRUD. Đây là control đơn giản nhất của SubSonic.
-[FONT=&quot]Các User Control thành phần bao gồm:[/FONT]DropDown, CalendarControl, ManyManyList, RadioButtons.
[url="http://photo.zing.vn/photo/gallery_preview/allsize.6236319.html"]Hình ảnh[/url]
-[FONT=&quot]Scaffold:[/FONT]Có đầy đủ CRUD và chứa tất cả các control thành phần của SubSonic.

6.Sinh mã tự động (Auto-generated Code) trong SubSonic

Command-line, chạy trực tiếp trên MS DOS hoặc tích hợp như là một External Tools của Visual Studio.
Hình ảnh
Marco, tính hợp SubSonic vào Visual Studio dưới dạng marco, nhằm nhanh chóng thực thi công việc.

SubSonic Add-in, SubSonic Custom Tool, tích hợp SubSonic vào Visual Studio như một add-in hay một custom tool.

SubStage, là một application giúp nhanh chóng tạo ra thông tin cấu hình (Web/App.config), xây dựng DAL và xây dựng Scaffold.
Hình ảnh

http://subsonicvn.googlecode.com/files/SubSonic2.2.zip



Hình đại diện của người dùng
DiemLTT
Thành viên tích cực
Thành viên tích cực
Bài viết: 110
Ngày tham gia: T.Ba 17/02/2009 9:37 am
Been thanked: 4 time
Liên hệ:

Re: SubSonic - Tự động sinh DAL

Gửi bàigửi bởi DiemLTT » T.Sáu 12/06/2009 8:15 pm

Hjc, hình như tác giả topic là Gâu Gâu TP4 thì phải? :-w (lỡ k p thì xin lỗi hén)
Tách cafe lần đầu tiên em uống
Quên khuấy đường nghe đắng ngắt niềm đau......


Quay về “[.NET] Công cụ, tiện ích”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách