Chuyên đề Nghiên cứu ngôn ngữ lập trình ASP.NET

doc 40 trang hapham 1300
Bạn đang xem 20 trang mẫu của tài liệu "Chuyên đề Nghiên cứu ngôn ngữ lập trình ASP.NET", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • docchuyen_de_nghien_cuu_ngon_ngu_lap_trinh_asp_net.doc

Nội dung text: Chuyên đề Nghiên cứu ngôn ngữ lập trình ASP.NET

  1. ASP.NET 1.1.1.1.1.1.1.1 CHUYÊN ĐỀ: NGHIÊN CỨU NGÔN NGỮ LẬP TRÌNH ASP.NET Lý Bình Nguyên 1 8/6/2007
  2. ASP.NET Mục lục Nội dung Trang I. Giới thiệu sơ qua về .NET 3 I.1 Nguồn gốc của .NET 3 I.2.Định nghĩa .NET 3 I.3.Mục tiêu của .NET 4 I.4 .Các dịch vụ của.NET 5 I.5.Tác động của .NET đến người làm CNTT 7 I.6.Tác động của .NET đến người dùng 8 I.7. Cơ sở hạ tầng của .NET 9 II.Nghiên cứu về ASP.NET 10 II.1.Giới thiệu chung về ASP.NET 10 II.2.Ứng dụng của ASP.NET 16 A.Khái quát. 16 B.Tập tin Global.asax. 16 C.Làm việc với thực thể HttpApplication 17 D. Lập trình lại (Overriding) phương thức Init và Dispose. 17 E. Sử dụng các Module trong tập tin Global.asax. 19 II.3.Cấu hình ASP.NET 20 A .Khái quát 20 B. Định dạng của tập tin cấu hình trong ASP.NET. 22 II.4.Truy cập dữ liệu 23 A .ADO.NET 23 B.Cấu trúc của ADO.NET: 26 C.Dataset. 27 D.NET Data Provider : 29 E.Đối tượng Connection 30 F.DataAdapter 31 G.Đối tượng Command 32 III.Triển khai một ứng dụng: 35 III.1.Mục đích nghiên cứu: 35 III.2.Báo cáo chi tiết: 35 IV.Triển khai ứng các ứng dụng ứng WEB Projects 37 IV.1.Làm việc với WEB Projects: 37 IV.2.Biên dịch và triển khai ứng dụng WEB Projects 38 IV.3.Triển khai một ứng dụng ASP.NET 38 Lý Bình Nguyên 2 8/6/2007
  3. ASP.NET I.Giới thiệu sơ qua về .NET: I.1.Nguồn gốc của .NET: Đầu năm 1998, sau khi hoàn tất version 4 của Internet Information Server (IIS), một đội lập trình ở Microsoft nhận thấy họ còn rất nhiều sáng kiến để kiện toàn IIS. Họ bắt đầu thiết kế một architecture mới dựa trên những ý đó và project đuợc đặt tên là Next Generation Windows Services (NGWS). Sau khi Visual Basic 6 đuợc trình làng vào cuối năm 1998, dự án kế tiếp mang tên Visual Studio 7 đuợc xáp nhập vào NGWS. Đội ngũ COM+/MTS góp vào một universal runtime cho tất cả các ngôn ngữ lập trình trong Visual Studio, mà họ có ý định cho ngay cả các ngôn ngữ lập trình của công ty khác dùng luôn. Công tác nầy được giữ bí mật mãi đến hội nghị Professional Developers' Conference ở Orlando vào tháng 7/2000. Đến tháng 11/2000 thì Microsoft cho phát hành Beta 1 của .NET gồm ba CD. Tính đến lúc ấy thì Microsoft đã làm việc trên dự án ấy gần ba năm rồi. Điều ấy cắt nghĩa tại sao Beta 1 version tương đối rất vững chải. .NET mang dấu tích những sáng kiến đã được áp dụng trước đây như p-code trong UCSD Pascal cho đến Java Virtual Marchine. Có điều Microsoft góp nhặt những sáng kiến của người khác, kết hợp với những sáng kiến của chính mình để làm nên một sản phẩm ăn rơ từ trong ra ngoài. Có lẽ cuối năm 2001 hay đầu năm 2002 Microsoft mới phát hành .NET. . I.2.Đị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à các 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). Nói cách khác, .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 Lý Bình Nguyên 3 8/6/2007
  4. ASP.NET 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 việc trao đổi thông tin này. Xét cho cùng, Internet là một phương tiện truyền thông không thể tin nổi cho phép thực hiện thương mại điện tử. Trong khi đây là thực tế, thì một cái nhìn khác về Internet và thương mại điện tử là điều cần thiết. Ngày nay Internet cung cấp những giải pháp thương mại điện tử thực sự hiệu quả, nhưng trước hết chúng ta hãy khảo sát mô hình của Internet. Internet hoạt động trên mô hình khách/chủ (client/server) mà ở đó những khách hàng (client) phải tương tác với các máy phục vụ (server) để xem dữ liệu. Những trình duyệt đã được phát triển để thông dịch mã HTML và trả lại trang Web cho người dùng. Về cơ bản việc sử dụng trình duyệt và Internet là công việc không thể thay đổi. Bạn có thể nhập thông tin vào trong các CSDL thông qua trình duyệt của bạn, nhưng phần lớn bạn không thể điều khiển việc sử dụng hay thao tác thông tin. Bạn phải tương tác với các máy phục vụ Web và các CSDL của chúng, và nhiều ứng dụng Web thường không tương thích. Nếu bạn sử dụng những thiết bị truy nhập Internet khác nhau như PC hay cell phone thì cách sử dụng những thiết bị đó là rất khác nhau. Những thiết bị này không tích hợp tốt với nhau, thậm chí ngay cả trên Internet. Từ một viễn cảnh công việc kinh doanh, nhiều công nghệ thương mại điện tử để lại những hệ thống đang tồn tại đằng sau chúng, đây quả là một vấn đề tốn kém và khó khǎn. Ý 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ì thiết bị nào, trên 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 (seamlessly) 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. I.3.Mục tiêu của .NET Microsoft .NET trợ giúp loại bỏ các thành phần riêng biệt khỏi một nền tảng và ứng dụng và như vậy nó cho phép thông tin được trao đổi và xây dựng trên một nền tảng Lý Bình Nguyên 4 8/6/2007
  5. ASP.NET chung hơn. Bạn có thể nghĩ "Microsoft được lợi gì từ ý tưởng này?". Xét cho cùng, việc tạo ra một nền tảng (platform) độc lập và nó không cần các sản phẩm của Microsoft để thực thi (implement) xem ra đã tự phá huỷ. Trên thực tế Microsoft đang ôm một ý tưởng ở đâu đó và tại một lúc nào đó, các nhà phát triển công nghệ phải đua tranh với nhau ở mức ứng dụng và dịch vụ chứ không phải là mức nền tảng (platform ). Ngành công nghiệp điện toán từ xưa đã cạch tranh với nhau ở mức nền tảng (platform level). Những sản phẩm của Microsoft không làm việc được với các sản phẩm của Apple Computer Microsystem và chúng cũng không làm việc được với các sản phẩm của Sun và cứ tiếp tục như thế. Mỗi một công ty tự xây dựng nền tảng tính toán của riêng mình và quyết định cái gì có thể chạy trên nền tảng đó và chạy như thế nào. Dẫu cho những công nghệ và những sự phát triển phải tiếp tục được sở hữu độc quyền như chúng vẫn thế, .NET giúp những người sử dụng có quan niệm rằng sự cạnh tranh phải dựa trên những sản phẩm, chứ không phải các chuẩn. .NET cung cấp một cách để thoát khỏi phạm vi các chuẩn có quyền sở hữu bởi việc cung cấp một kiểu tiếp cận các chuẩn trên Web một cách hợp lí từ các dịch vụ ứng dụng nào được xây dựng ngay cả trên các sản phẩm không phải của Microsoft. Một trong những mục tiêu của .NET là thoát khỏi sự cạnh tranh các chuẩn. Cách tiếp cận này là một tin tức tốt lành cho mọi khách hàng và cho thương mại điện tử. Mục tiêu thứ hai của nền tảng .NET (.NET platform) là truyền thông thương mại điện tử (TMĐT). Điều đó có nghĩa .NET cung cấp một cách cho các ứng dụng khác nhau sử dụng phần mềm khác nhau trong những môi trường Web khác nhau để trao đổi và sử dụng thông tin. Thành quả này được hoàn tất khi sử dụng XML[4]. XML đem lại một số lượng lớn những người ủng hộ và có thể được sử dụng để làm tiêu chuẩn hoá các máy phục vụ truyền thông, nơi những ứng dụng khác nhau và các dịch vụ chạy trên các ứng dụng này có thể dễ dàng liên lạc với một ứng dụng khác và trao đổi thông tin một cách tự nhiên. I.4 .Các dịch vụ của.NET Để thực thi mô hình .NET, một vài khối hợp nhất (building block) cơ sở phải được đặt đúng chỗ (các block này định rõ các dịch vụ Web được xây dựng như thế nào). Các dịch Lý Bình Nguyên 5 8/6/2007
  6. ASP.NET vụ này cố gắng để trợ giúp các nhà phát triển xây dựng các ứng dụng .NET. Microsoft định nghĩa các dịch vụ khối hợp nhất .NET sau đây: Authentication: Khi sử dụng các công nghệ Authentication (chứng thực) cũng như Passport (hộ chiếu) của Microsoft các nhà phát triển tạo ra các dịch vụ cho riêng mình và bảo vệ các dịch vụ như mong muốn. Messaging: Các đặc tính Messaging (truyền thông điệp) của .NET được xây dựng trên MSN Hotmail Web ã dựa vào dịch e-mail, Microsoft Exchange Server 2000, và Instant Messaging (truyền thông điệp tức thì). Những hệ thống truyền thông điệp này và những đặc tính có thể được phân tán đến bất kì thiết bị nào do tính không phụ thuộc nền tảng của chúng. Personalized Experience (kinh nghiệm cá nhân): .NET cho người dùng nhiều kiểm soát hơn thông qua các qui tắc xử lý dữ liệu và quyền ưu tiên mà nó xác định rõ dữ liệu phải được di chuyển và quản lý như thế nào. XML (Extensible Markup Language): XML được xem như một ngôn ngữ chung mà nó cho phép dữ liệu được di chuyển từ dạng này sang dạng khác trong khi bảo trì tính toàn vẹn của nó. Cùng với SOAP[5], XML có thể cung cấp một dịch vụ linh hoạt để quản lý và điều khiển dữ liệu. Một trong những thực thi (implementation) đầu tiên được đề nghị của dịch vụ .NET là Microsoft HailStorm. HailStorm là một dịch vụ trung tâm-người dùng (user-centric), nó cung cấp cho những người-dùng-cuối khả nǎng lưu trữ thông tin cá nhân như các cuộc hẹn, lịch hay các thông tin tài chính. Kết quả việc một người dùng đǎng kí dịch vụ này là thông tin được chia sẻ với các ứng dụng khác (thông tin dùng chung) theo ý muốn của họ, và nó trở thành một phần của người dùng khi điều khiển các hoạt động trên Web. Trong thời gian tới bạn sẽ được tiếp cận các dịch vụ tương tự được đề xuất trên Web bởi các công ty bán cho bạn thông qua việc đǎng kí vào dịch vụ của họ. Như chúng ta đã thấy .NET đã chuẩn bị cho việc sử dụng một số công nghệ của Microsoft mà nó bắt đầu thích nghi và được sự chấp nhận bởi cộng đồng tin học và Internet. Lý Bình Nguyên 6 8/6/2007
  7. ASP.NET I.5.Tác động của .NET đến người làm CNTT Chiến lược .NET có thể tác động đến các chuyên gia CNTT theo một số cách. Trước hết chúng ta hãy xem xét .NET có thể tác động như thế nào đến các nhà phát triển và sau đó đánh giá tác động của nó đối với những nhà quản trị hệ thống và các chuyên gia CNTT khác. 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 các ứ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ó thể 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 đượ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, dịch 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: bạn mua CD-ROM và cài đặt sản phẩm trên một máy tính. Một dịch vụ Web hoàn tất mộ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ể được sử dụng bởi bất kỳ người nào với bất kỳ 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 (đặc trưng riêng biệt cho từng ứng dụng) nào xuất hiện liên tục (seamlessly) trên Internet không có sự can thiệp của người dùng. Lý Bình Nguyên 7 8/6/2007
  8. ASP.NET 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ó. Để cho các chuyên gia CNTT khác, ý tưởng .NET sẽ không thay đổi hoàn toàn công việc quản lý máy phục vụ CNTT. Các chuyên gia CNTT phải nhìn thấy sự giải toả chung trong việc quản trị bởi vì mô hình tính toán phân tán .NET đã được sẵn sàng, nhưng việc quản lý các máy phục vụ xí nghiệp (Enterprise server) .NET và các máy trạm sẽ hoạt động phần lớn theo cùng một cách. I.6.Tác động của .NET đến người dùng 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ẽ. .NET có khả nǎng thay đổi cách tiếp cận. Do sức mạnh của Internet, người dùng không còn thấy cần thiết phải lưu giữ tất cả dữ liệu và phần mềm trên máy tính cá nhân của họ. Thay vào đó, dữ liệu và ngay cả việc sử dụng các ứng dụng có thể được lưu trữ trên các máy phục vụ trên Internet (thông thường chi phí ở đây là không đáng kể). Đặc tính này đã xoá bỏ trách nhiệm người dùng về mặt quản lý. Người dùng truy nhập và thao tác dữ Lý Bình Nguyên 8 8/6/2007
  9. ASP.NET liệu, nhưng người quản trị trên máy phục vụ quản lí công việc lưu giữ, sự chấp nhận lỗi và lập kế hoạch cấu hình. Người dùng không còn phải lưu giữ dữ liệu cục bộ. Một khi dữ liệu được đưa lên Internet, chiến lược .NET sẽ bắt đầu vận hành. Hãy nhớ rằng .NET cho ta một cách để truyền dữ liệu một cách thông suốt thông qua XML và SOAP. I.7. Cơ sở hạ tầng của .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ở cơ sở hạ tầng .NET xem những thành phần chương trình như những dịch vụ Web, nó lấy ra những đặc tính tốt nhất của COM[11] 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 tạo ra các thành phần (component) riêng biệt hoạt động với nhau. Cơ sở hạ tầng .NET tạo ra framework (khung) trên đó các dịch vụ Web được xây dựng. Ba thành phần cho.NET framework này được giới thiệu sơ lược dưới đây. 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 (CLR là bộ thi hành ngôn ngữ chung) 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 theo quan điểm của người 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 (thread) 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. Bộ thi hành ngôn ngữ chung CLR quản lí tất cả 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 Lý Bình Nguyên 9 8/6/2007
  10. ASP.NET 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ữ" (language-free). 2. Các lớp lập trình hợp nhất (Unified Progrgamming 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 để làm 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í khá nhiều thời gian. .NET cung cấp các lớp lập trình 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. ASP.NET (Active Server Pages .NET) ASP.NET được sử dụng chung với các lớp lập trình mà nó có thể tạo các ứng dụng Web một cách dễ dàng cho người lập trình. ASP.NET cung cấp cách truy cập giao diện HTML chung và nó chạy trên chương trình máy phục vụ nhưng thể hiện kết quả thông qua HTML (ví dụ như text box chẳng hạn). Giao diện ASP.NET làm cho việc phát triển các ứng dụng Web trở nên nhanh hơn do bởi các đối tượng điều khiển chung này. Như một kết quả (của) các lớp lập trình chung và những đặc tính chuẩn của ASP.NET, các nhà phát triển tiêu tốn ít thời gian hơn khi viết các mã mới và cần nhiều thời gian hơn khi sử dụng các mã đã có. ASP.NET được sử dụng ở phần trên của hai thành phần thực thi ngôn ngữ chung CLR và các ngôn ngữ lập trình hợp nhất để tạo ra các dịch vụ Web. II.Nghiên cứu về ASP.NET II.1.Giới thiệu chung về ASP.NET ASP.NET là phiên bản kế tiếp của Active Server Page (ASP); nó là một nền phát triển ứng dụng Web hợp nhất, cung cấp nhiều dịch vụ cần thiết cho lập trình viên xây dựng các lớp ứng dụng chuyên nghiệp. Cú pháp ASP.NET tượng thích với cú pháp ASP, ngoài ra ASP.NET còn cung cấp một mô hình lập trình mới, nền tảng an toàn (secure), linh hoạt (scalable),và ổn định (stable). Sẽ cảm thấy dễ chịu khi nâng cấp ứng dụng ASP hiện Lý Bình Nguyên 10 8/6/2007
  11. ASP.NET có, bằng cách đưa vào các hàm ASP.NET cho chúng (lời của MS).ASP.NET là biên dịch, dựa trên môi trường .NET và có thể xây dựng bằng bất cứ ngôn ngữ nào tương thích .NET, bao gồm Visual Basic .NET, C#, and JScript .NET. Ngoài ra, toàn bộ thư viện .NET Framework có thể sử dụng với ứng dụng ASP.NET, lập trình viên tận dụng dễ dàng những lợi ích của các kỹ thuật được cung cấp, bao gồm quản lý môi trường thực thi ngôn ngữ cung (common language runtime), kiểu an toàn (type safety), kế thừa (inheritance), .v.v. ASP.NET được thiết kế làm việc với các trình soạn thảo WYSIWYG HTML đi kèm và các công cụ lập trình khác được đưa vào trong Microsoft Visual .NET. Tất cả các công cụ này không phài chỉ dùng để phát triển ứng dụng Web được dễ dàng, tuy nhiên có thể sử dụng một vài chức năng thông thường cho ứng dụng Web, bao gồm một GUI cho phép lập trình viên có thể dễ dàng đặt các server control vào trang web (web page), và một trình debug rất mạnh mẽ. Khi tạo một ứng dụng Web lập trình viên có thể chọn Web Forms hoặc Web Services, ngoài ra cũng có thể kết hợp hai loại này với nhau theo bất kỳ cách nào. Cà hai loại này có một nền cơ bản, cho phép sử dụng authentication schemes, cache frequently used data, hoặc chỉnh sửa cấu hình ứng dụng (customize application’s configuration). Tuy nhiên mỗi loại có một vài khả năng riêng: Một XML Web Service cung cấp điều kiện (mean) để truy cập các hàm ở server từ xa. Khi sử dụng Web Service, trong kinh doanh người ta có thể đưa ra các giao diện lập trình được cùng với dữ liệu, hoặc kết quả kinh doanh, những cái này có thể được nhận, hiệu chỉnh bởi các ứng dụng client và server. Web Server cho phép trao đổi dữ liệu theo hai kịch bản (scenarios) client-server và server-client, sử dụng chuẩn HTTP và thông diệp XML (XML messaging) để di chuyển dữ liệu qua tường lữa (firewall). XML Web Service có thể được viết bằng mọi ngôn ngữ lập trình, sử dụng mọi mô hình thành phần (component model), và có thể chạy trên bất kỳ hệ điều hành nào có thể truy cập XML Web Services. Mô hình (model) Web Forms và Web Services đều có tất cả các đặt tính của ASP.NET, đó là sức mạnh của .NET Framework và .NET Framework Common Lanuage Runtime. Các tính chất và cách sử dụng có thể được phát thảo như sau: Lý Bình Nguyên 11 8/6/2007
  12. ASP.NET Với người đã có kỹ năng lập trình ASP thì mô hình lập trình mới ASP.NET sẽ rất gần gũi. Tuy là như vậy nhưng ASP.NET đã có những thay đổi rất đặc biệt so với ASP, ASP.NET đã có cấu trúc hơn và hướng đối tượng. Thật đáng tiết, điều này có nghĩa là tất cả các trang ASP đã tồn tại đều phải được chỉnh sửa một vài nơi để có thể chạy dưới ASP.NET. Ngoài ra, Visual Basic và Visual Basic.NET đã có một sự khác biệt rất lớn, điều này có nghĩa là các trang được viết bằng Visual Basic Scripting Edition sẽ không thể chuyển trực tiếp sang ASP.NET, cần thiết phải có một số thay đổi nhất định để có thể chuyển sang ASP.NET. Truy cập database là kỹ thuật thường được sử dụng để hiển thị dữ liệu trên trang Web của khách (visitor). Với ASP.NET, việc quản lý (manage) database sẽ khá dễ dàng thông qua code. ASP.NET cung cấp một mô hình đơn giản để lập trình viên Web có thể làm việc như trên một ứng dụng thông thường. Lập trình viên có thể viết mã ngay trong file văn bản global.asax, hoặc là trong một class được biên dịch, được triễn khai như là một assembly, và có thể đưa vào các sự kiện mức ứng dụng. Ngoài ra người lập trình còn có thể mở rộng mô hình để thích hợp cho nhu cầu của từng ứng dụng ASP.NET tạo ra những chương trình dễ sử dụng và những session-state facility gần gủi với lập trình viên ASP và sẳn sàng tương thích với tất cả các giao diện lập trình .NET Framework khác (other .NET Framework APIs). Đối với những lập trình viên cao cấp, người muốn sử dụng những giao diện lập trình mạnh như giao diện ISAPI (có trong ASP), ASP.NET giới thiệu hai giao diện: IhttpHandler và IhttpModule. Cài đặt giao diện IHttpHandler cho phép chương trình tương tác với các yêu cầu mức thấp (low-level request) và những dịch vụ hồi báo (response services) của IIS Web Services và cung cấp một vài chức năng giống với phần mở rộng ISAPI, nhưng với một mô hình lập trình rất đơn giản. Cài đặt giao diện IhttpModule cho phép lập trình viên đưa vào những customize event riêng trong mỗi yêu cầu (request) sinh ra trong ứng dụng. ASP.NET có được những chất lượng thực thi được tìm thấy trong .NET Framework và thực thi ngôn ngữ chung (common language runtime). Ngoài ra ASP.NET đã được thiết Lý Bình Nguyên 12 8/6/2007
  13. ASP.NET kế cho mục đích nâng cao khả năng thực thi vượt qua ASP và tất cả các nền ứng dụng Web khác (Lời của MS). Tất cả mã của ASP.NET đều được biên dịch, việc này cho phép kết hợp dễ (early binding), kiễu mạnh (strong type), trình biên dịch tức thời (JIT) tương thích native code. Ngoài ra ASP.NET còn cung cấp catch mở rộng cho lập trình viên có thể tối ưu hóa ứng dụng trong một vài trường hợp. Tạo được các câu lệnh debug (custom debug statements) cho trang web, nó rất hữu ích trong khi giãi quyết sự cố (troubleshooting).Nền .NET Framework và ASP.NET cung cấp sơ đồ (schemes) chứng nhận(authentication) và cấp phép (authorization) cho ứng dụng Web, có thể dễ dàng xóa, thêm, hiệu chỉnh sơ đồ. Cấu hình ứng dụng ASP.NET được lưu trữ trong các tập tin XML chuẩn, hiệu chỉnh dễ dàng , và có thể mở rộng để phù hợp cho nhu cầu của từng ứng dụng Web. ASP.NET là phiên bản mới của ASP,ngoài những ưu điểm của ASP, ASP.NET có những đặc điểm khác và mạnh hơn so với ASP:  Pages: sử dụng các thành phần điều khiển có khả năng hoạt động và tương tác với nhau ngay trên trình chủ Server. Đặc điểm này giảm thiểu thời gian viết code tương tác giữa các trang. Lập trình trong môi trường ASP.NET tương tự như lập trình trong Form, do đó các ứng dụng của ASP.NET còn được gọi là Web Form.  HTML Server Side Controls: các thành phần điều khiển HTML có khả năng xử lý ngay trên trình chủ(Server) dựa trên thuộc tính và phương thức tương tự như cách thức hoạt động của trình khách(client). Những thành phần điều khiển này còn cho phép ta kết hợp mã xử lý của pages ASP.NET với một sự kiện nào đó phát sinh phía client được xem như đang diễn ra trên trình server(mô hình chuyển giao- deligate).  Rich controls: tập các điều khiển đa năng.Các Rich Controls chạy trên server và có thể tạo ra các phần tử cũng như các đối tượng HTML phức hợp trên client (Grid, calendar,table, view, ). Rich controls còn cho phép bạn ràng buộc dữ liệu và xử lý dữ liệu tương tự như bạn đang viết một ứng dụng desktop thật sự. Xoá đi biên giới mô hình Client/server. Lý Bình Nguyên 13 8/6/2007
  14. ASP.NET  Web Service: các dịch vụ Web. Trang ASP.NET có thể không cần hiển thị kết xuất cho client. Chúng hoạt động như những chương trình xử lý yêu cầu ở hậu cảnh. VD trang ASP.NET nào đó có thể là đối tượng cung cấp phương thức trả về giá trị nào đó khi nhận được yêu cầu từ client.  Cấu hình & phân phối: đơn giản và dễ dàng với các file cấu hình theo định dạng văn bản của XML.Không cần phải đăng ký hệ thống khi sử dụng nữa(Quên đi regsrv32.exe!). Chúng ta chỉ cần copy các trang ASP.NET hay các đối tượng lên máy chủ, chỉ ra vị trí của chúng và thế là chương trình cũng như dịch vụ của chúng ta đã sẵn sàng!.  Tự động quản lý trạng thái của đối tượng Session hay Aplication. Chúng ta có thể lưu nội dung của Session hay Aplication của một ứng dụng đặc thù nào đó xuống một file trên đĩa sau đó dùng lại.  Debug, Tracing: Các công cụ debug được nâng cấp đáng kể. Mỗi trang tài liệu có thể sử dụng một trang xử lý lỗi riêng biệt và kết xuất nội dung của biến để theo dõi ngay trong quá trình thực thi trang. Các trình Debug được tích hợp sẵn trong môi trường đa ngôn ngữ VB.NET,C++,C#.  Security management: Chúng ta có thể tận dụng các dịch vụ đăng nhập(login) tuỳ biến cho trang tài liệu ASP.NET theo phong cách của Web hoặc cơ chế đăng nhập và dựa trên hệ thống bảo mật của HĐH.  Tùy biến vùng đệm trên Server (Customer Server Caching): vùng đệm của kiến trúc ASP.NET được quản lý rất linh động. Chúng ta có thể tạo ra các vùng đệm riêng biệt chứa một kiểu giá trị và đối tượng trong quá trình hoạt động của trang nhằm tăng tốc cho ứng dụng.  Một tập các đối tượng phong phú: ASP.NET hỗ trợ một tập phong phú các thư viện và các đối tượng phục vụ hầu hết những gì mà những nhà ứng dụng cần đến. Bằng những thư viện này công việc viết ứng dụng cho Web trở nên dễ dàng hơn.VD: bạn có thể sử dụng các thành phần đối tượng “Send mail ” để gửi nhận thư, Đối tượng mã hoá để giải mã thông tin, Web Counter(đếm số người truy cập),ADO.NET, Các đối tượng nội tại khác như Request, Response, Form, Cookies, ServerVaribles, đều được giữ lại và hoàn toàn tương thích với ASP. Tuy nhiên, ASP.NET đã cung cấp thêm Lý Bình Nguyên 14 8/6/2007
  15. ASP.NET cho những đối tượng này rất nhiều những thuộc tính và phương thức mới giúp nâng cao khả năng xử lý các ứng dụng. Một ứng dụng được triển khai bằng ASP.NET sẽ thừa hưởng được các thế mạnh của ASP.NET như: tốc độ nhanh, linh động, an toàn và có tính thực thi cao. Điều này dựa trên các ưu điểm nổi bật sau của ASP.NET(đứng ở góc độ lập trình.): 1. Thành phần điều khiển đóng gói các chức năng thường xuyên sử dụng rất tiện lợi như: quản lý trạng thái (State), kiểm tra dữ liệu nhập(validate), những công việc này trứơc đây thường phải viết rất thủ công. 2. Mã nguồn dễ dùng, dễ đọc: Mọi công việc thao tác hay xử lý không cần thiết trước đây(như kiểm tra tính hợp lệ của dữ liệu, bảo vệ trạng thái của session, ) đều được chuyển giao cho kiến trúc và bộ khung ASP.NET xử lý. Trang ASP.NET viết mã ít hơn, ngắn gọn hơn đồng thời cũng thực thi nhanh hơn trang ASP do trang ASP.NET đã được biên dịch và được đưa vào vùng đệm bộ nhớ trong suốt quá trình thực thi. 3. Với trang ASP.NET chúng ta có thể tạo trang tài liệu HTML kết xuất phía đầu cuối đẹp mắt bằng một tập phong phú các thành phần điều khiển giao diện thân thuộc trong Windows đã được xây dựng lại. 4. Trong ASP.NET không còn phụ thuộc vào ngôn ngữ phi định kiểu như VBScript nữa, mà nó cho phép sử dụng ngôn ngữ trung lập.Trang ASP.NET có thể viết bằng rất nhiều ngôn ngữ lập trình hiện đại: C++, C#, VB.NET, Perl, Ngoài ra, còn có những ưu điểm khác so với ASP thường: Ở trang ASP mã lệnh và giao diện trộn lẫn với nhau. Khi phát triển những ứng dụng Web lớn, thường các dự án cần được tách ra làm 2 phần. Một nhóm thiết kế giao diện(Web Designer) và một nhóm viết lệnh lập trình(coder). Kết quả cuối cùng thường là một sự trộn lẫn giữa phần thiết kế giao diện và mã lệnh ASP để tạo thành một file chương trình duy nhất. Các trang ASP của ứng dụng đó rất khó bảo trì khi bạn muốn thêm vào các mã lập trình mới hay thay đổi giao diện. ASP.NET cho phép tách rời giữa mã lập trình và nội dung tài liệu. Ngày nay, các thiết bị cầm tay: ĐTDĐ, máy Palm, thay đổi rất nhanh, đòi hỏi nhu cầu sử dụng Internet ngày càng cao. Vấn đề là các trang tài liệu thiết kế cho những thiết bị này yêu cầu phải nhỏ gọn và không thể sử dụng cách định dạng cho tài liệu như trên Lý Bình Nguyên 15 8/6/2007
  16. ASP.NET những trình duyệt hiện đại. Một trong những cách giải quyết vấn đề trên đó là ta sẽ xây dựng 2 site khác nhau để hướng đến 2 ứng dụng khác nhau hoặc là trong cùng một site chúng ta code nhận dạng từng loại thiết bị rồi viết mã từng site cho phù hợp(Select case ) Cách này lập trình rất khó, chi phí cao và hiện đang được sử dụng nhiều nhất. Tuy nhiên, với ASP.NET chúng ta không cần viết mã lệnh, các thành phần điều khiển hoạt động trên Server có khả năng nhận dạng và phát sinh mã tuỳ theo yêu cầu sử dụng cuối cùng của Client II.2.Ứng dụng của ASP.NET A.Khái quát. Một ứng dụng ASP.NET được định nghĩa là tất cả những tập tin, những điều khiển (handler), những module và mã thực thi (executable code) có thể được gọi từ một cây thư mục ảo (virtual directory) trên ứng dụng Web Server. Có thể sử dụng mọi mô hình lập trình ASP.NET (ASP.NET programming models) trong ứng dụng. Tất cả chúng phải cùng tồn tại trong một cấu trúc thư mục ảo riêng lẻ. B.Tập tin Global.asax. Tập tin Global.asax, còn được hiểu như tập tin ứng dụng ASP.NET, là một tập tin tùy chọn chứa mã để đáp ứng (responding) những sự kiện mức ứng dụng (application-level events) được phát ra bởi ASP.NET hoặc những module HTTP. Tập tin Global.asax được đặt tại thư mục gốc (root directory) của một ứng dụng ASP.NET. Khi ứng dụng chạy (run), tập tin Global.asax được phân tích và biên dịch thành một lớp class .NET Framework dẫn xuất từ lớp HttpApplication. Bản thân tập tin Global.asax được cấu hình để từ chối bất kỳ yêu cầu URL trực tiếp nào; người sử dụng bên ngoài (external users) không thể download hoặc xem mã được viết bên trong nó. Tập tin Global.asax của ASP.NET có thể cùng tồn tại với tập tin Global.asa của ASP. Có thể tạo tập tin Global.asax bằng trình thiết kế WYSIWYG, bằng Notepad, hoặc như là một lớp được biên dịch thành assambly đặt trong thư mục \bin là thư mục con của thư mục ứng dụng. Tập tin Global.asax là một tùy chọn, nếu không định nghĩa tập tin Global.asax thì framework (ASP.NET page framework) sẽ xem như (assumes) không có bất kỳ một event application handler và event session handler nào được định nghĩa. Lý Bình Nguyên 16 8/6/2007
  17. ASP.NET Nếu nội dung tập tin Global.asax bị thay đổi trong lúc ứng dụng ASP.NET đang hoạt động thì ASP.NET Page Framework sẽ tự động dò tìm sự thay đổi này. Nó sẽ thực hiện xong tất cả những yêu cầu hiện tại, gởi sự kiện Application_OnEnd đến tất cả những bộ lắng nghe (listeners), và khởi động lại miền ứng dụng (application domain). Trong thực tế, ứng dụng này được khởi động lại, đóng tất cả những browse sesstion, xóa (flushing) tất cả những thông tin trạng thái. Khi có yêu cầu kế tiếp đến từ browse, ASP.NET page framework sẽ phân tích và biên dịch lại tập tin Global.asax thành đối tượng trong bộ nhớ và phát ra sự kiện Application_OnStart. C.Làm việc với thực thể HttpApplication. Trong suốt thời gian sống của ứng dụng, ASP.NET duy tri một số thực thể Global.asax chung dẫn xuất từ lớp HttpApplication. Khi ứng dụng ASP.NET nhận một yêu cầu HTTP thì ASP.NET page framework sẽ chỉ định một trong những đối tượng này để xử lý yêu cầu. Mỗi thực thể HttpApplication chịu trách nhiệm quản lý suốt thời gian sống của yêu cầu mà nó được chỉ định quản lý, và thực thể chỉ được sử dụng lại (reused) cho yêu cầu khác sau khi nó đã xử lý xong yêu cầu hiện tại. Lớp HttpApplication cho phép lập trình (overriding) truy xuất (access) các phương thức (method), cũng như những sự kiện Application_OnStart và Application_OnEnd. Ngoài ra, nó còn cho phép truy xuất đến bất kỳ sự kiện nào được đưa ra (exposed) bởi các module HTTP D.Lập trình lại (Overriding) phương thức Init và Dispose. Phương thức HttpApplication.Init được gọi ngay sau khi một thực thể (instance) của lớp HttpApplication được tạo (sau khi tất cả các module quản lý sự kiện đã được add vào). Có thể sử dụng phương thức này để tạo và cấu hình bất kỳ đối tượng nào được sử dụng xuyên suốt (across) trong tất cả các thao tác xử lý sự kiện. Phương thức Init không giống với sự kiện Application_OnStart, bởi ví nó luôn luôn được gọi trong tất cả các thực thể HttpApplication trong phạm vi một ứng dụng. Sự kiện Application_OnStart chỉ được phát ra một lần trong suốt cuộc sống của ứng dụng, khi thực thể (instance) HttpApplication đầu tiên được tạo. Chỉ sử dụng sự kiện Application_OnStart để tạo và hiệu chỉnh (modify) những trạng thái (state) được chia sẽ Lý Bình Nguyên 17 8/6/2007
  18. ASP.NET bởi tất cả những thực thể pipeline, như là đối tượng ApplicationState. Không sử dụng nó để tạo các biến cục bộ, bởi vì biến cục bộ không được chia sẽ bởi nhiều thực thể HttpApplication.Phương thức HttpApplication.Dispose được gọi trực tiếp trước khi một thực thể của lớp HttpApplication được hũy. Có thể sử dụng nó để xóa bất kỳ local resource nào. Phương thức Dispose không giống với sự kiện Application_OnEnd, bởi vì nó luôn luôn được gọi trong tất cả các thực thể của lớp HttpApplication trong phạm vi một ứng dụng. Sự kiện Application_OnEnd chỉ được phát ra duy nhất một lần trong suốt cuộc sống của ứng dụng, khi thực thể cuối cùng của lớp HttpApplication được hũy (torn down). Chỉ sử dụng sự kiện Application_OnEnd để xóa những trạng thái hoặc những resource được chia sẽ bới tất cả các thực thể pipeline, như là đối tượng ApplicationState. Không sử dụng nó để xóa các biến cục bộ, bởi vì biến cục bộ không được chia sẽ sử dụng bởi nhiều thực thể HttpApplication. Không được sử dụng các thuộc tính Request, Response, Sesstion của thực thể HttpApplication bên trong các hàm Init và Dispose của một sự thực thi yêu cầu. Ví dụ bên dưới chỉ ra làm thế nào để override hai phương thức (method) chu kỳ sống được cung cấp bởi lơp cơ bản HttpApplication. public override void Init() { // Init override code goes here. } public override void Dispose() { // Init override code goes here. } D.1. Quản lý những sự kiện của thực thể HttpApplication Có thể sử dụng tập tin Global.asax để xử lý bất kỳ sự kiện nào được đưa ra (exposed) bởi lớp cơ bản HttpApplication. Mẫu sau đây được cung cấp để thực hiện công việc này: Lý Bình Nguyên 18 8/6/2007
  19. ASP.NET Application_EventName(AppropriateEventArgumentSignature) Ví dụ: đoạn mã sau đây giải quyết các sự kiện OnStart, BeginRequest, và OnEnd cho một ứng dụng ASP.NET, phải đặt đoạn mã vào trong tập tin Global.asax, đoạn mã trong giống như sau: public void Application_OnStart() { // Application start-up code goes here. } public void Application_BeginRequest() { // Application code for each request could go here. } public void Application_OnEnd() { // Application clean-up code goes here. } E.Sử dụng các Module trong tập tin Global.asax. 1. Khái quát. ASP.NET cung cấp những module khác nhau và riêng biệt trong mỗi yêu cầu và những sự kiện được đưa ra (exposed), có thể quản lý (handle) các module này ngay trong tập tin Global.asax hoặc ngay trong một lớp được dẫn xuất từ lớp HttpApplication . Có thể sửa đổi (custmize) và mở rộng các module này, hoặc thậm chí có thể tạo một module mới để xử lý thông tin về các yêu cầu HTTP. Ví dụ, có thể tạo một module output cache để cài đặt (implements) output-caching làm việc (behaviors) cho toàn bộ ứng dụng. Tất cả các module, cả những module tự tạo và những module chuẩn được cung cấp bởi ASP.NET, đều phải cài đặt giao diện IHttpModule . Chỉ cần các module được đăng ký với ứng dụng là có thể dễ dàng tương tác (interact) với các yêu cầu HTTP đi vào ứng dụng. Lý Bình Nguyên 19 8/6/2007
  20. ASP.NET 2. Quản lý HTTP Module Events. Có thể sử dụng các module trong tập tin Global.asax để quản lý bất kỳ sự kiện nào được phát sinh trong các yêu cầu HTTP. Ví dụ, có thể tạo một custom authentication module cho ứng dụng Web định xây dựng, trong module có xử lý sự kiện OnAuthenticateRequest để chứng thực người dùng. Lệnh viết để điều khiển sự kiện phát sinh (exposed) bởi một HTTP module phải phù hợp với mẫu được chỉ rỏ bên dưới. FriendlyModuleName_EventName(AppropriateEventArgumentSignature) Ví dụ, nếu muốn đưa code để quản lý sự kiện bắt đầu và kết thúc của sesstion, cũng như cho sự kiện OnAuthenticateRequest, nó sẽ trong giống như bên dưới. void Session_OnStart() { // Session start-up code goes here. } void Session_OnEnd() { // Session clean-up code goes here. } void Application_OnAuthenticateRequest(Object Source, EventArgs Details) { // Authentication code goes here. } II.3.Cấu hình ASP.NET A .Khái quát -Đặc điểm hệ thống cấu hình của ASP.NET là một thành phần có thể mở rộng được, cho phép định nghĩa những thiết lập hệ thống khi triễn khai ứng dụng ASP.NET lần đầu tiên, sau đó có thể thêm, sửa lại những thiết lập cấu hình tại bất cứ thời điểm nào với một sự tác động nhỏ trên các ứng dụng Web và các Server. -Hệ thống cấu hình của ASP.NET mang lại các lợi ích sau: Lý Bình Nguyên 20 8/6/2007
  21. ASP.NET  Thông tin cấu hình được lưu trữ trong tập tin XML chuẫn, cho nên, có thể sử dụng các trình soạn thảo văn bản chuẫn (notepad) hoặc các ứng dụng phân tích XML (XML Parser) để tạo và hiệu chỉnh nó một cách khá dễ dàng.  Có nhiều tập tin cấu hình, tất cả đều được đặt tên là Web.config, có thể xuất hiện trong nhiều thư mục của một ứng dụng Server ASP.NET. Mỗi tập tin cấu hình áp dụng những thiết lập cấu hình cho thư mục chứa nó và những thư mục con bên dưới nó. Theo mặc định, những thư mục con sẽ có những thiết lập cấu hình của tập tin Web.config trong thư mục cha, tuy nhiên, những tập tin cấu hình trong thư mục con có thể bổ sung, hiệu chĩnh, và thậm chí còn có thể định nghĩa chòng những thiếg lập của tập tin cấu hình trong thư mục cha. Tập tin cấu hình mức cao nhất có tên là: C:\WINNT\Microsoft.NET\Framework\ version\CONFIG\Machine.config , nó được cung cấp bởi ASP.NET và thiết lập cấu hình cho toàn Web Server.  Trong khi chạy, ASP.NET sử dụng thông tin cấu hình được cung cấp trong cấu trúc phân cấp của thư mục ảo để tính ra một thiết lập tổng hợp cho mỗi nguồn lực (resource) duy nhất. Chý ý, hệ thống phân cấu thư mục ở đây là hệ thống thư mục ảo của IIS, không liên quan đến hệ thống thư mục thường được quản lý bởi hệ điều hành.  ASP.NET tự động dò tìm những thay đổi trong các tập tin thiết lập cấu hình và tự động áp dụng những thiết lập cấu hình mới cho những trang Web có liên quan. Web Server không cần phải khởi động lại để các thiết lập cấu hình mới có hiệu lực. Thiết lập cấu hình phân cấp (tổng hợp của nhiều tập tin cấu hình) tự động được tính và lưu trữ lại bất cứ khi nào hệ thống phân cấp các tập tin cấu hình có sự thay đổi. Chú ý, những quy tắt ở trên không được tính với khối trong tập tin cấu hình. Lý Bình Nguyên 21 8/6/2007
  22. ASP.NET  Hệ thống cấu hình của ASP.NET cho phép mở rộng, có thể thêm vào các thông số cấu hình (configuration parameters), và tạo các vùng điều khiểnc cấu hình (configuration section handlers) để xử lý chúng.  ASP.NET bảo vệ các tập tin cấu hình từ sự truy cập từ bên ngoài bằng cách cấu hình IIS ngăn cản truy cập trực tiếp từ Browse đến các tập tin cấu hình. Mã lỗi 403 sẽ được trã về cho bất kỳ sự truy cập trực tiếp nào. B. Định dạng của tập tin cấu hình trong ASP.NET. -Thông tin cấu hình cho nguồn lực ASP.NET (ASP.NET resource) chứa trong một tập hợp các tập tin cấu hình, mỗi tập tin đều được đặt tên là Web.config. Mỗi tập tin cấu hình chứa một hệ thống cấp bậc các tag XML và các subtag cùng với những thuộc tính chỉ định những thiết lập cấu hình. Bởi vì những tag phải có cấu trúc XML đúng chuẫn (well- formed XML) cho nên tag, subtag, attributes phân biệt dạng chữ (case-sensitive). Tên của tag và tên của attributes phải là camel-case, điều này có nghĩa là ký tự đầu tiên của tên tag phải là chử thường, và ký tự đầu tiên của bất kỳ từ theo sau nào phải là chữ hoa. Giá trị của thuộc tính phải là Pascal-case. -Tất cả thông tin cấu hình đều được đặt giữa cặp and . Thông tin cấu hình giữa các tag được nhóm vào hai khối (area) chính: khối định nghĩa điều khiển cấu hình section (the configuration section handler declaration area) và khối (area) thiết lập cấu hình section (the configuration section settings area).  Khối định nghĩa điều khiển xuất hiện tại phần đầu của tập tin cấu hình giữa cặp tag and . Mỗi một sự định nghĩa chứa trong một tag chỉ rỏ tên của một vùng (section), mỗi section cung cấp một tập hợp dữ liệu cấu hình và tên của các lớp .NET Framework xử lý dữ liệu cấu hình trong section này.  Khối thiết lập cấu hình vùng (section) theo sau khối và chứa các thiết lập cấu hình thật sự. Có mỗi khối thiết lập cấu hình vùng (section) cho mỗi định nghĩa vùng (section) trong khối . Mỗi cấu hình vùng chứa các subtag, các attribute chứa các thiết lập cho vùng. Lý Bình Nguyên 22 8/6/2007
  23. ASP.NET Tập tin Web.config bên dưới là một ví dụ định nghĩa hai điều khiển cấu hình (declares two configuration section handlers). Cái thứ nhất quản lý các thiết lập cho ứng dụng, và cái còn lại quản lý trạng thái section. - Chỉ cần định nghĩa khối điều khiển cấu hình section (configuration section handler) một lần duy nhất, có thể đặt nó trong tập tin thiết lập cấu hình toàn server Machine.config hoặc trong tập tin Web.config trong thư mục ảo chứa các tập tin của ứng dụng Web. Các tập tin cấu hình trong thư mục con sẽ tự động thừa kế các định nghĩa điều khiển cấu hình trong thư mục cha. - Các thiết lập cấu hình được đặt bên trong các tag phân nhóm section (section grouping tags). Những section tag ở mức cao (top-level section tags) thường mô tả namespace mà những thiết lập cấu hình tác dụng lên. Ví dụ, tag mô tả những thiết lập cho những lớp mạng, và tag mô tả những thiết lập cho những lớp ASP.NET. II.4.Truy cập dữ liệu A .ADO.NET 1.Tổng quan về ADO.NET: ADO.NET cung cấp việc truy cập các nguồn dữ liệu một cách nhất quán như SQL Server, cũng như những nguồn dữ liệu quản lý thông qua OLE DB và XML. Những ứng dụng sử dụng dữ liệu chia sẽ có thể dùng ADO.NET để kết nối đến những nguồn dữ liệu này, cũng như truy xuất, thao tác và cập nhật dữ liệu. ADO.NET dễ dàng quản lý việc truy cập dữ liệu từ việc thao tác trên cơ sở dữ liệu thông qua những thành phần riêng lẽ mà có thể dùng chung hoặc dùng riêng lẽ các thành phần này. ADO.NET bao gồm các trình cung cấp dữ liệu .NET (.NET data provider) cho việc kết nối đến cơ sở dữ liệu, thực thi một câu lệnh và truy xuất kết quả. Các kết quả này hoặc là được xử lý trực tiếp hoặc là được đặt trong một đối tượng ADO.NET Dataset, cho người dùng thao tác trên đối tượng này . Đối tượng ADO.NET Dataset cũng có thể được sử dụng một cách độc lập với .NET data provider để quản lý dữ liệu thuộc những ứng dụng hoặc những nguồn từ XML. Lớp ADO.NET được tìm thấy trong namespace System.Data, và được tích hợp với lớp XML, lớp này được tìm thấy trong namespace System.Xml Connection a)Sự khác nhau giữa ADO.NET và ADO: 1.Sự thể hiện dữ liệu . Lý Bình Nguyên 23 8/6/2007
  24. ASP.NET . ADO dữ liệu được lưu trữ ở dạng recordset , còn ADO.NET lưu trữ dạng dataset .Đây là điểm khác biệt quan trọng nhất . 2.Số table . . Một recordset như là một table , nếu recordset chứa nhiều tables thì nó phải dùng phép JOIN query kết các bảng lại, lấy dữ liệu từ các tables khác nhau tập hợp lại thành một tables đơn . . Ngược lại , dataset là một collection của một hoặc nhiều tables .Các tables bên trong một dataset có thể gọi trực tiếp từng tables thông qua đối tượng DaTaTable . Nếu một dataset chứa nhiều tables ,nó sẽ chứa nhiều đối tượng DataTable .Tức là ,mỗi DataTable điển hình tương đương với một table hoặc là một view. Như vậy một dadaset có cấu trúc tương tự như một database. . Ngoài ra , một dataset còn chứa các mối quan hệ .Một mối quan hệ của dataset tương tư như là mối quan hệ khoá ngoại của database ; tức là ,nó kết hợp các dòng của table này với table khác . Ví dụ : Một dataset chứa một table về thông tin nhà đầu tư (investors ) và một table khác lưu trữ lĩnh vực đầu tư (purchases) . Nó có thể chứa mối quan hệ mỗi dòng investors table tương ứng mỗi dòng của purchases . . Bởi vì dataset có nhiều ngăn với nhiều tables tách rời nhau và các thông tin về mối quan hệ giữa các table với nhau . Vì vậy cấu trúc dữ liệu nhiều hơn recordset và chứa các mối quan hệ trên tables với nhau . 3.Sự ảnh hưởng dữ liệu và con trỏ . . Trong ADO ta có thể duyệt liên tục các dòng của recordset ta dùng phương thức ADO MoveNext .Trong ADO.NET, các dòng được thể hiện như một collection. Vì vậy, ta có thể sử dụng vòng lặp thông qua một table như là thông qua một collection, hoặc là truy cập trực tiếp các dòng thông qua số thứ tự hoặc khoá chính. Đối tượng DataRelation chứa thông tin chính và chi tiết của một record và cung cấp phương thức cho phép truy xuất record quan hệ với các record mà ta đang thao tác. . Con trỏ là một phần tử của database điều khiển hoạt động của record ,khả năng update dữ liệu và xem xét sự chuyển đồi dữ liệu bởi các user khác nhau .ADO.NET không có đối tượng con trỏ vốn có,nhưng thay vào đó nó chứa data class cung cấp các phương thức như con trỏ truyền thống. Lý Bình Nguyên 24 8/6/2007
  25. ASP.NET 4.Tối ưu các kết nối mở . . ADO.NET thường mở một connection đủ để thực thi một thao tác trên database, ví dụ như select hoặc update sau khi thực thi select hoặc update thì connection tự ngắt , ta có thể đọc các dòng vào dataset và thao tác trên nó mà không cần giữ kết nối đến data source.Trong ADO, recordset có thể cung cấp ngắt kết nối ,nhưng ADO được thiết kế chính cho mục đích kết nối liên tục. . Một khác biệt quan trọng việc xử lý disconnected trong ADO và ADO.NET . Trong ADO, bạn giao tiếp với cơ sở dữ liệu bằng cách thực hiện cuộc gọi đến Ole Db Provider. Trong ADO.NET, bạn giao tiếp với cơ sở dữ liệu thông qua một DataAdapter(OleDbDataAdapter hay SqlDataAdapter), nó thực hiện việc gọi đến Ole Db provider hay APIs (được cung cấp bởi nguồn dữ liệu cơ bản). Sự khác nhua quan trọng là trong ADO.NET, data adapter cho phép bạn điều khiển cách thay đổi trên dataset được chuyển xuống cơ sở dữ liệu. 5.Chia sẻ dữ liệu giữa các ứng dụng . . Việc truyền một ADO.NET Dataset giữa các ứng dụng thì dễ dàng hơn việc truyền một ADO disconnected recordset. Để chuyển một ADO disconnected recordset từ một thành phần đến một thành phần khác, bạn sử dụng COM marshalling. Để truyền dữ liệu trong ADO.NET, bạn sử dụng một Dataset, nó cũng có thể chuyển một Xml stream. . Việc truyền các file Xml thì thuận lợi hơn truyền COM marshalling.  Nhiều kiểu dữ liệu hơn: COM marshalling giới hạn kiểu dữ liệu, chỉ các kiểu được định nghĩa theo chuẩn của COM. Bởi vì việc truyền của Dataset trong ADO.NET dựa trên khuôn dạng XML, vì thế không giới hạn kiểu dữ liệu  Khả năng thực hiện: Việc truyền một ADO recordset lớn hay một ADO.NET dataset lớn có thể sử dụng tài nguyên mạng, như số lượng dòng dữ liệu. Cả 2 ADO và ADO.NET đều cho phép bạn tối thiểu dữ liệu được truyền. Nhưng ADO.NET cung cấp một khả năng thực hiện thuận lợi hơn, trong ADO.NET không đòi hỏi việc chuyển đổi kiểu dữ liệu. ADO yêu cầu COM marshalling chuyển đổi kiểu dữ liệu cho phù hợp với kiểu dữ liệu của COM.  Vấn đề bức tường lửa: Việc sử dụng ADO.NET sẽ giúp ta dễ dàng trong việc truyền dữ liệu giữa các thành phần Lý Bình Nguyên 25 8/6/2007
  26. ASP.NET B.Cấu trúc của ADO.NET: 1.XML và ADO.NET : ADO.NET kết hợp với sức mạnh của XML để cung cấp truy xuất dữ liệu ngắt đoạn. ADO.NET được thiết kế tay trong tay với lớp XML trong .NET Framework, cả 2 là những thành phần của một kiến trúc đơn. ADO.NET và lớp XML của .NET Framework cùng sử dụng đối tượng Dataset. Dataset có thể được nạp dữ liệu từ nguồn XML, có thể là 1 file XML hay là 1 dòng XML nào đó. 2.ADO.NET Component ADO.NET Components được thiết kế để quản lý việc truy cập dữ liệu từ nguồn dữ liệu. Có 2 thành phần chính trong ADO.NET: Dataset và .NET Data Provider - một tập hợp các thành phần bao gồm các đối tượng Connection, Command, DataReader, DataAdapter. ADO.NET Dataset là thành phần chính của kiến trúc kết nối gián đoạn của ADO.NET. Dataset được thiết kế một cách rõ ràng cho việc truy cập dữ liệu không phụ thuộc vào bất kỳ nguồn dữ liệu nào. Và kết quả là nó có thể sử dụng nhiều nguồn dữ liệu khác nhau. Dataset bao gồm tập hợp một hoặc nhiều đối tượng DataTable được tạo thành từ nhiều dòng và nhiều cột dữ liệu, cũng như các khoá chính, khoá ngoại, các ràng buộc và các mối quan hệ của các đối tượng DataTable. Thành phần chính khác của ADO.NET là .NET Data Provider. Thành phần này được thiết kế cho việc thao tác dữ liệu và chắc chắn, truy cập dữ liệu forward only, read only. Đối tượng Connection cung cấp việc kết nối đến nguồn dữ liệu. Đối tượng command cho phép truy cập các câu lệnh cơ sở dữ liệu để lấy kết quả trả về, dữ liệu thay đổi, thực thi các stored procedure, gửi hoặc nhận thông tin các tham số (parameter). DataReader cung cấp một luồng truy xuất dữ liệu nhanh từ nguồn dữ liệu. Cuối cùng DataAdapter cung cấp một cầu nối giữa đối tượng Dataset và cơ sở dữ liệu. DataAdapter sử dụng đối tượng Command để thực thi các câu lệnh SQL dưới cơ sở dữ liệu để load dữ liệu lên Dataset và cập nhật những thay đổi trên Dataset xuống cơ sở dữ liệu Bạn có thể viết .NET Data Provider bằng bất kỳ nguồn dữ liệu nào. .NET Framework thông qua 2 .NET Data Provider là: SQL Server .NET Data Provider và OLE DB .NET Data Provider. Lý Bình Nguyên 26 8/6/2007
  27. ASP.NET Các thành phần trong kiến trúc của ADO.NET C.Dataset. Đối tượng Dataset là thành phần chính để hổ trợ việc kết nối ngắt đoạn, là kịch bản phân bổ dữ liệu với ADO.NET. Dataset là bộ nhớ tạm, nó là một bản sao dữ liệu mà cung cấp một mô hình lập trình quan hệ nhất quán không quan tâm đến nguồn dữ liệu. DataSet bao gồm tập hợp các đối tượng DataTable mả bạn có thể thiết lập mối quan hệ giữa chúng thông qua đối tượng DataRelation. Bạn cũng có thể làm cho dữ liệu trong DataSet được nhất quán bằng cách sử dụng đối tượng UniqueConstraint và ForeignKeyConstraint . Mô hình đối tuợng Dataset :  Các thành phần của đối tượng DataSet . Public properties Lý Bình Nguyên 27 8/6/2007
  28. ASP.NET Thuộc tính Diễn tả CaseSensitive Thiết lập hay trả về một giá trị cho biết so sánh chuỗi bên trong các đối tượng DataTable có phân biệt hoa thường hay không Container(kế thừa từ Trả về container cho thành phần MarshalByValueComponent) DataSetName Thiết lập hay trả về tên của DataSet hiện hành DefaultViewManager DesignMode EnforceConstraints ExtendedProperties HasErrors Locale Namespace Thiết lập hay trả về namespace của DataSet Prefix Relations Trả về một tập hợp các quan hệ liên kết các bảng(DataTable) trong DataSet và cho phép định hướng từ bảng cha đến bảng con Sites Tables Trả về tập hợp bảng(DataTable) chứa bên trong DataSet . Public methods a. AcceptChanges Đồng ý tất cả những thay đổi làm trên DataSet trước khi AcceptChanges được gọi. Khi AcceptChanges được gọi, các đối tượng DataRow trong chế độ soạn thảo sẽ kết thúc việc soạn thảo. Trạng thái của DataRow cũng được thay đổi. Những dòng đã thêm vào hay đã cập nhật thì không thay đổi, những dòng đã xoá sẽ bị xoá khỏi DataSet. Phương thức AcceptChanges thường được gọi trên một DataTable sau khi bạn thực hiện việc update DataSet sử dụng phương thức dbDataAdapter.Update b.Clear Lý Bình Nguyên 28 8/6/2007
  29. ASP.NET Xoá dữ liệu của DataSet bằng cách xoá tất cả những dòng trong tất cả các bảng của DataSet c.Clone Sao chép cấu trúc của DataSet, bao gồm tất cả các lược đồ DataTable, các quan hệ và các ràng buộc. Không sao chép dữ liệu d. Copy Sao chép cả cấu trúc và dữ liệu của DataSet này e. Dispose Giải phóng tài nguyên hệ thống sử dụng bởi MarshalByValueComponent f. Equals Xác định xem 2 thể hiện của đối tượng có bằng nhau hay không g. GetChanges Trả vể một bản sao của DataSet chứa tất cả những thay đổi đã làm trên DataSet từ khi lần cuối nó được Load hay từ khi AcceptChanges được gọi. Ví dụ sau dùng phương thức GetChanges để tạo một đối tượng DataSet thứ 2 mà sau đó được dùng để cập nhật dữ liệu trên data source h. GetXml Trả về trình bày Xml của dữ liệu được lưu trữ trong DataSet. Phương thức này thường được sử dụng chung với phương thức WriteXml. i.WriteXml Ghi dữ liệu Xml, tuỳ chọn lược đồ từ DataSet. D.NET Data Provider : .Net Data Provider dùng để kết nối đến cơ sở dữ liệu, thực thi những câu lệnh và truy xuất kết quả. Những kết quả đó hoặc được xử lý trực tiếp hoặc được giữ trong ADO.NET DataSet. Có 2 loại .NET Data Provider: Lý Bình Nguyên 29 8/6/2007
  30. ASP.NET  OLEDB Data Provider: sử dụng cho các cơ sở dữ liệu OLEDB như Access, DB2,  SQL Data Provider: sử dụng cho cơ sở dữ liệu SQL Server 7.0 và các phiên bản SQL mới hơn. Mỗi đối tượng của .NET Data Provider cũng chia ra làm 2 loại: như đối tượng connection có OleDbConnection và SqlConnection, đối tượng DataAdapter có OleDbDataAdapter và SqlDataAdapter, đối tượng Command cũng có OleDbCommnad và SqlCommand, đối tượng DataReader cũng có OleDbDataReader và SqlDataReader. OleDb Managed-provider Namespace SqlClient Managed-provider Namespace E.Đối tượng Connection - Thiết lập kết nối đến nguồn dữ liệu - Chuỗi ConnectionString: Lấy hoặc đặt chuỗi dùng để mở một cơ sở dữ liệu SQL Server public void CreateSqlConnection() { //khai báo và khởi tạo một SqlConnection SqlConnection myConnection = new SqlConnection(); // thiết lập chuỗi ConnectionString Lý Bình Nguyên 30 8/6/2007
  31. ASP.NET myConnection.ConnectionString = "user id=sa;password=aU98rrx2;initial catalog=northwind;data source=mySQLServer;Connect Timeout=30"; //Mở kết nối myConnection.Open(); } Các giá trị bên trong chuỗi ConnectionString  User id: account login vào Sql Server  Password hay pwd: password của account đang log on  Initial catalog hay Database: Tên của Database  Data Source | Server | Address | Addr | Network Address: tên thể hiện SQL mà ta sẽ kết nối  Ngoài ra còn các thành phần khác trong chuỗi kết nối như: o Connect Timeout | Connection Timeout:thời gian chờ kết nối o Integrated Security | Trusted_Connection: kết nối bảo mật hay là không bảo mật (true or false) F.DataAdapter 1.Khái niệm DataAdapter trình bày một tập các câu lệnh dữ liệu và một kết nối dữ liệu, DataAdapter dùng để điền dữ liệu vào DataSet và cập nhật dữ liệu vào nguồn dữ liệu. DataAdapter như một cầu nối giữa DataSet và nguồn dữ liệu phục vụ cho việc truy xuất và lưu dữ liệu. DataAdapter dùng phương thức Fill để điền dữ liệu vào DataSet và sử dụng phương thức Update để cập nhật những thay đổi từ DataSet xuống cơ sở dữ liệu. Tuỳ thuộc vào loại dữ liệu nguồn mà bạn sẽ sử dụng loại DataAdapter phù hợp. Có 2 loại DataAdapter: 2.Các thành phần của DataAdapter  Public properties  AcceptChangesDuringFill: Thiết lập hoặc trả về giá trị cho biết phương thức AcceptChanges có được gọi trên DataRow sau khi nó được thêm vào DataTable  Container  ContinueUpdateOnError: thiết lập hay trả về giá trị cho biết có cho phép cập nhật dữ liệu trong khi xảy ra lỗi trên DataRow hay không (True/false)  MisssingMapingAction Lý Bình Nguyên 31 8/6/2007
  32. ASP.NET  Site  TableMapings: Trả về một collection mà cung cấp ánh xạ chính giữa một bảng nguồn và một DataTable  Public methods  CreateObjRef:  Dispose(kế thừa từ đối tượng Component): giải phóng tài nguyên mà đối tượng sử dụng  Equals(kế thừa từ Object):  Fill: Thêm vào hay làm tươi những dòng dữ liệu trong DataSet để hợp với dữ liệu ở cơ sở dữ liệu. Phương thức Fill truy xuất những dòng trong nguồn dữ liệu bằng cách sử dụng câu lệnh Select. Đối tượng Connection kết hợp với câu lệnh Select phải là hợp lệ, nhưng ta không cần phải mở connection, phương thức Fill sẽ tự động mở kết nối nếu kết nối chưa được mở, còn nếu kết nối đã mở thì nó sẽ xác nhận. Sau khi đã Fill, nó sẽ đóng kết nối lại. Nếu data adapter bắt gặp các cột trùng lắp trong khi nạp dữ liệu cho DataTable, nó sẽ sinh ra một chuỗi cột tuần tự, sử dụng columnname1, columnname2, Nếu dữ liệu vào chứa những cột không tên thì các cột này sẽ được đặt vào DataSet theo mẫu column1, column2. Khi nhiều tập kết quả được thêm vào DataSet, mỗi tập kết quả được đặt trong một bảng riêng biệt Bạn có thể dùng phương thức Fill nhiều lần trên cùng một DataTable. Nếu một khoá chính tồn tại, các dòng thêm vào được trộn với những dòng tương thích mà đã tồn tại. Nếu chưa tồn tại khoá chính, những dòng thêm vào được thêm vào cuối của DataTable. G.Đối tượng Command 1 .Định nghĩa Một Data Command chứa một tham chiếu đến một câu lệnh Sql hoặc một Stored procedure mà bạn có thể thực thi trực tiếp. Một Data Command là một thể hiện của class OleDbCommand hoặc class SqlCommand Khi làm việc với Data Commands, bạn có thể thực hiện được một số tác vụ trên ứng dụng của bạn như: Lý Bình Nguyên 32 8/6/2007
  33. ASP.NET  Thực thi câu lệnh Select mà trả về một kết quả, bạn có thể đọc trực tiếp mà bạn không phải load nó lên DataSet. Để đọc, bạn sử dụng một DataReader(OleDbDataReader hoặc là SqlDataReader). Sử dụng đối tượng DataReader giúp ta giảm thiểu bộ nhớ và truy xuất dữ liệu một cách nhanh chóng  Thực thi các câu lệnh định nghĩa cơ sở dữ liệu (DDL) như tạo, cập nhật và xoá bảng, stored procedure và các cấu trúc cơ sở dữ liệu khác(dĩ nhiên là bạn phải có quyền để thực hiện các câu lệnh này)  Thực thi các câu lệnh để lấy thông tin danh mục  Thực thi các câu lệnh Sql động như update, insert hoặc delete, ta không phải update dataset rồi sau đó copy những thay đổi xuống cơ sở dữ liệu  Thực thi các câu lệnh mà trả về giá trị vô hướng (giá trị đơn), như kết quả của chứng thực thể tính dụng hay một giá trị tính toán  Thực thi các câu lệnh mà trả về dữ liệu từ một cơ sở dữ liệu SQL Server(phiên bản 7.0 hay mới hơn) theo dạng Xml. Cách dùng thông thường là thực thi một câu truy vấn và lấy lại dữ liệu theo dạng Xml  Cách Data Command làm việc Các thuộc tính của Data Command chứa tất cả các thông tin cần thiết để thực thi câu lệnh dựa vào cơ sở dữ liệu. Bao gồm:  Connection: Command tham chiếu đến một connection - đối tượng này dùng để giao tiếp với cơ sở dữ liệu.  Name hoặc text của một câu lệnh: chuỗi trình bày câu lệnh Sql hay là tên của một Stored Procedure  Các tham số(parameters): Một câu lệnh có thể yêu cầu bạn truyền giá trị các tham số. Câu lệnh cũng có thể trả về các giá trị. Mỗi câu lệnh có một tập hợp các tham số mà bạn có thể thiết lập hoặc đọc một cách riêng biệt để truyền hoặc nhận dữ liệu.  Nhiều tập kết quả Cách dùng thông thường của data command là trả về một tập kết quả đơn. Tuy nhiên data command có thể thực thi những thủ tục mà trả về nhiều tập kết quả. Ta có thể thực hiện được theo nhiều cách. Thứ nhất data command tham chiếu đến một stored procedure mà stored này trả về nhiều tập kết quả. Thứ hai, command có thể chứa 2 hay Lý Bình Nguyên 33 8/6/2007
  34. ASP.NET nhiều câu lệnh hay tên của stored procedure, trong trường hợp này các câu lệnh hay các thủ tục chạy tuần tự và trả về nhiều tập kết quả Việc trả về nhiều tập kết quả cho phép bạn tối ưu cách sử dùng một kết nối mở đơn của bạn. Thông thường việc sử dụng bao gồm: . Việc chạy nhiều câu truy vấn, mỗi câu truy vấn trả về một tập kết quả riêng biệt . Việc chạy một câu lệnh Update hay Insert theo sau bởi câu lệnh Select  Thực thi data command Sau khi thiết lập các thuộc tính của Data command, bạn có thể thực thi Data command. Data command cung cấp 4 phương thức thực thi. Tuỳ thuộc vào câu lệnh và thủ tục được thực thi, bạn có thể thực thi và trả về:  Tập kết quả: trong trường hợp này bạn đang thực thi một câu lệnh Sql hay một stored procedure mà trả về một hay nhiều mẫu tin. Bạn có thể lấy tập kết quả này bằng cách sử dụng data reader  Đếm những mẫu tin bị ảnh hưởng: tình huống này xảy ra khi bạn thực thi một câu lệnh hay một thủ tục mà cập nhật cơ sở dữ liệu hay làm thay đổi cấu trúc của cơ sở dữ liệu  Giá trị đơn; Thực thi trên câu lệnh hay stored procedure mà thực hiện việc tìm kiếm, tính toán một giá trị thích hợp hay giải quyết một giá trị đơn nào khác  Dữ liệu dưới dạng Xml: Khả năng này chỉ thực hiện được trên Sql Server 7.0 trở về sau  Cách Data Adapter sử dụng Data command Data Adapter sử dụng data command để đọc và ghi cơ sở dữ liệu. Data Adapter có thể chứa 4 đối tượng Data command . Mỗi đối tượng chứa trong một thuộc tính của Data Adapter: SelectCommand, UpdateCommand, InsertCommand, DeleteCommand. Khi bạn sử dụng Data Adapter, nó thực hiện một cách hiệu quả những thao tác tương tự với command. Ví dụ khi bạn gọi phương thức Fill của Adapter, Adapter thực thi data command trong thuộc tính SelectCommand và sử dụng một data Adapter để fill tập kết quả vào table của Dataset mà bạn chỉ ra. Tương tự khi bạn gọi phương thức Update, nó thực thi các câu lệnh thích hợp (trong thuộc tính UpdateCommand, Insertcommand, DeleteCommand) Lý Bình Nguyên 34 8/6/2007
  35. ASP.NET Một điểm quan trọng là Data Adapter được thiết kế sử dụng command để giao tiếp với Dataset. Bằng cách sử dụng Data Command của chính bạn, bạn có thể thực hiện những chức năng tương tự như Data Adapter làm, nhưng khi bạn có nhiều control thì đối tượng command được thực thi khi nào và như thế nào, đặc biệt là điều gì sẽ xảy ra với tập kết quả của command. III.Triển khai một ứng dụng: III.1Mục đích nghiên cứu: Tìm hiểu phương pháp triển khai một ứng dụng Web trong Visual Studio.NET, bao gồm: - Các công cụ hỗ trợ triển khai. - Sử dụng các công cụ đóng gói ứng dụng ASP.NET III.2.Báo cáo chi tiết: -Phương pháp triển khai một ứng dụng trong Visual Studio.NET: 1. Những tính năng cơ bản về triển khai một ứng dụng trong .NET Framework: .NET Framework cung cấp một số tính năng cơ bản để dễ dàng thực thi một ứng dụng. Những tính năng này bao gồm: - Các ứng dụng không tác động Tính năng này cung cấp việc cô lập ứng dụng và vô hiệu hoá sự xung đột DLL - Mặc định là các thành phần riêng: Mặc định, các thành phần được triển khai tới thư mục của ứng dụng và chỉ hiện hữu với ứng dụng đó - Điểu khiển sự chia sẻ code - Version cùng tồn tại: Các version của cùng một thành phần hoặc ứng dụng có thể cùng tồn tại, bạn có thể chọn version để sử dụng - Tái tạo và triển khai bằng XCOPY: Các thành phần tự mô tả và tự chứa đựng có thể được triển khai mà không cần đăng ký registry hay chịu sự phụ thuộc nào - Dễ dàng cập nhật: Admin có thể sử dụng các host, ví dụ như ASP.NET, để cập nhật DLLs, thậm chí các máy tính từ xa. - Tích hợp với Microsoft Windows Installer: Lý Bình Nguyên 35 8/6/2007
  36. ASP.NET - Dễ dàng triển khai: Phân phối phần mềm dễ dàng, bao gồm cả sử dụng Active Directory - Code cục bộ: Định danh dựa trên code hơn là dựa vào user, cách giải quyết được đặt bởi admin. 2. Đóng gói và triển khai ứng dụng . NET Framework:  Đóng gói: .NET Framework cung cấp một số tùy chọn sau cho việc đóng gói ứng dụng: - Assembly đơn hoặc bộ sưu tập các assembly: Với tùy chọn này, việc đóng gói tạo ra file .dll hoặc . exe - Tập tin CAB(cabinet): Tạo thành file nén để giảm thời gian phân phối hoặc download - Gói Microsoft Windows Installer hoặc theo một định dạng installer khác: Tạo thành file .msi để sử dụng trong Windows Installer hoặc một file khác sử dụng bởi một installer nào đó.  Phân phối: .NET Framework cung cấp một số tùy chọn sau cho việc phân phối ứng dụng: - Sử dụng XCOPY hoặc FTP: Bởi vì những ứng dụng Common Language Runtime là tự mô tả và không cần đăng ký registry, bạn có thể sử dụng XCOPY hoặc FTP để copy ứng dụng tới một thư mục thích hợp, và ứng dụng có thể chạy từ thư mục đó. - Sử dụng code download: Nếu bạn phân phối ứng dụng qua Internet, bạn có thể download code vào máy và chạy ứng dụng đó. - Sử dụng các chương trình cài đặt (ví dụ như Windows Installer 2.0): Windows Installer 2.0 có thể cài đặt, sửa chửa, hoặc xoá các assembly của Microsoft .NET Framework ở nơi lưu giữ assembly toàn cục và trong các thư mục riêng. 3.Triển khai ứng dụng: Triển khai là quá trình mà bạn phân phối một ứng dụng hoặc component hoàn chỉnh để cài đặt vào các máy khác.Trước khi bạn triển khai một giải pháp, bạn cần phải cho Visual Studio biết cái gì cần triển khai, nơi triển khai và cách triển khai nó. Bạn làm Lý Bình Nguyên 36 8/6/2007
  37. ASP.NET điềnnày bằng cách thêm một hoặc nhiều dự án triển khai vào trong giải pháp của bạn. Mỗi dự án triển khai chỉ rõ những dòng lệnh để cài đặt các files và components vào một máy. Để phân phối ứng dụng, bạn thường tạo một dự án triển khai cách biệt cho mỗi tầng trong ứng dụng. Ví dụ như một ứng dụng 3 tầng cần 3 dự án triển khai, một cho dữ liệu, một cho bussiness logic và một cho client.  Assemblies: Các components thì được đóng gói trong các assemblies. Assemblies là các khối được xây dựng của các ứng dụng .NET có thể dùng lại, có thể thay đổi phiên bản, và tự mô tả. Một assembly là một collection của các kiểu(type) và resource mà chúng ta xây dựng để làm việc với nhau và tạo thành các nhóm chức năng. Một assembly cung cấp Common Language Runtime với các thông tin cần để nhận ra sự thi hành các kiểu. Một assembly đơn giản nhất là một bộ thực thi đơn chứa tất cả các thông tin cần thiết cho việc triển khai và phiên bản ứng dụng, một kiểu thì không tồn tại bên ngoài bối cảnh của 1 assembly. IV. Triển khai ứng các ứng dụng ứng WEB Projects: IV.1.Làm việc với WEB Projects: Các ứng dụng Web ASP.NET và các dịch vụ Web XML cho phép bạn tạo ra các ứng dụng để nâng cao năng lực của World Wide Web. Các loại dự án này được chạy trên một Web Server, chuyển và nhận thông tin thông qua các giao thức chuẩn như HTTP và XML. Sử dụng Web Projects, bạn có thể tạo được mọi thứ từ Web site truyền thống phục vụ những trang HTML để nâng cao tính năng của các ứng dụng kinh doanh chạy trên mạng intranet hoặc Internet Visual Basic và Visual C# bao gồm các template cho phép bạn tạo ra 3 loại dự án Web- based: - ASP.NET Web Application template: Lập trình ứng dụng Web với các designer để tạo ra các Web Forms page kết hợp các tính năng của ASP.NET - ASP.NET Web Server template: Lý Bình Nguyên 37 8/6/2007
  38. ASP.NET Một ứng dụng cung cấp khả năng trao đổi thông báo giữa các trang Web sử dụng các giao thức như HTTP, XML, XSL, SOAP và WSDL. - Empty Web Project template: Một ứng dụng Web rỗng mà bạn có thể tùy chỉnh IV.2.Biên dịch và triển khai ứng dụng WEB Projects: Visual Studio cung cấp một cơ cấu đơn giản để triển khai các ứng dụng tới các máy cục bộ hoặc các máy remote. Bạn có thể cài đặt ứng dụng bằng cách đơn giản là sao chép chúng vào các thư mục ứng dụng đã được chỉ rõ hoặc bằng cách sử dụng nhiều dự án triển khai chuyên dụng và có thể cấu hình được Khi sử dụng Visual Studio.Net để xây dựng các ứng dụng Web ASP.NET, bạn sử dụng một mô hình triển khai tổng quát, dự án sẽ được biên dịch và các file kết quả sẽ được triển khai. Web Forms code trong class file (.aspx.vb hoặc là . aspx.cs) được biên dịch vào một file .dll. File này sau đó sẽ triển khai tới Server mà không có source code nào. Khi một yêu cầu trong trang được nhận, file .dll sẽ được thực thi. Biên dịch và triển khai: Giả sử bạn có một ứng dụng Web ASP.NET đơn giản gọi là WebApplication1 bao gồm: - Một Web Forms page tên là WebForm1.aspx - Một số module thêm vào chứa business logic gọi là BusinessLogic1(.vb hoặc .cs) và BusinessLogic2(.vb hoặc .cs). Sau khi bạn hiệu chỉnh và biên dịch dự án: - Tất cả các file trong dự án được lưu lại từ lần build cuối cùng. - File WebForm1.aspx và các file mặc định của dự án được copy vào Web server. File Class WebForm1(.aspx.vb hoặc .aspx.cs), component BusinessLogic1 và component BusinessLogic2 được biên dịch trong file .dll, file này được copy mặc định vào thư mục \Bin của thư mục ảo IV.3.Triển khai một ứng dụng ASP.NET: Lý Bình Nguyên 38 8/6/2007
  39. ASP.NET - Đóng gói thành file chạy .exe hoặc file .dll - Phân phối: Sử dụng XCOPY hoặc FTP Bạn có thể sử dụng XCOPY hoặc FTP để triển khai một ứng dụng ASP.NET tới server. Bạn có thể chạy một phiên bản của ứng dụng bên cạnh phiên bản khác, bạn có thể update ứng dụng mà không phải đóng ứng dụng. Common Laguage Runtime chạy một ứng dụng đồng thời với các ứng dụng khác mà không có sự xung đột về DLL Triển khai các ứng dụng XML Web Services: Triển khai một ứng dụng XML Web Service bao gồm việc sao chép file .asmx và các assembly khác được sử dụng bởi XML Web Service (nhưng không phải là thành phần của .NET Framework) tới Web server.  Các mục được triển khai tới Web Server khi công bố một XML Web Service: M thư mục M mô tả Thư mục ứng dụng Web Thư mục gốc của XML Web Service. Các file còn lại được đặt trong thư mục này. Thư mục này có thể Gõ dấu là một ứng dụng Web IIS. Tập tin URL để client gọi XML Web Service .asmx Tập tin Cơ chế discovery của XML Web Service(file .disco này là tùy chọn, không được tự động tạo ra bởi XML Web Service) Tập tin Web.config (Tùy chọn) Nếu bạn muốn ghi đè các thiểt lập mặc định vể cấu hình, bạn có thể bao gồm file Web.config Thư mục \Bin Lưu giữ các file nhị phân của XML Web Service. Nếu lớp XML Web Service không có cùng file .asmx thì assembly chứa lớp phải Lý Bình Nguyên 39 8/6/2007
  40. ASP.NET là thư mục \Bin a. Install ứng dụng vào chính máy của bạn: -Chọn project DBCustomAction Installer trong Solution Explorer. Trong menu Project, chọn Install. b. Triển khai ứng dụng ở một máy khác: -Trong Windows Explorer, tìm tới thư mục của project và tìm file đã cài đặt -Copy file DBCustomAction Installer.msi và các file, thư mục con khác vào một máy khác -Khi đã copy xong, chạy file Setup.exe ở máy vừa được chép vào c. Uninstall ứng dụng: -Mở Control Panel Add/Remove Programs -Trong hộp thoại Add/Remove Programs, chọn DBCustomAction Installer và click Remove. (Để Uninstall trong chính máy của bạn, trong menu Project, chọn Uninstall). Lý Bình Nguyên 40 8/6/2007