TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH

11 523 0
TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

: TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH 3.1. Tổng quan về Microsoft .NET Trong thế giới điện toán, những cải tiến và thay đổi vẫn thường xuyên xảy ra. Đây là những biến đổi tất yếu và có tác động thúc đẩy sự phát triển. một thách thức đối với bất kì nhà lập trình nào hay những công việc truyền thông về Công Nghệ Thông Tin nào là theo kịp những biến đổi liên tục và những sự phát triển công nghệ. Như một nhà quản lí doanh nghiệp hay người đưa ra các quyết định, sự am hiểu về công nghệ và tác động của nó đối với công việc kinh doanh nhiều lúc là cho bạn cảm thấy nản lòng. Tuy nhiên, những thay đổi thường xuyên nhất trong công nghệ luôn đem lại cho bạn thành quả tốt nhất. Ngày nay, do Công Nghệ Thông Tin liên tục phát triển, cho nên những nền tảng của công nghệ đó có thể thay đổi để điều tiết những sự phát triển mới và những nhu cầu mới trên thị trường. Thậm trí một vài năm trở lại đây, chỉ có một số ít người biết đến Internet. Ngày nay, Internet đã thâm nhập hầu như mọi nơi mọi chỗ trong cuộc sống của chúng ta. Sự khởi xướng của ý tưởng .NET là một bước đột phá mới của Microsoft. Nó bao hàm nhiều quan niệm hiện hữu và những triết lý. Microsoft đưa ra công nghệ mà nó cho phép ý tưởng .NET trở thành hiện thực. 3.1.1. Định nghĩa .NET Để bắt đầu công việc khảo sát .NET, chúng ta phải xác định rõ ranh giới công việc cần thực hiện. vì .NET có nghĩa một nền tảng hơn là một sản phẩm đơn lẻ, cho nên cách định nghĩa nó có thể đa dạng, có phần hơi khó hiểu và mơ hồ. một cách đơn giản .NET được định nghĩa dưới dạng một khung ứng dụng (application framework). .NET cung cấp một khung cho những ứng dụng nào được xây dựng, nó xác định những ứng dụng truy nhập các hàm như thế nào qua các hệ thống và các mạng. .NET cung cấp một nền tảng mà trên đó các giải pháp và dịch vụ Web có thể được xây dựng, một nền tảng giải phóng những sự ràng buộc và tự bản thân nó giải phóng khỏi Microsoft Windows (về mặt kĩ thuật). .NET là một cách xây dựng các ứng dụng và các dịch vụ mà nó hoạt động không phụ thuộc vào một nền tảng (platform) nào. Đây là một cách để tạo ra các trao đổi thông tin (truyền thông) giữa những hệ thống đa dạng và các ứng dụng cũng như tích hợp nhiều thiết bị vào trong vệc trao đổi thông tin này. Ý tưởng .NET được thiết kế để hỗ trợ chúng ta tiến tới một Web thân thiện hơn, tích hợp tốt hơn, một nơi mà ở đó các ứng dụng và các quá trình giao dịch có thể tương tác với nhau một cách tự do không phụ thuộc vào chương trình và nền tảng. Tóm lại, .NET làm cho thông tin trên Web có thể được tiếp cận một cách dễ dàng: bạn có thể sử dụng bất kì nền tảng nào. .NET còn có thể hỗ trợ các hệ thống máy phục vụ và ứng dụng liên lạc với nhau một cách thông suốt và xây dựng hệ thống tính toán phân tán trên Web, làm cho Web trở thành một nơi tương tác năng động hơn giữa các dịch vụ Web, các ứng dụng và khách hàng. 3.1.2. Tác động của .NET đối với chuyên gia CNTT Những nhà phát triển cảm thấy có một tác động mạnh mẽ từ ý tưởng .NET. Để hiểu tác động này, đầu tiên chúng ta phải biết công việc phát triển ứng dụng đã thay đổi như thế nào. Trước đây các nhà phát triển xây dựng ứng dụng trên các dịch vụ hệ thống cục bộ. Một ứng dụng riêng biệt được xây dựng để chạy trên các dịch vụ được cung cấp bởi một hệ điều hành riêng biệt. Trong hệ thống này những nhà phát triển đã có kiểm soát một cách cụ thể ứng dụng hoạt động như thế nào trên nền tảng đó. Những ứng dụng cho những nền tảng riêng biệt thì không liên lạc(truyền thông tốt) tốt được với nhau. Giai đoạn thứ hai của sự thay đổi xuất hiện có nghĩa các nhà phát triển phải chuyển sang một mức độ khác, gọi là mức thứ n (n-tier). Điều đó cho phép các nhà phát triển tạo ra các ứng dụng mà nó hoạt động trên một mức mạng. Nói cách khác, sự phát triển xuất hiện liên tục từ các dịch vụ hệ thống cục bộ cho đến các dịch vụ mạng toàn cầu. Sự phát triển này đã tạo ra khả năng phát triển các phần mềm doanh nghiệp mà thực chất tập chung hơn vào công việc kinh doanh mà nó tạo ra năng suất làm việc cao hơn. Chúng ta hiện đang ở vào giai đoạn tiếp theo của công cuộc thay đổi thông qua XML và SOAP, dich vụ Web. Dịch vụ Web cho phép các ứng dụng tương tác với nhau thông qua Internet và cung cấp các dịch vụ tới người dùng hay các ứng dụng khác. Đây là một sự thay đổi cơ bản theo cách các ứng dụng đã được mô tả trước đây khi mà chúng ta nghĩ về những ứng dụng như một sản phẩm. một dịch vụ Web hoàn tất nột vài kiểu giao dịch và trao đổi thông tin. Khi xây dựng trên XML, các dịch vụ Web có thể sử dụng bởi bất kỳ người nào với bất lỳ thiết bị đơn lẻ nào tại bất kỳ thời điểm đã cho nào. Đặc tính này cho phép bất cứ số lượng tiến trình chuyên biệt nào xuất hiện liên tục trên Internet không có sự can thiệp của người dùng. Quy trình dịch vụ Web được hoàn thành bởi việc sử dụng cả hai đặc tính chương trình ghép nối lỏng và ghép nối chặt. Qui trình nghiệp vụ của việc tính toán n-tier (ghép nối chặt) được kết hợp với các chuẩn truyền thông điệp ghép nối lỏng và các phương pháp truy nhập dữ liệu trên Internet. Do ý tưởng .NET được tìm thấy trên cơ sở của XML và khái niệm dịch vụ Web, các nhà phát triển có một cách mới để tạo ra các ứng dụng mà nó hoạt động và tích hợp dễ dàng hơn. Sự thách thức của các nhà phát triển là tích hợp nhứng khái niệm đó với cái mà nền tảng .NET được xây dựng trên nó. 3.1.2. Tác động của .NET đối với con người. Nền tảng .NET có thể có tác động sâu sắc đến kinh nghiệm người dùng (theo hướng tích cực). Trước khi khảo sát khả nǎng này, chúng ta hãy xem xét mô hình tính toán hiện thời. Hiện tại, việc tính toán người dùng chủ yếu là nằm ở phần cứng và hệ điều hành. Những người dùng sở hữu những thiết bị phần cứng như PC, laptop hay PDA và họ cài đặt phần mềm và cấu hình các hệ thống đó. Dữ liệu chủ yếu được quản lý và thao tác (và cả dữ liệu đã mất) cũng trên các hệ thống đó. Do sự tǎng trưởng của công nghệ, số lượng PC tại gia và vǎn phòng ngày càng tǎng lên nhanh chóng. Có ai đã từng nghĩ rằng một người dùng có thể cần đến 13 Gbyte ổ cứng? Mô hình tính toán hiện thời gây ra nhiều vấn đề do số lượng người sử dụng máy tính của họ ngày càng nhiều. Người dùng phải chú ý đến dữ liệu và thiết bị của chính họ và Internet được coi không gì hơn là một thứ đồ chơi tô vẽ. 3.1.3. Cơ sở hạ tầng .NET. Việc tạo nên một khung (framework) mà những hàm theo cách được mô tả trong mục này chắc chắn không phải là một nhiệm vụ dễ dàng. Để nó có thể làm việc được, chiến lược .NET phải cung cấp một cơ sở hạ tầng mà trên đó các dịch vụ web có thể được xây dựng. May thay, .NET đã cung cấp cơ sở hạ tầng này để giải phóng các nhà lập trình tập trung hơn vào việc xử lí các tác vụ kinh doanh hơn là chú trọng đến việc lập trình bản thân nó. Tại mức cơ sở hạ tầng .NET xem những thành phần chương trình như những dich vụ web, nó lấy ra những đặc tính tốt nhất của COM của Microsoft và trộn lẫn chúng với ý tưởng truyền thông điệp ghép nối lỏng. Do những đặc tính này mà cơ sở hạ tầng tồn tại cho người lập trình và như vậy họ có thể tập trung vào công việc xử lý các tác vụ kinh doanh cần sự phát triển mà không cấn phải tao ra các thành phần riêng biệt hoạt động với nhau. Cơ sở hạ tầng .NET tạo ra framework trên đó các dịch vụ web được xây dựng. Ba thành phần cho .NET framework là. 3.1.4.1 Thực thi ngôn ngữ chung CLR(Common Language Runtime) Tất cả các ngôn ngữ lập trình đều có một runtime(thi hành), một dịch vụ hoạt động cùng với ngôn ngữ lập trình. Common Language Runtime là một thành phần cốt lõi(cơ bản nhất) của .NET. Nó cung cấp nền cơ sở mà trên đó các ứng dụng cho .NET được xây dựng. CLR quản lí nhiều khía cạnh của chu trình phát triển. Chẳng hạn, khi làm việc với COM, các nhà phát triển phải lưu tâm đến vấn đề quản lí bộ nhớ, những sự khởi tạo luồng và loại bỏ nó, các thành phần bảo mật và những vấn đề tương tự. Điều đó gây ra một số khó khăn do các nhà phát triển phải tiêu tốn quá nhiều thời gian vào các vấn đề nảy sinh đó một cách tự động và giải phóng cho các nhà phát triển tập trung vào việc xử lý giao dịch logic. CLR cung cấp một runtime chung mà nó được sử dụng với tất cả các ngôn ngữ. Thành phần này làm cho .NET có một khả năng “hỗ trợ mọi ngôn ngữ”. 3.1.4.2. Các thành phần hợp nhất(Unified Programming Classes). Những thư viện lớp lập trình hay các giao diện lập trình ứng dụng (API) được sử dụng bởi nhiều ngôn ngữ khác nhau. Để sử dụng những ngôn ngữ lập trình khác nhau, các nhà phát triển nghiên cứu các bộ thư viện lớp khác nhau để lamg việc với các ngôn ngữ lập trình khác nhau. Vấn đề này đã làm chậm quá trình phát triển ứng dụng và làm cho công việc phát triển trở nên tẻ ngắt và lãng phí nhiều thời gian. .NET cung cấp các lớp lập trinhg hợp nhất với một bộ API dùng chung cho mọi ngôn ngữ lập trình. Các ngôn ngữ có thể tương tác với một ngôn ngữ khác và các lớp lập trình hợp nhất này cho phép các nhà phát triển lựa chọn bất cứ ngôn ngữ nào mà họ muốn trong khi chỉ cần duy nhất một bộ API mà thôi. 3.2. Các công cụ phát triển. .NET Framework và Visual Studio .NET là các công cụ cho những người phát triển để tạo ra các dịch vụ Web XML. .NET Framework là một tập hợp những giao diện lập trình và là tâm điểm của nền tảng .NET của Microsoft. Nó cung cấp cơ sở hạ tầng để xây dựng và chạy các dịch vụ Web. 3.2.1. Visual Studio .NET. Visual Studio .Net cung cấp một môi trường phát triển mức cao để xây dựng các ứng dụng trên .NET framework. Với bộ Visual Studio .NET chúng ta có thể đơn giản hóa việc tạo, triển khai và tiếp tục phát triển các ứng dụng Web và các dịch vụ Web có sẵn một cách an toàn, bảo mật và khả năng biến đổi được. Visual Studio .NET là một bộ đa ngôn ngữ các công cụ lập trình. Ngoài C#(Visual C#.NET), Visual Studio .NET còn hỗ trợ Visual Basic, Visual C++, Visual J#.NET và các ngôn ngữ script như VBScript và Jscript. Tất cả các ngôn ngữ này đều cho phép truy cập vào .NET Framework.  Visual C#.NET là một ngôn ngữ lập trình đơn giản, hiện đại, hướng đối tượng an toàn kiểu (type-safe) và có nguồn gốc từ các ngôn ngữ C và C++. C# là một ngôn ngữ rất thân thiện với người lập trình C và C++. C# là kết quả của việc kết hợp hiệu năng cao của Visual Basic và sức mạnh của C++. C# được Microsoft giới thiệu để xây dựng Web và đòi hỏi quyền được cung cấp một môi trường đồng bộ với HTML, XML và SOAP. Tóm lại C# là một ngôn ngữ lập trình hiện đại và là một môi trường phát triển đầy tiềm năng để tạo ra các dịch vụ Web XML, các ứng dụng dựa trên Microsoft .NET và cho cả nền tảng Microsoft Windows cũng như tạo ra các ứng dụng Internet thế hệ kế tiếp một cách nhanh chóng và hiệu quả.  Visual Basic .NET (VB.NET) cho phép bạn tạo ra những ứng dụng đầy sức mạnh cho nền tảng Microsoft Windows với thời gian ngắn nhất, kết hợp chặt chẽ việc truy cập cơ sở dữ liệu từ một phạm vi rộng của các kịch bản dữ liệu, tạo ra những thành phần với mã nhỏ nhất và xây dựng các ứng dụng trên cơ sở Web khi sử dụng những kỹ năng hiện tại.VB.NET có nhiều đặc tính ngôn ngữ mới và được cải tiến như sự kế thừa, giao diện và overloading và là cho nó trở thành một ngôn ngữ lập trình hướng đối tượng đầy tiềm năng. Ngoài ra, những người phát triển Visual Basic bây giờ có thể tạo đa luồng(multithreaded). Các nhà phát triển cũng sẽ tìm thấy nhiều đặc tính mới và được cải tiến, ví dụ như các giao diện, những thành viên dùng chung, các constructor cùng với một số kiểu dữ liệu mới, xử lý ngoại lệ có cấu trúc và ủy quyền.  Visual C++.Net là phiên bản kế tiếp của Microsoft Visual C++ 6.0. như chúng ta thấy Microsoft Visual C++ là công cụ C++ hiệu quả nhất để tạo ra những ứng dụng hiệu năng cao cho Windows và cho Wold Wide Web. Hầu như tất cả các phần mềm tốt nhất từ những trình duyệt web đầu bảng cho đến các ứng dụng đều được xây dựng bằng hệ thống phát triển Microsoft Visual C++. Visual C++.NET mang đến một cấp độ mới về hiệu năng so với Visual C++ mà không làm ảnh hưởng đến tính mềm dẻo, hiêuj suất thực hiện cũng như điều khiển.  Visual J#.Net là một công cụ phát triển cho các nhà phát triển ngôn ngữ Java để xây dựng các ứng dụng và các dịch vụ trên nền Microsoft .NET Framework. Visual J#.NET cho phép những người phát triển ngôn ngữ Java có thể chuyển tiếp vào thế giới của các dịch vụ Web XML và cải thiện đáng kể khả năng vận hành của các chương trình viết bằng ngôn ngữ Java với những phần mềm hiện tại được viết bằng nhiều ngôn ngữ lập trình khác nhau. Việc tích hợp dễ dàng, khả năng thao tác vận hành với nhau và sự chuyển giao các kỹ năng hiện tai và những đầu tư mà Visual J#.Net cho phép có thể tạo ra một cơ hội lớn cho khách hàng muốn phát triển các ứng dụng và cthu coi naoác dịch vụ Web XML với ngôn ngữ Java trên nền .NET Framework.  Jscript .NET là bộ thực hiện của Microsoft cho JavaScript. Jscript.NET thêm rất nhiều đặc tính mới và Jscript, bào gồm cả việc hỗ trợ trực tiếp các ký thuật lập trình hướng đối tượng. 3.2.2. Giới thiệu về Visual Basic .NET. Visual Basic.NET (VB.NET) là ngôn ngữ lập trình khuynh hướng đối tượng(Object Oriented Programming Language) do Microsoft thiết kế lại từ con số không. Visual Basic.NET(VB.NET) không kế thừa VB6 hay bổ sung, phát triển từ VB6 mà là một ngôn ngữ lập trình hoàn toàn mới trên nền Microsoft’s.NET Framework. Do đó, nó cũng không phải là VB phiên bản 7. Thật sự, đây là ngôn ngữ lập trình mới và rất lợi hại, không những lập nền tảng vững chắc theo kiểu mẫu đối tượng như các ngôn ngữ lập trình hùng mạnh khác đã vang danh C++, Java mà còn dễ học, dễ phát triển và còn tạo mọi cơ hội hoàn hảo để giúp ta giải đáp những vấn đề khúc mắc khi lập trình. Hơn nữa, dù không khó khăn gì khi cần tham khảo,học hỏi hay đào sâu những gì xảy ra bên trong hậu trường OS, Visual Basic .NET(VB.NET) giúp ta đối phó với các phức tạp khi lập trình trên nền Windows và do đó, ta chỉ tập trung công sức vào các vấn đề liên quan đến dự án, công việc hay doanh nghiệp mà thôi. Nếu ta để ý tên của Visual Basic.NET(VB.NET), ta thấy ngay ngôn ngữ lập trình này chuyên trị tạo ứng dụng (application) dùng trong mạng, liên mạng hay trong Internet. Một số ưu điểm nổi bật của VB.NET so với VB6:  Namespaces Namespaces là một cách đặt tên để giúp sắp đặt các Classes ta dùng trong program một cách thứ tự hầu dễ tìm kiếm chúng. Tất cả code trong .NET, viết bằng VB.NET, C# hay ngôn ngữ nào khác, đều được chứa trong một Namespaces. Điểm này cũng áp dụng cho code trong .NET system class libraries. Chẳng hạn các classes của winforms đều nằm trong System.Windowns.Form namespace. Và các classes dùng cho collection như Quêu, Stack, …. Đều nằm trong System.Collections, namespace. Tất cả code ta viết trong program của mình cũng đều nằm trong các namespaces.  Thay đổi trong Data Types. Một thay đổi lớn cho Data Types của VB.NET là những variables dùng Data Type địa phương như Interger, Single, Boolean…. Đều là những Objects. Chúng đều được derived (xuất phát) từ class căn bản nhất tên Object trong VB.NET. 3.2.3. Server Infrastructure(Cơ sở hạ tầng HĐH máy phục vụ) Cơ sở hạ tầng HĐH máy phục vụ cho .NET bao gồm Window và các .NET Enterprise Server. Đây là một bộ các ứng dụng cơ sở hạ tầng cho xây dựng, triển khai và điều hành các dịch vụ Web XML. Các công nghệ then chốt bao gồm cả việc hỗ trợ XML và những quy trình nghiệp vụ thông qua các ứng dụng và dịch vụ. Các .NET Enterprise Server(hệ điều hành máy chủ phục vụ xí nghiệp) cung cấp khả năng biến đổi, tính tin cậy, quản lý và tích hợp bên trong và nhiều đặc tính khác nữa như được mô tả dưới đây:  Microsoft SQL Server 2000 bao gồm chức năng XML, hỗ trợ các chuẩn của World Wide Web Consortium, khả năng thao tác dữ liệu XML khi sử dụng Transact SQL(T- SQL), sự phân tích trên nền Web một cách linh hoạt, mạnh và truy cập an toàn dữ liệu của bạn bằng Web có sử dụng HTTP.  Microsoft BizTalk Server 2000 cung cấp việc tích hợp 0các ứng dụng xí ngiệp(Enterprise Application Integration-EAI),hợp nhất doanh nghiệp B2B và công nghệ BizTalk Orchestration tiên tiến để xây dựng và quản lý các qui trình nghiệp vụ thông qua các ứng dụng và dịch vụ.  Microsoft Host Integration Server 2000 cung cấp biện pháp tốt nhất để quản trị Internet, Intranet và các công nghệ khách/chủ(client/server) trong khi giữ gìn(bảo toàn) những đầu tư cho các hệ thống tồn tại ban đầu.  Microsoft Exchange 2000 Enterprise Server xây dựng trên công nghệ cộng tác và trao đổi thông điệp bằng việc giới thiệu một số đặc tính mới quan trọng và xa hơn nữa là tăng thêm độ tin cậy, khả năng tích hợp Exchange 2000 với Microsoft Windows 2000, Microsoft Office 2000 và Internet.  Microsoft Application Center 2000 cho phép tạo ra các giải pháp và cung cấp một sự triển khai và công cụ quản lý cho các ứng dụng Web có tính sẵn sàng cao.  Microsoft Internet Security và Acceleration Server 2000 cung cấo việc kết nối Internet bảo mật, nhanh và khả năng quản lý. An ninh trên Internet và máy phục vụ gia tốc tích hợp một tường lửa xí nghiệp nhiều lớp, có thể mở rộng và một bộ đệm Web hiệu suất cao và có khả năng biến đổi được. Nó xây dựng trên sự bảo mật và thư mục của Windows 2000 cho an ninh trên nền chính sách, gia tốc và quản lý trên mạng.  Microsoft Commerce Server 2000 cung cấp một khung ứng dụng (application framework), các cơ chế phản hồi tinh vi và những khả năng phân tích.  Mobile Information Server 2001 cho phép sử dụng các ứng dụng thông qua các thiết bị mobile như là cell-phne chẳng hạn. 3.3. SQL Server 2000. SQL Server 2000 là một hệ thống quản lý cơ sở dữ liệu(Relational Database Management System (RDBMS)) sử dụng Transact_SQL để trao đổi dữ liệu giữa Client computer và SQL Server computer. Một RDBMS bao gồm databases, databáe engine và các ứng dụng dùng quản lý dữ liệu và các bộ phận khác nhau trong RDBMS. SQL Server 2000 được tối ưu để có thể chạy trên môi trường cơ sở dữ liệu rất lớn(Very Large Database Environment) lên đến Tera-Byte và có thể phục vụ cùng lúc cho hàng ngàn user. SQL Server 2000 có thể kết hợp “ăn ý” với các server khác như Microsoft Internet Information Server (IIS), E-Commerce Server, Proxy Server… SQL Server có 7 editions: 3.3.1. Các edition.  Enterprise: chứa đầy đủ các đặc trưng của SQL Server và có thể chạy tốt trên hệ thống lên đến 32 CPUs và 64 GB RAM. Thêm vào đó nó có các dịch vụ giúp cho việc phân tích dữ liệu rất hiệu quả(Analysis Services).  Standard: Rất thích hợp cho các công ty vừa và nhỏ vì giá thành rẻ hơn nhiều so với Enterprise Edition, nhưng nó lại bị giới hạn một số chức năng cao cấp khác, edition này có thể chạy tốt trên hệ thống lên đến 4 CPU và 2 GB RAM.  Personal: Được tối ưu hóa để chạy trên PC nên có thể cài đặt trên hầu hết các phiên bản windows kể cả window 98.  Developer: Có đầy đủ các tính năng của Enterprise Edition nhưng được chế tạo đặc biệt như giới hạn số lượng người kết nối vào Server cùng một lúc….  Deskop Engine(MSDE): Đây chỉ là một engine chạy trên desktop và không có user interface(giao diện). Thích hợp cho việc triển khai ứng dụng ở máy client. Kích thước database bị giới hạn khoảng 2 GB.  Win CE: Dùng cho các ứng dụng chạy trên Windowns CE  Trial: Có các tính năng của Enterprise Edition, download free, nhưng giới hạn thời gian sử dụng. 3.3.2. Các thành phần quan trọng trong SQL Server 2000. SQL Server 2000 được cấu tạo bởi nhiều thành phần như Relational Database Engine, Analysis Server và English Query…. Các thành phần này khi phối hợp với nhau tạo thành một giải pháp hoàn chỉnh giúp cho việc lưu trữ và phân tích dữ liệu một cách dễ dàng.  Relational Database Engine- Cái lõi của SQL Server: . các lớp lập trinhg hợp nhất với một bộ API dùng chung cho mọi ngôn ngữ lập trình. Các ngôn ngữ có thể tương tác với một ngôn ngữ khác và các lớp lập trình. thi ngôn ngữ chung CLR(Common Language Runtime) Tất cả các ngôn ngữ lập trình đều có một runtime(thi hành), một dịch vụ hoạt động cùng với ngôn ngữ lập trình.

Ngày đăng: 30/10/2013, 13:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan