Khi bạn đang vào website của eBay và lick vào danh sách tìm kiếm một tấm thảm Ba Tư chẳng hạn, máy tính của bạn sẽ trò chuyện với máy chủ web, sau đó máy chủ web sẽ thông tin lại cho máy
Trang 1ĐỀ CƯƠNG ÔN TẬP D09
MÔN HỌC KIẾN TRÚC & THIẾT KẾ PHẦN MỀM
1 Trình bày các kiến trúc phần mềm eBay, Amazon, FaceBook, Google và các công nghệ liên quan mà các hệ thống này đã sử dụng (1)
2 Định nghĩa kiến trúc phần mềm Phân biệt kiến trúc logic và vật lý Kiến trúc và biểu đồ triển khai với UML Phần biệt thành phần, kiến trúc, hệ thống con (4)
3 Trình bày kiến trúc của các hệ quản ly thư viện và Hệ Icoot trong tài liệu tham khảo
4 Mô hình thành phần: đinh nghĩa và biểu diễn với biểu đồ UML (6)
5 Pattern là gì? Định nghĩa và phân loại các kiểu pattern (8)
6 Trình bày một số Pattern: Đinh nghĩa, Mô tả bằng biểu đồ UML, ý nghĩa sử dụng Cho ví dụ áp dụng với code java
7 Áp dụng các pattern trong hệ Bookstore: Biểu đồ, code
8 Trình bày các dạng bean trong J2EE (entity bean, session bean, message-driven bean) và ý nghĩa sử dụng của các bean đó Cho ví dụ với code java
9 Mô hình thành phần trong NET Thành phần và các kiểu giao tiếp trong NET (Phan biet cac loai file duoi EXE
va DLL trong NET) Kiểu event va delegate trong NET Cho ví dụ minh hoa (9)
10 So sánh mô hình thành phần NET và J2EE (11)
Câu 1: Kiến trúc eBay, Amazon, FaceBook, Google
*Cấu trúc của eBay
( Năm 1999 xảy ra một loạt sự đứt quãng dịch vụ gây khó khăn lớn cho công việc làm ăn của eBay Trong khoảng thời gian ba ngày, những máy chủ làm việc quá tải liên tục bị Shut Down, đồng nghĩa với việc người dùng không thể nào theo dõi việc đấu giá, đặt giá cho những sản phẩm mình muốn mua hay hoàn thành giao dịch của mình Đó là một thời kỳ ảm đạm đối với người mua, người bán và cả eBay Và rồi một cuộc thiết kế lại hoàn toàn kiến trúc cũng như công nghệ của eBay bắt đầu
Năm 1999, eBay có một máy chủ chứa khối lượng cơ sở dữ liệu khổng lồ cộng thêm một vài hệ thống máy tính riêng biệt phụ trách chức năng tìm kiếm Đến năm 2005 eBay đã có
khoảng 200 máy chủ cơ sở dữ liệu và 20 máy chủ tìm kiếm.)
Kiến trúc của eBay là một thiết kế máy tính dạng lưới thuận lợi cho cả việc kiểm tra lỗi cũng
như phát triển hệ thống Trừ chức năng tìm kiếm ra thì mọi thứ trên eBay đều có thể chạy trên khoảng 50 máy chủ -máy chủ web, máy chủ ứng dụng và hệ thống lưu trữ dữ liệu Mỗi máy chủ có từ 6 đến 12 bộ vi xử lý Có khoảng 50 máy chủ hoạt động riêng biệt nhưng vẫn giữ liên lạc với nhau để mọi người có thể biết nếu hệ thống gặp vấn đề ở đâu đó Nếu nhu cầu tăng, eBay chỉ cần tăng số máy chủ cho mạng lưới
Trang 2Hình 4 : Cơ sở hạ tầng của eBay Trong khi phần lớn mọi thứ trên website đều có thể chạy trên 50 máy chủ, thì số máy chủ thực
tế của eBay lớn gấp bốn lần con số đó 200 máy chủ của họ được đặt tại bốn địa điểm, tất cả đều ở Mỹ Khi bạn sử dụng eBay, bạn có thể nói chuyện với bất kỳ ai ở một trong bốn địa điểm
đó vào bất kỳ lúc nào họ đều giữ những dữ liệu giống nhau Nếu một trong số những hệ thống đó sụp đổ, đã có ba hệ thống còn lại tiếp tục hoạt động
Khi bạn đang vào website của eBay và lick vào danh sách tìm kiếm một tấm thảm Ba Tư chẳng hạn, máy tính của bạn sẽ trò chuyện với máy chủ web, sau đó máy chủ web sẽ thông tin lại cho máy chủ ứng dụng để máy chủ ứng dụng lấy dữ liệu từ máy chủ lưu trữ, và bạn có thể tìm thấy giá mới nhất vừa được đưa ra cho món hàng đó là gì, và cuộc đấu giá còn kéo dài trong bao lâu nữa EBay có đối tác địa phương trên rất nhiều nước, giúp cho việc chuyển dữ liệu của eBay diễn ra nhanh chóng và giảm thời gian download Ngoài ra còn có các hệ thống điều hành đặt tại 45 thành phố trên toàn thế giới thường xuyên kiểm tra những vấn đề trong mạng lưới Thiết kế này của eBay giúp hàng triệu người trên thế giới tìm kiếm và mua bán cùng một lúc Còn người dùng thì vẫn cảm thấy như hệ thống này là liền mạch
*Kiến trúc của Amazon
Amazon Web Services là tập hợp các dịch vụ cung cấp cho người lập trình có khả năng truy cập tới hạ tầng kiến trúc tính toán kiểu sẵn sàng-để-sử dụng (ready-to-use) của Amazon Các máy tính có nền tảng vững chắc đã được xây dựng và tinh chế qua nhiều năm của Amazon bây giờ là có thể cho phép bất cứ ai cũng có quyền cập tới Internet Amazon cung cấp một số dịch
vụ Web nhưng trong loạt bài viết này chỉ tập trung vào các dịch vụ khối hợp nhất (building-block) cơ bản, cái mà đáp ứng được một số yêu cầu cốt lõi của hầu hết các hệ thống như: lưu trữ, tính toán, truyền thông điệp và tập dữ liệu
Bạn có thể xây dựng các ứng dụng phức tạp và gồm nhiều phần khác nhau bằng cách sử dụng các chức năng phân tầng với các dịch vụ đáng tin cậy, hiệu quả khối hợp nhất được cung cấp bởi Amazon Các dịch vụ Web mà tồn tại bên trong đám mây phía bên ngoài môi trường của bạn và có khả năng thực hiện là rất cao
Bạn sẽ trả chỉ dựa trên những cái bạn sử dụng mà không cần phải trả trước các chi phí và vốn đầu tư ban đầu Bạn không cần phải mất chi phí cho bảo trì bởi vì phần cứng được duy trì và phục vụ bởi Amazon
Trang 3Cơ sở hạ tầng ảo là cỗ máy san đường khổng lồ trong thế giới chịu chi phối từ web ngày nay Trong một phút, bạn có thể nhanh chóng kết hợp thành một nền tảng hạ tầng mà có thể bạn
sẽ mất hàng tuần để làm việc đó trong một cửa hàng công nghệ thông tin trong thế giới thực Điểm quan trọng là, cơ sở hạ tầng là mềm dẻo và có thể thay đổi lên hay xuống tùy theo nhu cầu Các công ty trên thế giới đang chuẩn bị để sử dụng tính toán mềm dẻo này (xem hộp bên cạnh)
Sự tự do từ sự hạn chế của lượng lớn vốn đầu tư cơ sở hạ tầng và khả năng bảo trì tạo cơ hội lớn hơn cho sự đổi mới Bạn có thể tập trung vào các ý tưởng kinh doanh thay vì quan tâm đến
sự hao mòn của một lượng lớn các máy chủ bạn có, ví dụ bạn lo lắng về khả năng chạy ra ngoài không gian đĩa, v.v Theo ước tính của Amazon, các doanh nghiệp sử dụng hơn 70% thời gian của họ trong việc xây dựng và bảo trì hạ tầng cơ sở, trong khi chỉ sử dụng 30% thời gian
để làm việc với các ý tưởng thực sự để tạo ra sức mạnh của doanh nghiệp Amazon lo lắng về các vấn đề chi tiết cơ bản của phần cứng và hạ tầng cơ sở — và làm thế nào để có được hiệu quả cao — trong khi bạn tập trung vào việc mang các ý tưởng của bạn tới cuộc sống
Các thành phần chính của hạ tầng cơ sở của trang Web này, cái mà cung cấp hầu hết các khối xây dựng cơ bản phổ biến cần thiết cho hầu hết các ứng dụng không tầm thường:
Lưu trữ (Storage)
Mọi người đều cần phải lưu trữ — cho các tệp, các tài liệu, các dữ liệu tải về của người dùng hoặc các bản sao lưu Có thể tiến hành lưu trữ bất kỳ các ứng dụng cần thiết của bạn trong Amazon Simple Storage Service (S3) và nhận được các lợi ích với nó như có khả năng mở rộng, đáng tin cậy và với mức chi phí thấp cho việc lưu trữ
Tính toán (Computing)
Amazon Elastic Compute Cloud (EC2) cung cấp khả năng để mở rộng tài nguyên tính toán của bạn lớn lên hoặc giảm xuống dựa trên nhu cầu và tạo ra khả năng cung cấp dịch vụ mới một cách dễ dàng
Gửi thông điệp (Messaging)
Thực hiện tách riêng các thành phần ứng dụng của bạn bằng cách sử dụng khả năng không giới hạn của việc truyền thông điệp được cung cấp bởi Amazon Simple Queue Service (SQS)
Tập hợp dữ liệu (Datasets)
Amazon SimpleDB (SDB) cung cấp khả năng mở rộng, lập chỉ mục, khả năng lưu trữ mà không cần bảo trì, cùng với việc thực hiện xử lý và truy vấn với tập hợp dữ liệu
…
*Kiến trúc Facebook
Trang 4Về cơ bản Facebook(FB) sử dụng LAMP framework, LAMP là viết tắt của Linux, Apache, MySQL và PHP / Perl Nhưng ở phiên bản sửa đổi, những người phát triển FB đã sửa đổi và nâng cao phần lớn các thành phần của LAMP, đặc biệt là Mysql và PHP bao gồm cả dịch vụ bổ sung để tạo ra FB Các công cụ Web 2.0 như Scribe, Thrift & ODS đã được sử dụng trong việc phát triển FB Một bảng băm bộ nhớ khổng lồ hoặc Memcache cũng giúp tạo ra một FB đáp ứng nhanh hơn Các dịch vụ như newsfeed, Adserver, tìm kiếm, chọn mạng, CSS Parser,
ShareScrapper, mobifone và blogfeed tạo nên kiến trúc FB hoàn chỉnh
Một điểm nổi bật được đề cập trong thiết kế FB là memcache Tại sao lại là memcache? Là bởi nó nhanh hơn và hiệu suất cao hơn, giảm việc tải trên cơ sở dữ liệu, bộ nhớ cache tuần tự hóa cấu trúc dữ liệu PHP FB đã sửa đổi memcache để chạy theo giao thức UDP giảm chi phí quản lý và các kết nối liên tục của giao thức TCP
Một lưu ý quan trọng là dữ liệu có thể được đôi chút chậm trễ trong facebook và không cần phải được chính xác theo thời gian thực, mặc dù FB sẽ cố gắng làm cho phù hợp hơn Dữ liệu cũng được sắp xếp trong layout recentcy cho việc tối ưu Dữ liệu của các cặp khoá-giá trị được phân bố đều trên nhiều DB và sử dụng LB Điều này cho phép FB để mở rộng nhanh chóng và không cần lặp lại Truy vấn trong ứng dụng FB thường là một loại truy vấn đơn giản và họ
không cho phép join, và không cần.
Một điều cần luôn luôn ghi nhớ là FB cũng cho phép những người khác đóng góp và phát triển các ứng dụng của nó Các nhà phát triển có thể viết ứng dụng FB, và sử dụng các phần
mở rộng FBML để dễ dàng giao tiếp và công bố chương trình Tất nhiên một trong những ứng dụng FB của đã phát triển phải được lưu trữ ở đâu đó hơn là các trang web FB Sự linh hoạt này cho phép áp dụng nhanh chóng và sử dụng rộng rãi của FB
Câu 2: Định nghĩa kiến trúc phần mềm Phân biệt kiến trúc logic và vật lý Kiến trúc và biểu đồ triển khai với UML Phần biệt thành phần, kiến trúc, hệ thống con
1 Định nghĩa kiến trúc phần mền
Nhiều nhà nghiên cứu đã giải thích về kiến trúc phần mềm, và họ có các quan điểm khác nhau về
cách trình bày tốt nhất về kiến trúc của hệ thống phần mềm.Không có cách giải thích nào là sai, mỗi kiến trúc có giá trị riêng Định nghĩa củaBass L và cộng sự về kiến trúc giúp chúng ta nắm giữ được
điểm cốt yếu của cái mà kiến trúc phần mềm cần:
“Kiến trúc phần mềm của một chương trình hoặc hệ thống tính toán là cấu trúc hoặc các cấu trúc của hệ thống đó, gồm các thành phần của phần mềm, các thuộc tính có thể trông thấy được từ bên ngoài của các thành phần này, và các mối quan hệ giữa chúng”
Kiến trúc được mô tả trong một số khung nhìn( view) và mỗi khía cạnh tập trung vào một phân riêng trong hệ thống Mô hình tổng thể của hệ thống có thể được tạo lên khi xác định tất cả các khung nhìn Trong UML các khung nhìn được chia thành như sau:
Khung nhìn user-case
o Đây là khung nhìn chỉ ra khía cạnh chức năng của một hệ thống, nhìn từ hướng tác nhân bên ngoài.
Khung nhìnlogic
Trang 5o Chỉ ra chức năng sẽ được thiết kế bên trong hệ thống như thế nào, qua các khái niệm về cấu trúc tĩnh cũng như ứng xử động của hệ thống.
Khung nhìn song song
o Chỉ ra sự tồn tại song song/ trùng hợp trong hệ thống, hướng đến vấn đề giao tiếp và đồng bộ hóa trong hệ thống.
Khung nhìnthành phần
o Chỉ ra khía cạnh tổ chức của các thành phần code.
Khung nhìn phát triển
o Chỉ ra khía cạnh triển khai hệ thống vào các kiến trúc vật lý (các máy tính hay trang thiết bị được coi là trạm công tác)
2 Phân biệt kiến trúc vật lý và logic
2.1 Kiến trúc logic
Kiến trúc logic bao gồm các ứng dụng logic chứ không phải sự phân bố vật lý của logic vào các môi trường khác nhau trên các máy tính khác nhau.
Kiến trúc logic cho một sự hiểu biết rõ ràng về việc xây dựng cáchệ thống làm cho nó dễ dàng hơn
để điều hành và phối hợp công việc (sử dụng nguồn lực phát triển con người là cách hiệu quả nhất có thể) Không phải tất cả các phần của kiến trúc logic cần phải được xây dựng trong dự án, lớp thư viện, thành phần nhị phân, và mẫu thiết kế thường có thể mua.
Kiến trúc logic câu trả lời các câu hỏi như:
- Cấu trúc tổng thể của hệ thống là gì?
- Hệ thống cung cấp những chức năng gì?
- Các lớp chính là những gì và làm thế nào để biết những lớp này liên quan đến một khác?
- Làm thế nào để các lớp và các đối tượng có cộng tác để cung cấp các chức năng?
- Làm thế nào để có cơ chế chung áp dụng thống nhất trên các thiết kế?
- Điều gì sẽ một kế hoạch phù hợp với một số nhà phát triển để làm theo đểphát triển hệ thống này?
Hãy nhớ rằng kiến trúc logic không phải đầy đủ thiết kế logic.Kiến trúc như mô tả trong các sơ đồ tập trung cung cấp vào các câu trả lời cho các câu hỏi đặt ra trong danh sách liệt kê trước đó.Kiến trúc giới thiệu cách tổ chức, khó khăn, và một danh sách các công cụ phổ biến để thiết kế.
2.2 Kiến trúc vật lý
Các yêu cầu đối với kiến trúc vật lý là một mô tả chi tiết về hệ thống trong cách thức các vật phẩm phần mềm được gán cho các nút vật lý.Nócho thấy cấu trúc của phần cứng bao gồm cả các nút khác nhau và làm thế nào nhữngnút được kết nối với nhau.Nó cũng minh họa cấu trúc vật lý và phụ thuộc của các vật phẩm phần mềm để biểu hiện các khái niệm được định nghĩatrong kiến trúc logic và sự phân bố của các phần mềm chạy trong điều kiệntriển khai các đồ tạo tác.Kiến trúc vật lý cố gắng để đạt được một hiệu quảsử dụng tài nguyên của cả phần cứng và phần mềm.
Kiến trúc vật lý câu trả lời các câu hỏi như:
Trang 6- Những máy tính và các thiết bị phần cứng khác trong hệ thống và làm thế nào để kết nối với nhau?
- Các môi trường thực thi là gì trong bộ phận khác nhau của hệ thống chạy?
- Trên những máy tính được các đồ tạo tác thực thi khác nhau được triển khai?
- Sự phụ thuộc giữa các tập tin mã khác nhau là gì? Nếu một tập tin cụ thể được thay đổi, các tập tin khác cần phải được biên dịch lại không?
3 Kiến trúc và biểu đồ triển khai trên UML
Các biểu đồ triển khai mô tả kiến trúc thời gian chạy của các thiết bị, môi trường thực hiện và hiện vật mà vị trí trong kiến trúc này Đây là mô tả vật lý cuối cùng của cấu trúc liên kết hệ thống mô tả cấu trúc củacác đơn vị phần cứng và phần mềm, được thực hiện trên mỗi đơn vị Trong đó mộtkiến trúc, người ta có thể nhìn vào một nút cụ thể trong cấu trúc liên kết, em mà các thành phần được thực hiện trong nút đó và những yếu tố logic(lớp, đối tượng, hợp tác, vv) được thực hiện trong các thành phần,và cuối cùng theo dõi những yếu tố để phân tích yêu cầu ban đầu của hệ thống (có thể đã được thực hiện thông qua phân tích trường hợp sử dụng).
4 Phân biệt kiến trúc, thành phân, hệ thống con
Một hệ thống con là hình dựng công nghệ thông tin hạng nhất là một biểu diễn trực tiếp của các vùng chức năng
Một kệ thống con là một nhóm các thành phần có gắn kết mà có xu hướng thay đổi cho nhau nên các thay đổi có thể được kiểm soát sao cho hiệu quả của chúng được cục bộ hóa trong biên hệ thống con.
Câu 4 Mô hình thành phần: đinh nghĩa và biểu diễn với biểu đồ UML
a) Định nghĩa
Nói 1 cách không chính thức, một thành phần có một bộ sưu tập các tài sản, phương pháp,
và các sự kiện.Mỗi thành phần có một tên, một định danh trình bày các thành phần.Tính tóm lược các trạng thái hoặc các thuộc tính của một thành phần.Mỗi thuộc tính có một kiểu Phương pháp mô tả hành vi và dịch vụ của một thành phần Mỗi phương pháp có một chữ ký:
visibilityaccessreturn_typemethod_name(parameter-list)
Các sự kiện mô tả các hành động trong đó thành phần này có thể bắt đầu.Mỗi sự kiện cũng
có một loại Giao diện, một tập hợp con của tập Cartesian về sức mạnh bộ tài sản, phương pháp, và các sự kiện, xác định những phần thông tin liên lạc của các thành phần
Các biểu đồ thành phần là một đại diện đồ họa của một thành phần phần mềm.Cáchình chữ nhật, hình tròn, và kim cương trên cả hai bên trái và phải đại diện cho tài sản chung, phương pháp, và các sự kiện tương ứng trong giao diện của nó Các yếu tố giao diện hoạt động tương
tự như chân phần cứng xung quanh một con chip mạch tích hợp
Định nghĩa chính thức của thành phần đưa ra ở đây chỉ là một khái niệm trừu tượng của các thành phần phần mềm tái sử dụng.Cơ sở hạ tầng thành phần khác nhau có những định nghĩa oncrete của mình cho các thành phần của chúng.Các đặc điểm kỹ thuật của một thành phần cũng thay đổi trong cơ sở hạ tầng thành phần khác nhau là tốt.Ví dụ, các đặc điểm kỹ thuật của một phương pháp trong một giao diện có thể được sử dụng trước và sau
Trang 7Mô hình thành phần là định nghĩa chuẩn để cài đặt thành phần, tài liệu hướng dẫn và triển khai.Ví dụ về cácmô hình thành phầnlà:mô hìnhEJB(Enterprise Java Beans), COM +mô
hình(mô hình NET.), CORBAComponentModel.Mô hình thành phầnquy định cụ thể các interface nên được định nghĩa như thế nào vàcácthành phầnnênđược đưa vàotrongmộtđịnh nghĩa
interface
b) Biểu diễn bằng UML
Biểu đồ thành phần thể hiện cách tổ chức và sự phụ thuộc giữa các thành phần và artifact Các thành phần đại diện cho các đơn vị được nhóm và đóng gói một cách rõ ràng từ kiến trúc logic Các thành phần thường được cài đặt theo các file trong môi trường phát triển; chúng được mô hình hóa như là các artifact
Một artifact có thể là:
Source artifact: Một artifact nguồn có ý nghĩa tại thời gian biên dịch Nó thường là file code nguồn cài đặt một hoặc nhiều lớp
Executable artifact: Một artifact có thể thực thi là một file chương trình có thể thực thi là kết quả của việc liên kết tất cả các thành phần nhị phân (hoặc tĩnh tại thời điểm liên kết hoặc động trong thời gian chạy) Một thành phần có thể thực thi đại diện cho đơn vị thực thi được điều khiển bởi một bộ xử lý (máy tính)
Profile đặc trưng được dự kiến sẽ mở rộng sự phân nhỏ của các artifact theo những cách phù hợp hơn với công nghệ tương ứng của chúng Ví dụ, một profile EJB có thể định nghĩa <<EJB> như là một subtype của <<executable>>
Một thành phần được thể hiện trong UML là một hình chữ nhật với khuôn mẫu
<<component>> và/hoặc một biểu tượng thành phần đặc biệt trong hình vuông (đây là ký hiệu được dùng trong các phiên bản trước của UML cho các thành phần).Một artifact được thể hiện là một hình chữ nhật với khuôn mẫu <<artifact>> và/hoặc 1 “biểu tượng tập tin” ở góc Nếu áp dụng subtyping theo các artifact, các khuôn mẫu thích hợp (ví dụ <<executable>>) có thể được sử dụng
Một artifact đại diện cho thể hiện vật lý của thành phần (hoặc bất kỳ yếu tố có thể đóng gói nào, chẳng hạn như một lớp đơn giản).Thể hiện này được biểu diễn bằng nét đứt với mũi tên với nhãn <<manifest>>.Một kết nối phụ thuộc cũng có thể được biểu diễn giữa các artifact Biểu diễn bằng nét đứt với mũi tên gán nhãn, phụ thuộc này có nghĩa là một artifact cần
artifact kia có thể có định nghĩa đầy đủ Một phụ thuộc từ code nguồn của artifact A tới artifact
B có nghĩa là một phụ thuộc đặc trưng ngôn ngữ từ A tới B Trong ngôn ngữ biên dịch, nó có thể nghĩa là một sự thay đổi trong B sẽ đòi hỏi việc biên dịch lại của A vì các định nghĩa từ thành phần B được sử dụng khi biên dịch A Nếu các artifact có thể thực thi thì các kết nối phụ thuộc có thể được sử dụng để xác định các thư viện động mà một chương trình thực thi được cần để có thể chạy
Trang 8Câu 5 Pattern là gì? Định nghĩa và phân loại các kiểu pattern
Định nghĩa: Pattern Design patterns là tập các giải pháp cho cho vấn đề phổ biến trong thiết
kế các hệ thống máy tính Đây là tập các giải pháp đã được công nhận là tài liệu có giá trị, những người phát triển có thể áp dụng giải pháp này để giải quyết các vấn đề tương tự Giống như với các yêu cầu của thiết kế và phân tích hướng đối tượng (nhằm đạt được khả năng sử dụng các thành phần và thư viện lớp), việc sử dụng các mẫu cũng cần phải đạt được khả năng tái sử dụng các giải pháp chuẩn đối với vấn đề thường xuyên xảy ra
Phân loại các pattern:
• Nhóm cấu thành (Creational Pattern): Liên quan đến quá trình khởi tạo đối tượng cụ thể từ
một định nghĩa trừu tượng (abstract class, interface)
Abstract Factory Tạo các thể hiện của các họ của lớp
Builder Tách cấu trúc các đối tượng từ đại diện
của chúng
Factory Method Tạo một thể hiện của vài lớp gốc
Prototype Một thể hiện đầy đủ được sao chép hoặc
nhân bản
Singleton Một lớp chỉ có một thể hiện
• Nhóm cấu trúc (Structural Pattern): Liên quan đến vấn đề làm thế nào để các
lớp và đối tượng kết hợp với nhau tạo thành các cấu trúc lớn hơn
Adapter Match interfaces of different classes
Bridge Phân tách interface của một đối tượng từ cài đặt
của nó
Composite Một cấu trúc cây của các đối tượng đơn và kết
hợp
Decorator Tự động thêm trách nhiệm cho đối tượng
Facade Một lớp đơn biểu diễn toàn bộ hệ thống con
Flyweight Một thể hiện đã làm mịn được sử dụng cho việc
chia sẻ hiệu quả
Proxy Một đối tượng biểu diễn một đối tượng khác
• Nhóm tương tác động (Behavioral Pattern): Mô tả cách thức để các lớp hoặc
đối tượng có thể giao tiếp với nhau
Chain of Resp Một cách chuyển yêu cầu giữa một chuỗi đối tượng
Command Đóng gói một yêu cầu command như một đối tượng Interpreter Một cách bao hàm các thành phần ngôn ngữ trong một chương trình
Iterator Tuần tự truy cập các thành phần của một collection Mediator Định nghĩa các giao tiếp cơ bản giữa các lớp
Memento Bắt và phục hồi trạng thái của một đối tượng
Trang 9Observer Một cách cảnh báo thay đổi cho một số lớp
State Thay thể hành vi của một đối tượng khi trạng thái
của nó thay đổi
Strategy Đóng gói một thuật toán bên trong một lớp
Template Method Chuyển các bước phụ của một thuật toán cho hệ thống con
Visitor Định nghĩa một phương thức mới cho một lớp mà
không thay đổi nó
Câu 9 Mô hình thành phần trong NET Thành phần và các kiểu giao tiếp trong NET (Phan biet cac loai file duoi EXE va DLL trong NET) Kiểu event va delegate trong NET Cho ví dụ minh hoa.
Mô hình thành phần trong Net bao gồm 2 thành phần chính là mã thực thi (.exe) và thư viện liên kết động (.dll)
Một thành phần net là thành phần được biên dịch sẵn và được mô tả bời module MSIL được xây dựng từ một hoặc nhiều lớp mô-đun, sau đó được triển khai trong một tập tin DLL
Một tập tin bao gồm 4 phần:
- Manifest: tên, version, thông tin, các tập tin tạo nên tập này, tham chiếu phụ thuộc, thông tin đầu ra
- Siêu dữ liệu của module
- Mã IL của module
- Tài nguyên
Một module có mã MSIL và siêu dữ liệu của nó nhưng không có manifest Module đó không thẻ nạp một cách tự đọng Nó được sử dụng như là một khối để xây dựng tại thời điểm biên dịch
để tạo ra một mo dule tổ hợp Môt tổ hợp được tạo thành từ một hoặc nhiều lớp Mỗi module
có thể được mã hóa bằng các ngôn ngữ khác nhau nhưng chúng cùng chung định dạng MSIL Một tôt hợp có phần tệp tin mở rộng dll hoặc exe sẽ được nạp tự động
Một file dll sẽ không được thực thi, chúng chỉ là một lớp tập tin chứa các mã, byte code được
sử dụng khi cần
Một thành phần net có thể chứa các file dll cục bộ mà chỉ có thể được truy cập trong cùng miền ứng dụng tại máy cục bộ hoặc được gọi từ xa thông qua thành phần exe trong cùng một máy hoặc giữa các máy khác nhau Một thành phần không thể trực tiếp truy cập vào thành phần trong ứng dụng hoặc tiến trình khác bởi mỗi miền ứng dụng có không gian bộ nhớ riêng của mình
Kiểu giao tiếp event và delegate trong net
Delegate (ủy quyền)
Trang 10.Net Delegate một phương thức mà là chức năng của nó tương tự như con trỏ trong C + +, nhưng nó an toàn và đảm bảo Delegate sẽ đại diện một dòng điều khiển để xử lý đăng ký sự kiện khi các sự kiện được diễn ra Nó hoạt động như mô hình quan sát, giống như chức năng bắt sự kiện trong Java Một Delegate có thể lưu giữ phương thức tĩnh của một lớp, hay một thành phần, hoặc một phương pháp của đối tượng chính nó Có hai loại delegate : SingleCast
và multicast
Theo như định nghĩa được đưa ra trên MSDN thì delegate là một kiểu chứa tham chiếu đến một hoặc nhiều phương thức (method), có thể là phương thức của lớp (class’s method) hoặc là phương thức của đối tượng (object’s method) Đối với những ai đã làm việc với ngôn ngữ C
hoặc C++ thì có thể thấy delegate gần giống với khái niệm Con trỏ hàm (funtion’s pointer).
Tuy nhiên, hiện nay trong nhiều tài liệu vẫn hay dùng chung từ delegate để chỉ đến hai khái
niệm khác nhau, gây ra sự mập mờ, đó là Kiểu delegate(delegate type) và Thực thể
delegate (delegate instance, hay còn có thể gọi là Đối tượng delegate); Một kiểu delegate
được khai báo bằng cách sử dụng từ khóa delegate đi kèm theo với kiểu dữ liệu trả về, tên và
danh sách tham số của nó Để một delegate có thể chứa tham chiếu đến một phương thức khác (hoặc đôi khi ta có thể nói là: delegate đại diện cho một phương thức) thì cả delegate và phương thức mà nó tham chiếu đến phải có cùng nguyên mẫu (signature), có nghĩa là cả hai đều phải có chung kiểu dữ liệu trả về và danh sách tham số
namespace Test
{
public delegate int Calculation(int a, int b);
class Program
{
staticint Add(int a, int b){
return a + b;
}
staticvoid Main(string[] args)
{
Calculation ca = newCalculation(Add);
int c = ca(5, 4);
Console.WriteLine(“c = {0}”, c);
Console.ReadLine();
}
}
}
2 Event (sự kiện)