Ràng buộc dữ liệu với DataGrid server control

Một phần của tài liệu Tổng quát về .NET Framework và ASP.NET (Trang 54)

DataGrid server control là một điều khiển linh hoạt trong biểu diễn dữ liệu dạng bảng hỗ trợ việc lựa chọn, sắp xếp và hiệu chỉnh dữ liệụ Theo mặc định DataGrid tạo các cột cho mỗi một trờng trong bảng cơ sở dữ liệu

riêng rẽ. Ví dụ sau đây thể hiện tên, địa chỉ, số điện thoại và một vài thông tin khác: [Visual Basic] <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.DatạSqlClient" %> <html>

<script language="VB" runat="server">

Sub Page_Load(Src As Object, e As EventArgs) Dim myConnection As SqlConnection

Dim myCommand As SqlDataAdapter

' Create a connection to the "pubs" SQL database located on the

' local computer.

myConnection = New SqlConnection("server=localhost;" _ & "database=pubs;Trusted_Connection=Yes")

' Connect to the SQL database using a SQL SELECT query to get all

' the data from the "Authors" tablẹ

myCommand = new SqlDataAdapter("SELECT * FROM Authors", _ myConnection)

' Create and fill a DataSet. Dim ds As DataSet = new DataSet() myCommand.Fill(ds)

' Bind MyDataGrid to the DataSet. MyDataGrid is the ' ID for the DataGrid control in the HTML section. MyDataGrid.DataSource = ds MyDataGrid.DataBind() End Sub </script> <body> <h3><font face="Verdana">

Simple Select to a DataGrid Control. </font></h3>

<ASP:DataGrid id="MyDataGrid" runat="server" Width="700" BackColor="#ccccff" BorderColor="black" ShowFooter="false" CellPađing=3 CellSpacing="0" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#aaaađ" EnableViewState="false" /> </body> </html> 2.7. Dịch vụ Web

Trờn nhiều khớa cạnh, Internet ngày nay vẫn cũn phản chiếu thế giới mainframe cũ kỹ. Đú là mụ hỡnh tớnh toỏn tập trung trờn server, với trỡnh duyệt đúng vai trũ của dumb terminal. Rất nhiều thụng tin mà doanh nghiệp của ta cần đến bị khoỏ chặt trong cỏc cơ sở dữ liệu tập trung, đưa ra từng trang một cho từng người sử dụng riờng lẻ. Tệ hơn nữa, cỏc trang Web đơn thuần chỉ là một "bức tranh" của dữ liệu, chứ khụng phải là bản thõn dữ liệụ Điều này bắt buộc cỏc nhà lập trỡnh phải "cắt màn hỡnh" để lấy được thụng tin.Và việc tớch hợp dữ liệu bờn dưới với dữ liệu sẵn cú của doanh nghiệp của ta -- chưa tớnh đến dữ liệu của cỏc đối tỏc của ta -- sẽ rất tốn kộm và là một thử thỏch đầy gay cấn.

Nguyờn nhõn của tỡnh trạng đú là bởi vỡ ngày nay cỏc ứng dụng và web site độc lập đó tạo ra cỏc ốc đảo của cỏc chức năng và dữ liệụ Ta phải di chuyển một cỏch thủ cụng giữa cỏc trang web, thiết bị và ứng dụng, mỗi lần chuyển lại phải một lần đăng nhập vào hệ thống, và rất ớt khi cú khả năng lấy dữ liệu ra mang theo tạ Ta phải thường xuyờn kiểm tra ứng dụng nào, thiết bị nào hoặc web site nào cung cấp cho ta cỏc mức độ truy nhập nào đến dữ liệụ Cỏc nhiệm vụ nghe cú vẻ đơn giản -- chẳng hạn như sắp xếp một cuộc họp với cỏc đồng nghiệp từ cỏc cụng ty đối tỏc và tự động cập nhật lịch của tất cả những người tham dự -- thực sự là một cơn ỏc mộng.

Giải quyết những vấn đề đú thực sự là thử thỏch lớn nhất của thế hệ kế tiếp của Internet. Trung tõm của cỏc giải phỏp sẽ là XML ( eXtensible Markup Language, ngụn ngữ đỏnh dấu cú thể mở rộng). Với tư cỏch là một chuẩn cụng nghiệp mở được điều hành bởi World Wide Web Consortium, XML cho phộp cỏc nhà lập trỡnh mụ tả dữ liệu cho việc trao đổi giữa cỏc mỏy PC, cỏc thiết bị thụng minh , ứng dụng và cỏc web sitẹ Bởi vỡ XML tỏch biệt dữ liệu bờn dưới ra khỏi phần hiển thị, bản thõn dữ liệu được "giải phúng" để cú thể được tổ chức, lập trỡnh, biờn tập lại và đem trao đổi giữa cỏc web site, ứng dụng và thiết bị. XML là ngụn ngữ chung cho thời đại Internet. Giống như cỏc trang web đó

làm một cuộc cỏch mạng trong cỏch thức con người núi chuyện với ứng dụng, XML đó làm thay đổi cỏch thức cỏc ứng dụng núi chuyện với nhaụ

Khi cỏc nhà lập trỡnh trở nờn quen thuộc với XML, họ sẽ đi xa hơn việc chỉ dựng XML để biểu diễn dữ liệụ Với sự trợ giỳp của cỏc cụng nghệ dựa trờn XML như SOAP (cho phộp cỏc ứng dụng tương tỏc với nhau thụng qua cỏc giao thức Internet chuẩn) và UĐI (cung cấp cho cỏc doanh nghiệp một phương thức chuẩn để mụ tả cỏc dịch vụ của họ cũng như cỏch thức kết nối tới cỏc dịch vụ này), cỏc nhà lập trỡnh đang tạo ra một dũng phần mềm mới, sử dụng XML để cung cấp cỏc dịch vụ web (Web services)

V.7.2 Vậy dịch vụ Web là gì?

Một dịch vụ Web XML là một thực thể lập trình đợc cung cấp thành phần đặc biệt về chức năng, nh logic của ứng dụng và có thể truy cập đợc đến bất kỳ hệ thống tiềm năng nào đang sử dụng các chuẩn Internet nh XML và HTTP. Một dịch vụ Web XML có thể sử dụng nh là một ứng dụng đơn lẻ hay đợc mở rộng cho các ứng dụng khác qua Internet, bởi vì sự truy cập này sử dụng một giao diện chuẩn chung. Do đó dịch vụ Web cho phép các hệ thống hỗn tạp làm việc với nhau nh một đơn thể tính toán.

Dịch vụ Web sử dụng thông điệp XML nh một phơng tiện cơ bản của việc truyền thông dữ liệu, làm cầu nối hệ thống khác nhau đang tồn tại có sử dụng các mô hình đối tợng không phù hợp, các hệ điều hành và ngôn ngữ lập trình khác nhaụ Các nhà phát triển có thể tạo các ứng dụng đợc dệt thành từ nhiều dịch vụ Web khác nhau theo cách mà họ đã làm khi sử dụng các thành phần trong các ch- ơng trình phân tán (distributed application).

Một đặc điểm cốt lõi của của dich vị Web là độ trừu tợng cao tồn tại giữa sự thực thi và sự tiêu thụ của một dịch vụ. Bằng cách sử dụng XML nh cơ chế mà mà dịch vụ đợc tạo và truy cập, cả hai client và dịch vụ Web cung cấp

Cỏc dịch vụ web này cú thể lập trỡnh được và sử dụng lại được, giống như cỏc component, chỉ cú điểm khỏc là chỳng cú thể truy nhập được từ bất kỳ đõu trờn thế giới thụng qua Internet. Cỏc chương trỡnh sử dụng mụ hỡnh này sẽ chạy xuyờn suốt qua nhiều web site, mang theo thụng tin và dịch vụ từ cỏc web site này, kết hợp lại rồi kết xuất thụng tin ra bất kỳ một thiết bị nàọ

Cỏc doanh nghiệp và khỏch hàng được lợi gỡ từ điều nàỵ Bởi vỡ dịch vụ web phỏ vỡ ranh giới giữa Internet, cỏc ứng dụng đơn lẻ và cỏc loại thiết bị tớnh toỏn, cho phộp cỏc doanh nghiệp tương tỏc với nhau dễ dàng hơn nhằm cung cấp cỏc giải phỏp tớch hợp đa dạng. Cỏc dịch vụ này cho phộp khỏch hàng truy xuất thụng tin mọi lỳc, mọi nơi và trờn mọi thiết bị.

Sức mạnh của cỏc dịch vụ web thực sự là kỳ diệụ Một cụng ty cung cấp dịch vụ thanh toỏn điện tử trực tuyến cú thể chủ động giới thiệu cỏc dịch vụ web của mỡnh tới cỏc đối tỏc mà khụng cần quan tõm tới platform họ đang sử dụng. Một hóng hàng khụng cú thể kết nối hệ thống đặt chỗ trực tuyến của mỡnh tới hệ thống của một đối tỏc cho thuờ xe ụ tụ, nhờ đú mà cựng một lỳc khỏch cú thể đặt chỗ trờn cả ụ tụ và mỏy baỵ Một cụng ty đấu giỏ trực tuyến cú thể thụng bỏo cỏc nhà thầu khi nào họ thua hoặc thắng thầu, hoặc cú thể cộng tỏc với cỏc hóng khỏc để cung cấp cỏc dịch vụ vận chuyển và thanh toỏn. Cỏc dịch vụ web giỳp cho doanh nghiệp của ta cú thể vượt ra ngoài biờn giới của chớnh nú.

Cỏc dịch vụ web đang trờn đà đi lờn với cỏc nhà lập trỡnh như là một thế hệ kế tiếp của cỏc hệ thống tớnh toỏn dựa trờn Internet. Đõy chớnh là thời điểm để cung cấp một platform cho phộp đơn giản hoỏ quỏ trỡnh xõy dựng cỏc giải phỏp và một nền tảng tin cậy cho tớch hợp cỏc ứng dụng. Một platform như vậy cần phải được dựa trờn một chuẩn mở để cú thể làm việc với cỏc ngụn ngữ lập trỡnh, hệ điều hành và ứng dụng. Và nú cần kết hợp sức mạnh của PC, cỏc thiết bị thụng minh và sự phong phỳ của Internet.

Đối tợng sử dụng dịch vụ consumer, thờng là trình duyệt phía máy khách gửi yêu cầu đến đối tợng mô tả và cung cấp thông tin về dịch vụ Web (discover service). Một khi đã có đợc thông tin về dịch vụ lời triệu gọi sẽ đợc gửi đến nơi cung cấp dịch vụ (provider). Quá trình sẽ diễn ra ngay trên đối tợng cung cấp dịch vụ và chuyển hồi đáp về phía trình khách theo yêu cầu đã đa rạ

2.8 ASP.NET với dịch vụ Web.

2.8.1 Định nghĩa một dịch vụ Web. (adsbygoogle = window.adsbygoogle || []).push({});

Khi ta tạo ra một dịch vụ Web trong ASP.NET , ta cần phải đặt chỉ thị @WebService tại phần trên cùng của file text với phần mở rộng là .asmx. Sự có mặt của file .asmx và chỉ thị @WebService có liên quan đến địa chỉ URL của dịch vụ Web với thành phần thực thi của dịch vụ Web. Tiếp đó ta tạo lớp dịch vụ định nghĩa các phơng thức và thuộc tính, kiểu dữ liệu để thể hiện cho khách hàng của WebServicẹ Cuối cùng ta thêm vào logic nghiệp vụ cho những phơng thức này để yêu cầu dịch vụ Web xử lý chúng. Lớp XML Web Service mà ta đã định nghĩa có thể đặt một cách trực tiếp trong file .asmx hay ở trong một file khác riêng biệt. Nếu ta sử dụng một file riêng biệt, nó phải đợc biên dịch

Để định nghĩa một dịch vụ Web mà thành phần thực thi của nó đợc đặt trên cùng một trang.

Thêm vào chỉ thị thức thi ở phần trên cùng của file .asmx chỉ định lớp thực thi của nó và tên của ngôn ngữ lập trình đợc dùng.

Thuộc tính Class có thể đợc đặt cho một class ở trong cùng một file assembly với chỉ thị WebService hay tới một class nằm trong một file asembly riêng rẽ, nó phải đợc dặt vào th mục /BIN trong ứng dụng Web nơi chứa dịch vụ Web. Thuộc tính Language chỉ định ngôn ngữ lập trình nào đợc sử dụng C#, VB, JS.

<%@ WebService Language="C#" Class="MyMath" %> using System.Web.Services;

public class MyMath { [ WebMethod ]

public int Ađ(int num1, int num2) { return num1+num2;

} }

Để định nghĩa một dịch vụ Web mà phần thực thi của nó nằm trong một file assemblỵ

Tại chỉ thị @Webservice, đặt thuộc tính class cho một class đã có trong th mục /BIN của ứng dụng Web servicẹ

[C#] <%@ WebService Language="C#" Class="MyNamẹMyWebService,MyAssembly" %> [Visual Basic] <%@ WebService Language="VB" Class="MyNamẹMyWebService,MyAssembly" %> 2.8.2 Định nghĩa một phơng thức cho dịch vụ Web

Các phơng thức của một lớp thực thi trong một dịch vụ Web không có khả năng tự động truyền thông qua Web, nhng với XML Web Server đợc tạo, rất đơn giản để thêm khả năng này vào bằng cách thiết lập thuộc tính cho WebMethod là method công cộng, Phơng thức mà WebService sử dụng đợc gọi là phơng thức dịch vụ Web.

Để định nghĩa một phơng thức dịch vụ Web

1. Định nghĩa dịch vụ Web XML, thêm vào chỉ thị WebServicẹ 2. Thêm một phơng thức công cộng cho lớp thực thi của dịch vụ Web.

3. Đặt thuộc tính của dịch vụ Web đó là public

Ví dụ sau tạo một hàm có thuộc tính public trong dịch vụ Web: <%@ WebService Language="VB" Class="MathService" %> Imports System.Web.Services

Imports System Class MathService

<WebMethod()> public Function Ađ(int1 As Integer, int2 As Integer) As Integer

return(int1 + int2) End Function

End Class

2.8.3 Sử dụng dịch vụ Web

Trang .asmx tơng tự nh các trang aspx, ta có thể đặt chúng ở bất kỳ đâu trong ứng dụng của ta và triệu gội thông qua địa chỉ URL. Tuy nhiên, trang .asmx đợc trình chủ xem là dịch vụ Web và thực hiện triệu gọi theo cách đặc biệt. Kho ta gõ địa chỉ URL trỏ đến trang asmx, trình chủ sẽ duyệt qua đối tợng, truy tìm các ph- ơmg thức có chỉ dẫn <WebMethod> và tạo trang tài liệu phiá trình duyệt cho phép truyền tham sốvà kết quả trả về củ phơng thức gọi .

Trình chủ đủ thông minh để nhận biết đợc tên phơng thức và tham số của đối tợng. Ta nhập dữ liệu vào hai ô TextBox cho tham số. Khi nhấn nút Invoke đợc kích hoạt, thao tác submit diễn rạ Giá trị tham số a,b sẽ đợc chuyển về trình chủ. Phơng thức Ađ() đợc gọi trên server, sau đó kết quả đợc đóng gói và trả lại trình duyệt trên máy khách.

2.9 Bảo mật ứng dụng Web

Một trong những khía cạnh quan trọng trong lập trình Web là khả năng xác định ngời dùng và điều khiển việc truy cập tài nguyên. Hoạt động để xác định yêu cầu này đợc gọi chứng thực quyền (authentication). Nói chung, ngời phải đa ra những điều kiện, nh tên/password để đợc chứng thực qyuền. Mỗi khi đợc chứng nhận, nó xác định nguồn tài nguyên đợc phép truy cập. Quá trình này đợc gọi là đ- ợc phép truy cập (authorization). ASP.NET liên kết với IIS để cung cấp dịch vụ chứng nhận thực quyền và đợc phép truy cập cho ứng dụng. Hai bớc này đợc đặt trong file cấu hình config.web

<configuration> <system.web>

<authentication mode="Forms">

<forms name=".ASPXUSERDEMO" loginUrl="login.aspx" protection="All" timeout="60" /> </authentication> <authorization> <deny users="?" /> </authorization> <globalization requestEncoding="UTF-8" responseEncoding="UTF-8" /> </system.web> </configuration>

Trong cấu hình trên, chúng ta chỉ định việc kiểm tra chứng thực thông qua cơ chế Form=”.ASPXUSERDEMO” là tên của Cookies dùng để kiểm trạ Loginurl chỉ

định tên trang để nhập vào thông tin thông tin về tài khoản. ở đây tất cả các tài nguyên và trang truy nhập không hợp lệ sẽ đợc chuyển hớng về trang login.aspx: (adsbygoogle = window.adsbygoogle || []).push({});

<%@ Import Namespace="System.Web.Security " %>

<html>

<script language="VB" runat=server>

Sub Login_Click(Src As Object, E As EventArgs) If UserEmail.Value = "jdoe@somewherẹcom" And UserPass.Value = "password"

FormsAuthentication.RedirectFromLoginPage(UserEmail. Value, PersistCookiẹChecked)

Else

Msg.Text = "Invalid Credentials: Please try again" End If

End Sub </script> <body>

<form runat=server>

<h3><font face="Verdana">Login Page</font></h3> <table>

<tr>

<td>Email:</td>

<td><input id="UserEmail" type="text" runat=server/></ td>

<td><ASP:RequiredFieldValidator

ControlToValidate="UserEmail" Display="Static" ErrorMessage="*" runat=server/></td>

</tr> <tr>

<td>Password:</td>

<td><input id="UserPass" type=password runat=server/></td>

<td><ASP:RequiredFieldValidator

ControlToValidate="UserPass" Display="Static" ErrorMessage="*" runat=server/></td>

</tr> <tr>

<td>Persistent Cookie:</td>

<td><ASP:CheckBox id=PersistCookie runat="server" /> </td>

<td></td> </tr>

</table>

<asp:button text="Login" OnClick="Login_Click" runat=server/>

<p>

<asp:Label id="Msg" ForeColor="red" Font-Name="Verdana" Font-Size="10" runat=server />

</body> </html>

Xây dựng một trang default.aspx (adsbygoogle = window.adsbygoogle || []).push({});

<%@ Import Namespace="System.Web.Security " %>

<html>

<script language="VB" runat=server>

Sub Page_Load(Src As Object, E As EventArgs) WelcomẹText = "Hello, " + User.IdentitỵName End Sub

Sub Signout_Click(Src As Object, E As EventArgs) FormsAuthentication.SignOut()

ResponsẹRedirect("login.aspx") End Sub

</script> <body>

<h3><font face="Verdana">Using Cookie Authentication</font></h3>

<form runat=server>

<h3><asp:label id="Welcome" runat=server/></h3> <asp:button text="Signout" OnClick="Signout_Click" runat=server/>

</form> </body> </html>

Bây giờ ta đặt cả 3 file trên vào trong một th mục của một ứng dụng Web. Tất cả ngời dùng vô danh đều không có quyền truy xuất trong trang tài nguyên default.aspx và đợc chuyển đến trang login để nhập tên và mật khẩu đăng nhập. Nếu tài khoản hợp lệ ta sẽ xem đợc nội dung trang default.aspx.

Cấu hình trên chỉ áp dụng cho những tài nguyên ASP.NET ( đã đợc đăng ký với Aspnet_isapịdll). Cấu hình ASP.NET không cung cấp quyền chứng thực cho những tài nguyên không phải Aspnet_isapịdll, vì thế những file TXT, HTML, GIF, JPEG, ASP, và các loại file khác vẫn có thể đợc truy cập cho tất cả ngời dùng có quyền của IIS. Ta có thể sử dụng thẻ <location> </location> để xác định một file hay một th mục cần áp dụng cấu hình nàỵ

Ngoài kiểu bảo mật trên ASP.NET còn cho phép bảo mật theo kiểu Passport, một dịch vụ chứng thực của Microsoft.

Phần III: Xây dựng một ứng dụng với ASP.NET

3.1 Mục đích:

ứng dụng sau đây chỉ là một ví dụ với ASP.NET thể hiện một ý tởng riêng do đó cần rất nhiều sửa đổi để có thể nâng lên thành ứng dụng kinh doanh. Cybermaket là ứng dụng Web phục vụ cho việc mua bán đồ cũ, là trung gian để ngời dùng rao vặt các thông tin về đồ cũ của mình. Các mặt hàng cần bán và mua đều đợc đa lên mạng giúp mọi ngời dễ dàng tìm đợc mặt hàng mình mong muốn và có thể mở rộng tuỳ thuộc vào nhu cầu của khách hàng ( có sự kiểm soát của ng-

Một phần của tài liệu Tổng quát về .NET Framework và ASP.NET (Trang 54)