Dependency Injection with Spring.Net p6

(Bài viết dịch từ bài Dependency Injection with Spring.Net của David Consdorf, thêm hành thêm tiêu rồi nấu lại bởi Nguyễn Thoại :bbpraroi:)





  • Testing with Dependency Injection

- Một điểm thú vị nữa của Spring.NET là chúng ta có thể sử dụng Unit Test để test các component của chúng ta rất dễ dàng. Với khả năng thay đổi mối liên kết giữa các thành phần trong ứng dụng, người lập trình có thể tạo ra những “đối tượng giả” để test, vì vậy ta có thể test đoạn code họ đang viết mà không cần lo lắng đến những phần chưa hoàn thành của hệ thống. Điều này có thể lạ với một số bạn vì khái niệm unit testing không được dạy ở các trường đại học, đến khi đi làm ở một số công ty các bạn sẽ thường xuyên gặp khái niệm này. Ý tưởng cơ bản là những hàm, những đoạn code các bạn viết ra đều phải có một phần code khác để test ngay những hàm bạn tạo. Giả sử bạn viết một lớp tính điểm trung bình các môn Toán, Lý, Hóa của học sinh, trong lớp (class) của bạn sẽ gọi đến một lớp Utility tính trung bình của một người khác trong nhóm viết. Vấn đề bạn gặp phải là lớp Utility đó chưa được viết xong, như vậy không thể nào test được. Nhưng rất may là đã có Spring.NET sẽ giúp chúng ta gỡ rối vấn đề này.

- Một ví dụ khác, khi bạn đang viết một số lớp dịch vụ (service – BLL) cho ứng dụng nhưng tầng dữ liệu (DAL) vẫn chưa hoàn thành; hoặc có khi bạn đang viết phần mềm cho một khách hàng nước ngoài rất khó tính và họ không cho bạn truy cập vào server database của họ; với Spring.NET và Dependency Injection, bạn vẫn có thể test thử các lớp dịch vụ bằng cách tạo ra các Mock objects để điền dữ liệu chưa lấy được từ database mà không cần đến những đối tượng ở tầng dữ liệu, hay nói cách khác bạn cũng không cần đến database để test. Mock là một kĩ thuật lí thú để test ứng dụng rất linh động và tôi hi vọng có dịp sẽ chia sẽ những hiểu biết của mình với các bạn ở những bài viết sau. Trong phạm vi bài viết này tôi chỉ có thể giới thiệu Mock như là một framework giúp chúng ta tạo ra những object giả với những hàm hoạt động theo cách mà ta muốn. Trong trường hợp này nó sẽ tạo ra những object giả ở tầng dữ liệu và giả vờ như đã kết nối với database và trả về dữ liệu cho những lớp ở tầng dịch vụ. Sau này, khi chúng ta cần kết nối tầng dịch vụ với tầng dữ liệu, bạn chỉ cần thay đổi file cấu hình của Spring.

- Ngoài những điều kể trên, có một số kĩ thuật khác rất lí thú mà Spring.NET hỗ trợ bao gồm cả hệ thống test của chính Spring.NET. Vì vậy nếu bạn muốn tìm hiểu hãy đọc những bài viết khác liên quan đến vấn đề này ở trang web www.springframework.net

  • More Spring.NET
- Xin nhắc lại một lần nữa là loạt bài này tác giả chỉ tập trung vô kĩ thuật Dependency Injection của Spring.NET. Có rất nhiều những điều khác mà Spring.NET có thể giúp bạn. Lúc đầu, Spring đưọc tạo ra với ý tưởng xây dựng một object factory có thể dễ dàng cấu hình nhưng về sau này ý tưởng đó dần được mở rộng thành nhiều chức năng khác. Và Spring.NET vẫn tiếp tục được cải tiến để giúp chúng ta tạo nên những component có thể dủng lại, giúp chúng ta giải quyết những vấn đề rất hay gặp phải và giúp chúng ta code theo một phong cách rất mới khi xây dựng chương trình.

  • Conclusion
- Tôi hi vọng loạt bài này sẽ giúp các bạn hiều được đôi chút về sự tiện lợi và mạnh mẽ mà Spring.NET mang lại. Dependency Injection và Loose Coupling là những khái niệm không mới nhưng nêú chú ý sử dụng bạn sẽ tạo ra những chương trình tiện lợi, dễ mở rộng về sau và rất dễ bảo trì. Bạn hãy nhớ đến Spring.NET như là một framework mạnh mẽ để áp dụng Dependency Injection và hãy luôn ghé thăm trang web của Spring.NET để biết thêm những tính năng tuyệt vời khác.

  • Code Examples
- Ngoài những ví dụ từ bài gốc, trong những bài dịch tôi có đưa vào một số ví dụ khác không liên quan đến việc lập trình. Nên nếu bạn muốn tham khảo code mấu, hãy download từ bài viết gốc của tác giả David Consdorf : Download Code Examples.

  • About the Author
David Consdorf, Chicago, Illinois
  • Work Experience
For the last three years, David has been developing Java and ASP.Net web applications as a senior software consultant for Crowe Chizek and Company LLC. Crowe Chizek and Company LLC is a Microsoft Gold Certified Partner.
  • Education
David graduated with a Bachelor's Degree in Computer Science from the University of Illinois Urbana-Champaign.
  • About the Translator :bbpcuoi3: : Click here


Phần 1

Phần 2

Phần 3

Phần 4

Phần 5

(Các bạn đang xem phần 6)

5 comments:

  1. Hung Dinh Says:

    Em làm cũng được một thời gian tương đối rồi. Nếu để diễn tả bài viết của bác bằng 2 từ, 4 tiếng thì sẽ là say mê và hả hê :D

  2. Unknown Says:

    please!!! Continue...........

  3. Anonymous Says:

    Anh dịch rất hay và xúc tích. Hy vọng càng ngày càng thêm nhiều bài hay.

  4. Unknown Says:

    Bài viết rõ ràng và dễ hiểu, cảm ơn Thoại

  5. Anonymous Says:

    Trình độ diễn đạt của bác thật perfect! Hi vọng bác tiếp tục có những bài viết mới

rss
 

About Me

Place I've live
Near Bossley Park, Sydney, NSW, Australia
Place I've work
  • Freelancer (from 06/2010 to present)
  • Harvey Nash (from 05/2008 to 06/2010)
  • DataDesign Vietnam (10/2005 to 04/2008)
Place I've studied
  • University of Natural Science (Bachelor of Science HoChiMinh City Vietnam From 2001 to 2005)
  • Le Hong Phong High School (HoChiMinh City Vietnam From 1997 to 2000)