Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 16 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
16
Dung lượng
160,6 KB
Nội dung
!"# $!%&'$ ( )*+, /0 1 23 456$! ""7!89":');:"<=>? 5$$( /@0 A B$&'C!D"$"E$F !$'C @ >#G) 4":'-H"<:');=>?/I0 J 5K! L23 4"6!M:'K/N0 I O+(5KG2 4>#CP :');=>?8 4+, Q"R "<- S" T U K $+G:');- N -M V1WW/X+++++ Y-"0"8 4+, B )ZQ"R "<-S" [ ># \W":' X \W/5!]!-'W^W "_?? \W09:'""-! \WQ"R /[0 ` a+#\W"V1WW/0 Câu 1: !"#$%&'#()%*# !"))+%)),-! ./0 1#!"#$ ( 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. 1 Hì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. 1 2 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. Cơ 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. … . *# !2))+ A 3 Về 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 @ 4 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: 34,45#+ 647'8'94:2;+ -), <=<>-?9 <=2@0AB@+4#<CDE9 472;4=4647%+ %4;4F, )9 Đị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 o 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). 1 Phân biệt kiến trúc vật lý và logic 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ó J 5 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ế. 11 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ư: - 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? A 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). @ 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 I 6 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 #G34,45# 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. Mô 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 T 7 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. Câu 5. #H!-=,IJ34,45#<=64:-)K L +@06#H!9 Đị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ử N 8 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 Observer 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 [ 9 Một tập tin bao gồm 4 phần: Y 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. Y Siêu dữ liệu của module Y Mã IL của module Y 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) .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 ` 1 0 [...]... thành phần phần mềm gửi tin nhắn với nhau và phản ứng với những thông điệp mà họ nhận được Mỗi xử lý tin nhắn chỉ đơn thuần là để thực hiện xử lý riêng của địa phương Nó trở nên rất dễ dàng để đơn vị kiểm tra thành phần riêng lẻ của hệ thống trong sự cô lập, trong khi hội nhập của tất cả các thành phần thường không có liên quan đến bản thân quá mức với sự phụ thuộc giữa chúng Kiến trúc phần mềm khuyến... LTV phải code Persistents: Kết nối Connector Không có chuẩn kết nối nào Kiến trúc kết nối cho phép chuyển đổi, kết nối tới các ứng dụng và đây là cách để yêu cầu kết nối chuẩn trong J2EE Giao dịch Interoperate with COM+ services Java Transaction Service JTA Hỗ trợ khả năng tương tác giữa các đối tượng giao dịch được tạo ra thông qua COM+ Thực hiện việc quản lý các giao dịch Là phần trung gian quản lý... nghiệp Câu *: Nguyên Lý hollywood Nguyên tắc Hollywood là một thiết kế phần mềm phương pháp lấy tên từ các phản ứng sáo rỗng cho nghiệp dư thử giọng ở Hollywood: "Đừng gọi cho chúng tôi, chúng tôi sẽ gọi cho bạn" Đây là một mô hình hữu ích hỗ trợ trong việc phát triển mã với sự gắn kết cao và khớp nối thấp là dễ dàng hơn để gỡ lỗi , duy trì và kiểm tra Hầu hết người mới bắt đầu được giới thiệu lần đầu... hệ thống yêu cầu một phần của một cửa sổ được vẽ lại Hệ thống sẽ cung cấp thông tin ngữ cảnh phù hợp để xử lý có thể thực hiện các nhiệm vụ và trở về Chương trình của người sử dụng không còn bao gồm một con đường rõ ràng kiểm soát , ngoài việc khởi tạo và đăng ký Tổ chức sự kiện vòng lặp lập trình, tuy nhiên, chỉ là sự khởi đầu của phát triển phần mềm theo nguyên tắc Hollywood Đề án nâng cao hơn như... XML System XML JAXP Máy chủ Web HTTP IIS Từ nhiều nhà cung cấp khác nhau Quản lý các thành phần Ko có khái niệm EJB Một số chức năng phai tự code Các thành phần EJB chạy trong các container kể cả client và server Container cung cấp cho EJB các dịch vụ như bảo mật, các giao dịch giữa các thành phần, kết nối CSDL và quản lý vòng đời Mỗi container sẽ duy trì một thể hiện của EJB đã sẵn sang cung cấp cho... thể tập trung vào ứng dụng (trong trường hợp này, cập nhật các tọa độ của hộp) và để lại các phần phổ biến cho mọi ứng dụng để "cái gì khác" 14 1 4 Chìa khóa để làm cho điều này có thể là hy sinh các yếu tố kiểm soát Thay vào đó chương trình của bạn chạy hệ thống, hệ thống chạy chương trình của bạn Trong ví dụ của chúng tôi, chương trình của chúng tôi có thể đăng ký cho sự kiện hẹn giờ , và viết một... lập trình từ một quan điểm hoàn toàn trái ngược Các chương trình như Hello World kiểm soát của môi trường hoạt động và thực hiện cuộc gọi vào hệ thống cơ bản để làm công việc của họ Một số lượng đáng kể các phần mềm thành công đã được phát triển bằng cách sử dụng cùng một nguyên tắc, và trên thực tế nhiều nhà phát triển cần không bao giờ nghĩ rằng có bất kỳ phương pháp tiếp cận khác Sau khi tất cả,... đến một điểm Bạn có thể giữ mã di chuyển và vẽ thủ tục riêng biệt, nhưng sớm logic bắt đầu chi nhánh Điều gì sẽ xảy ra nếu người dùng thay đổi kích thước cửa sổ? Hoặc nếu hình vuông là một phần tắt màn hình? Có phải tất cả những cuộc gọi hệ thống để có được các nguồn tài nguyên như bối cảnh thiết bị và tương tác với giao diện người dùng đồ họa thực sự là một phần của giải pháp tên miền? Nó sẽ là thanh... các ứng dụng, module có thể tạo, gửi, nhận và đọc các thông điệp trong môi trường phân tán Lời gọi đồng bộ COM+ QC EJB Message Bean 12 1 2 hóa Khi một message gọi tới, LTV phải viết mã nguồn để nó được chọn lọc qua một hàng đợi, khám phá message và sau đó mới thực hiện Khi 1 message gọi tới hàng đợi J2EE tạo một Message Drive Bean và gọi message Việc khám phá và phản hồi message được tự động thực hiện... phá và phản hồi message được tự động thực hiện Triệu gọi từ xa SOAP, HTTP, DCOM RMI, IIOP Naming ADSI JNDI Java Naming and Directory Interface: Cho phép các thành phần ứng dụng và client có thể tìm kiếm các tài nguyên, dịch vụ, và các thành phần EJB trong môi trường phân tán Không có khả năng tự động nhận biết tài nguyên trên mạng Muốn xác định 1 đối tượng LTV phải làm với nhiều cách khác nhau, khi vị . 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,. 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. đượ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