Review sách: Microsoft .NET – Architecting Applications for the Enterprise (1st Edition)

Mình có thói quen đọc sách cuối tuần, đủ các thể loại từ marketing, startup cho tới technical. Lâu rồi cũng chưa review cuốn sách nào nên thấy thiêu thiếu, đành review cuốn này vậy. Đây là một cuốn sách khá hay về thiết kế architecture cho các ứng dụng .NET.

712pnsTtmNL

Mặc dù nghe tên hầm hố nhưng sách không quá khó, các bạn từ junior, senior cho tới Software Architect đều có thể đọc hiểu cuốn này. Tuy nhiên, mình khuyên các bạn sinh viên hoặc mới ra trường đừng nên đọc. Đi làm được 1-2 năm, tiếp xúc với 1 số project lớn, bạn sẽ dễ hiểu những điều được viết trong sách hơn.

Cuốn sách này có 2 phiên bản: bản đầu tiên ra mắt năm 2008, bản 2nd Edtion tái bản năm 2012. Hai phiên bản có nội dung khác nhau đến 80%, bài review này là của phiên bản đầu năm 2008.

Giới thiệu nội dung

Tác giả cuốn sách là hai lão technical consultant khá cứng cựa, đã từng làm Software Architect cho vài chục dự án. Đi lên từ vị trí developer, những kinh nghiệm họ chia sẻ đều rất gần gũi với dân developer chúng ta. Bên cạnh những nội dung lý thuyết sách còn có những đoạn code mẫu nên khá dễ hiểu.

Ở chương đầu, tác giả định nghĩa lại về architecture: architecture là gì, thế nào là một architecture tốt,.. Đây là những câu hỏi mà các bác developer cứng cựa còn khó trả lời. Kết luận rút ra: architecture là những thứ khó thay đổi, vài trò của người software architect là xác định đúng những thứ này vào giai đoạn đầu, xây dựng nên kiến trúc của hệ thống.

Chương sau, tác giả giới thiệu lại một số mô hình UML cơ bản (Chắc ở trường bạn nào cũng từng học về cái này trong môn: Cơ sở và nguyên lý thiết kế phần mềm). Các mô hình này đôi khi khá rối rắm và phức tạp, làm ta cảm thấy việc vẽ chúng khá là thừa thãi và mất thời gian. Tác giả đã đưa ra một kết luận rất hay: Mục đích của UML là để hỗ trợ giao tiếp giữa các bên trong dự án (dev, designer, tester, business analyst,…). UML giúp các bên hiểu nhau rõ hơn, chứ không phải để làm mất thời gian vẽ vời thiết kế của developer.

Cuối phần một, sách giới thiệu những qui tắc thiết kế cơ bản: Seperation of Concern, các nguyên lý SOLID, các design pattern. Những kiến thức ở chương này khá có ích với developer ở mọi trình độ.

FromUserStoriesToArchitecture19Duties

Phần 2 là phần chính của cuốn sách, giới thiệu về 4 layer thường dùng trong các ứng dụng doanh nghiệp:

  • Business Layer
  • Service Layer
  • Data Access Layer
  • Presentation Layer

Sách chỉ rõ vài trò, nhiệm vụ của từng layer, cách lựa chọn công nghệ phù hợp, những design pattern nào nên áp dụng. Xuyên suốt những nội dung này, tác giả luôn nhắc lại một điều: Không có design nào là hoàn hảo, giải quyết được mọi vấn đề. Mọi design phải được dựa theo yêu cầu của business, người Software Architect phải nhận ra được các ưu/khuyết điểm của mỗi design để đưa ra lựa chọn phù hợp.

Nhận xét

Cuốn sách ra đời năm 2008, khi ASP. MVC, LINQ, Entity Framework còn ở giai đoạn sơ khởi, chưa hoàn thiện, do đó những lời khuyên về lựa chọn công nghệ không còn chính xác lắm. Tuy nhiên, những lời khuyên về kiến trúc, phân tích thiết kế và pattern vẫn rất có giá trị. Bạn sẽ vừa đọc vừa “ồ ra thế!” hoặc “lẽ ra phải làm thế này mới đúng“. Những kiến thức quý giá trong cuốn sách này sẽ giúp bạn: hù doạ junior, bật lại senior và thể hiện trước mặt Software Architect. Nhớ khiêm tốn và đừng làm quá nhé.

Xen lẫn lý thuyết, sách luôn có nhiều đoạn code giải thích architecture, giải thích pattern. Có những đoạn đọc hoài không hiểu, chỉ cần giở tới trang sau đọc code là “thông” ngay. Với những khái niệm phức tạp, tác giả còn kèm thêm nguồn tham khảo để ta tự tìm đọc thêm. Cuối sách, tác giả còn cung cấp một solution gồm đủ 4 layer, với 3 project riêng cho Web, Winform và WPF. Đây là những đoạn code thật, chạy được, chuẩn hơn các project code mẫu đầy rẫy trên mạng nhé.

code

Kết luận

Nếu chưa tin vào những lời quảng bá của mình, bạn hãy xem những review của cuốn sách trên amazon. Sách khá dày (Gần 400 trang) nên sẽ tốn kha khá thời gian đọc và thấm đấy nhé.

Như đã nhắc ở đầu bài, cuốn sách còn bản 2nd Edition năm 2012 nữa. Mình cũng đã đọc thử bản này. Bản 2012 tập trung giới thiệu Domain Driven Design (DDD) và Comand Query Responsiblity Segregation (CQRS). DDD là một hướng tiếp cận mới trong việc việc lấy requirement, viết user story, thiết kế hệ thống. CQRS là một pattern mới, tách rời việc đọc và ghi dữ liệu. Hai thứ này khá hay nhưng mình thấy các công ty Việt Nam ít áp dụng, do đó bản 2012 này không hữu dụng cho lắm so với bản 2008.

Muốn tìm thêm sách để nâng cao kĩ năng lập trình? Hãy thử đọc Clean Code, The Passionate Programmer, hoặc bài viết này nhé.

4 thoughts on “Review sách: Microsoft .NET – Architecting Applications for the Enterprise (1st Edition)”

  1. Bạn ơi, bạn viết 1 bài về CQRS đi, mình nghe thứ này rất hay nhưng chưa tìm hiểu kỹ lắm.

    Like

  2. Chào bạn, blog của bạn rất hay và nhiều chia sẽ bổ ích. Mình thì mới chuyển sang code được một năm, trước đó mình học bên Viễn Thông. Trong lúc làm việc thì mình coi code của người khác trong project rồi làm theo, kế thừa và chế biến lại.
    Tuy nhiên, khi mình làm một chức năng mới, chưa có mẫu sẵn thì mình làm rất chậm và mất nhiều thời gian. Bạn có thể cho mình lời khuyên để cải thiện vấn đề này không? Có phải là coding skill mình cần cải thiện không?
    Many thanks.
    Trinh Le

    Like

Leave a comment