1. KHẢO SÁT SPRING.NET
I. Giới thiệ u
Spring.Net là 1 framework hỗ trợ nhiều chức năng phức tạp cho việc phát triển các ứng dụng .Net.
Spring.Net giúp ta giảm số lượng dòng code, giúp ứng dụng dễ bảo trì và dễ test tự động hơn.
Spring.Net cài đặt sẵn các design pattern tiện dụng để ta có thể tích hợp dễ dàng vào ứng dụng của mình
mà không phải tốn nhiều thời gian để cài đặt lại các design pattern đó. Ví dụ như là module Inversion of
Control của Spring giúp ta tăng tính Loose Coupling cho ứng dụng của mình.
Các chức năng mà Spring.Net cung cấp :
Dependency Injection
Aspect-Oriented Programming
Data access support including support for NHibenrate (ORM framework)
Web Framework
Integration Testing
Validation Framework
Dynamic Reflection
Threading and Concurrency Support
Object Pooling
Expression Evaluation
Services
…
II. Các modules
Các chức năng trong Spring.Net được sắp xếp vào các module như hình sau :
2. 1. Spring.Core
Là thành phần cơ bản nhất trong Spring cho phép ta cấu hình ứng dụng của mình bằng Dependency
Injection (Inversion of Control) .
Giả sử ta có 2 lớp A và B. Lớp A cần sử dụng 1 số phương thức của lớp B do đó A phụ thuộc vào B.
A B
Nhưng lớp B có nhiều cách cài đặt. Do đó ta sẽ thay đổi cách cài đặt lại như sau : ta tạo 1 Interface cho B,
các cách cài đặt khác của B sẽ kế thừa Interface này ( B1, B2)
A IB
B
create
B1 B2
Với cách cài đặt này ta có thể dễ dàng thay đổi việc A phụ thuộc B1 hoặc B2. Tuy nhiên để thực hiện việc
thay đổi này ta phải chỉ nh sửa lại code do đó phải biên dị ch lại chương trình gây khó khăn cho việc cấu
hình ứng dụng.
Do đó Spring.net cung cấp cho ta chức năng Dependency Injection giúp việc cấu hình này dễ dàng hơn
mà không phải biên dị ch lại chương trình. Các thông tin cấu hình được lưu trên file xml tách rời khỏi ứng
dụng. Spring.Net sẽ dựa vào thông tin này để gắn (inject) các phụ thuộc (dependency) giữa các đối tượng
giùm ta.
3. Ngoài ra module Spring.Core còn tích hợp 1 số chức năng sau :
- Expression language
- Validation framework
- Data binding framework
- Dynamic reflection
- Threading
- Resource abstraction
2. Spring.Aop
Dùng module này ta có thể xây dựng ứng dụng theo kiến trúc Aspect-Oriented Programming (AOP).
3. Spring.Data
Dùng module này giúp đạt hiệu quả cao hơn và ổn đị nh hơn khi viết chức năng kết nối dữ liệu bằng
ADO.Net
4. Spring.Data.Nhibernate
Dùng module này để tích hợp Spring với Nhibernate
5. Spring.Web
Moduel Spring.Web cung cấp cho ta những chức năng sau cho việc lập trình với ASP.Net
- Depedency Injection : hỗ trợ chức năng Dependency Injection cho các thành phần trong ASP.Net
( page, control, module, provider, HTTP handler)
- Bi-directional data binding : chức năng này giúp ta chỉ ra dữ liệu nào sẽ được đặt vào các
control khi hiện trang web lên cho người dùng xem và các dữ liệu đó sẽ được trả lại từ các
control khi trang web được submit. Điều này giúp ta giảm 1 lượng lớn các đoạn code chán ngắt
nhưng dễ gây lỗi khi lập trình.
- Web object scopes : chức năng này giúp đị nh nghĩa các đối tượng thuộc phạm vi nào : request,
session, application.
- Data model management : cung cấp chức năng tương tự nhưng tốt hơn chức năng “view state”
của ASP.Net
- Validation framework : chức năng này giúp ta thực hiện việc validate trên các control dễ dàng
mà không phải code quá nhiều
- Result mapping : các url thường được lưu thẳng trong code gây khó khăn cho việc thay đổi sau
này. Với chức năng này ta sẽ đị nh nghĩa ra các tên dễ nhớ hơn và gắn nó với các url tương ứng.
Các đị nh nghĩa này được lưu trên file xml tiện cho việc thay đổi .
- Localization và Master page : chức năng này giúp dễ dàng cho việc đị a phương hóa ứng dụng và
hợ trợ master page tốt hơn
4. 6. Spring.Web.Extension
Hỗ trợ chức năng AJAX tốt hơn
7. Spring.Services
Kết hợp các chức năng DI và AOP cho việc sử dụng service
8. Spring.Testing.Nunit
Dùng module này để thực hiện việc testing với NUnit
III. Nhậ n xét
Framework Spring.Net cung cấp nhiều chức năng tiện lợi cho việc xây dưng 1 ứng dụng lớn. Nhưng để sửa
dụng tốt nó cần tìm hiểu nhiều hơn. Việc cấu hình trên file xml không đơn giản do thiếu công cụ hỗ trợ
(IntelliSense, kiểm tra lỗi …).
Ngoài ra nên tìm hiểu thêm về cách tích hợp các kiến trúc MVC, MVP với Spring.Net để xây dựng ứng
dụng tốt hơn.
IV. Tham khảo
- Spring.net documentation
- Các bài viết về cách dung Dependency Injection và AOP của Spring.Net, kiến trúc MVC, MVP -
http://nthoai.blogspot.com/search/label/Spring.NET
- Spring.Net – QnA - http://www.infoq.com/articles/SpringDotNET-QnA
- Dependency Injection for Loose Coupling - Billy McCafferty -
http://www.codeproject.com/KB/architecture/DependencyInjection.aspx