conmoedethuong
The Canadian
Các bài viết về IT của tôi:
Chắc hẳn các thím cũng biết kiến trúc monolith và kiến trúc microservice. Vậy còn các dạng kiến trúc nào khác? Dạng tổng quát của các kiến trúc này là gì? Các câu hỏi đó sẽ được trả lời trong bài viết hôm nay.
Vào năm 1997, Monroe, Robert T., et al. trong bài báo "Architectural styles, design patterns, and objects." IEEE software 14.1 (1997): 43-52. đã đưa ra khái niệm
Một architectural design phục vụ 2 mục đích:
Các thím junior có thể chưa đụng tới phần này, nhưng các thím sen nho chắc là có gặp 1 vài lần sếp kêu dev cho tôi tính năng a b c from scratch, hoặc build luôn nguyên cái system mới. Các architectural design các thím biết thường là đã được customize để phù hợp với bussiness của 1 project đặc thù nào đó, nên hơi khó để apply nó vào 1 hệ thống khác, cho dù nó có cùng tính năng chính đi chăng nữa.
Các researcher từ năm 1997 đã có cùng câu hỏi với các thím, và thế là, Architectural Style ra đời.
Architectural Style cũng có thể coi là 1 dạng pattern. Tuy nhiên, trong khi design pattern giải quyết 1 bài toán cụ thể, architectural style lại cung cấp cho các thím 1 cái nền tảng, hoặc nói theo một cách khác, 1 dạng hướng dẫn, để các thím có thể thiết kế hệ thống của mình.
Tôi sẽ giải thích những cái có dấu * nhé. Những cái còn lại các thím có thể tham khảo wiki: https://en.wikipedia.org/wiki/List_of_software_architecture_styles_and_patterns
- Từ một thằng nghèo, cận, đụt, tôi đã đến Canada học Master of Computer Science như thế nào
- Architectural Styles là gì - Các Architectural Styles phổ biến
Disclaimer: bài viết có sử dụng nhiều thuật ngữ tiếng anh. Các thím học CNTT, IT thì nên làm quen với các thuật ngữ tiếng anh vì tài liệu tiếng Việt cho ngành này rất ít hoặc rất cũ.
# Dẫn nhập
Được sự bảo đảm của mod @Fire Of Heart , với hôm nay tôi mới present ở conference xong nên cũng rảnh, thế là tôi tiếp tục viết tiếp bài này. Kiến thức này tôi học được trong một course level graduate ở Canada.Chắc hẳn các thím cũng biết kiến trúc monolith và kiến trúc microservice. Vậy còn các dạng kiến trúc nào khác? Dạng tổng quát của các kiến trúc này là gì? Các câu hỏi đó sẽ được trả lời trong bài viết hôm nay.
# Architectural Style là gì
## Architectural design
Trước tiên, để hiểuArchitectural Style
là gì, các thím phải biết architectural design
.Vào năm 1997, Monroe, Robert T., et al. trong bài báo "Architectural styles, design patterns, and objects." IEEE software 14.1 (1997): 43-52. đã đưa ra khái niệm
Architectural Design
như sau (khúc này khó dịch vl, nên tôi chỉ dịch thoát nghĩa thôi nhé):Một architectural design phục vụ 2 mục đích:
- Cung cấp 1 cái nhìn tổng quan, trừu tượng về hệ thống. Nó ẩn đi các implementation, và lôi ra ngoài những gì cơ bản nhất của hệ thống.
- Cung cấp 1 cấu trúc cơ bản của hệ thống cho mọi người biết. Dựa vào cấu trúc này, các thím có thể thay thế, bổ sung, thêm thắt tính năng nhưng vẫn đảm bảo tính chất của hệ thống ban đầu.
## Architectural Style
Các vozer là một loài động vật có tính học hỏi cao. Nên câu hỏi đặt ra là làm thế nào để tổng quát hóa các architectural design và dùng nó phát triển các hệ thống mới khác.Các thím junior có thể chưa đụng tới phần này, nhưng các thím sen nho chắc là có gặp 1 vài lần sếp kêu dev cho tôi tính năng a b c from scratch, hoặc build luôn nguyên cái system mới. Các architectural design các thím biết thường là đã được customize để phù hợp với bussiness của 1 project đặc thù nào đó, nên hơi khó để apply nó vào 1 hệ thống khác, cho dù nó có cùng tính năng chính đi chăng nữa.
Các researcher từ năm 1997 đã có cùng câu hỏi với các thím, và thế là, Architectural Style ra đời.
## Architectural Style và Design Pattern
Object Oriented Design gặp khó khăn trong việc:- Mô tả 1 nhóm các object interact với nhau như nào
- Mô tả và đóng gói 1 nhóm các object với nhau để xài đi xài lại.
Architectural Style cũng có thể coi là 1 dạng pattern. Tuy nhiên, trong khi design pattern giải quyết 1 bài toán cụ thể, architectural style lại cung cấp cho các thím 1 cái nền tảng, hoặc nói theo một cách khác, 1 dạng hướng dẫn, để các thím có thể thiết kế hệ thống của mình.
# Các dạng Architectural Style
1. Structure- Component-based (*)
- Monolithic application
- Layered (*)
- Pipes and filters (*)
- Database-centric (*)
- Blackboard
- Rule-based
- Event-driven aka implicit invocation (*)
- Publish-subscribe (*)
- Asynchronous messaging
- Plug-ins (*)
- Microkernel
- Reflection
- Domain specific languages
- Client-server (multitier architecture exhibits this style) (*)
- Shared nothing architecture (*)
- Space-based architecture
- Object request broker
- Peer-to-peer (*)
- Representational state transfer (REST) (*)
- Service-oriented (*)
- Cloud computing patterns
Tôi sẽ giải thích những cái có dấu * nhé. Những cái còn lại các thím có thể tham khảo wiki: https://en.wikipedia.org/wiki/List_of_software_architecture_styles_and_patterns
Last edited: