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:
<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 />
</form> </body> </html>
Xây dựng một trang default.aspx
<%@ 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.
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- ời quản trị ). Việc tham gia của khách hàng là hoàn toàn miễn phí. Chỉ cần đăng ký với Web site một account là ngời dùng có thể đa lên mạng thông tin của mình, tuy nhiên những thông tin mà họ post lên cần sự phê duyệt của nhà quản trị trớc khi đợc thể hiện cho mọi ngờị Web site còn cung cấp một chức năng gửi th đơn giản giúp mọi ngời dễ dàng liên lạc với nhau, trao đổi thông tin về sản phẩm của mình. Web site chỉ giúp mọi ngời trao đổi thông tin về đồ cũ các hoạt động liên quan đến giá cả và giao dịch thanh toán đều không thực hiện ở đây hay ở phía nhà quản trị. Kinh phí hoạt động của Web site dựa vào các hoạt quảng cáo, và các trung gian dài hạn.
ứng dụng sẽ đợc cài đặt và đợc phát triển trên các nền tảng và công cụ sau: - Hệ điều hành: Microsoft Windows 2000 Professional.
- Microsoft Internet Explorer 6.0
- Microsoft Data Access Controls (MDAC) 2.7 - Microsoft .NET Framework SDK
- Microsoft Internet Information Services (IIS) 5.0 - Visual Studio .NET Enterprise
- Oracle 9i Enterprise
Quá trình hoạt động kể từ khi ngời dùng bắt đầu gõ dòng địa chỉ đến Websitẹ Trang default.aspx mở ra, trang này sẽ giới thiệu về các danh mục mặt
hàng đợc sắp xếp theo 2 Categories và SubCategories, cùng với một mặt hàng đợc nhiều ngời quan tâm nhất trong tuần.
Các subcategories là các danh mục đợc phân nhỏ trong một Category vídụ một Category về máy tính và mạng có thể đợc phân nhỏ hơn thành (máy desktop, máy Laptop,Hub, Switch..).
Các Categories và SubCategories đợc sắp xếp dới dạng một menu Popup. Trong đó menu chính là các danh mục Categorỵ Mỗi khi di chuyển chuột qua phần này các SubCategories trong đó đợc hiện ra ở phía bên tráị
Menu này giúp ngời dùng dễ dàng chọn đợc danh mục mặt hàng mà họ quan tâm, menu này đợc thiết kế để giao tiếp với cơ sở dữ liệu nên luôn có đủ mọi mặt hàng hiện có.
Sau khi chọn đợc danh mục mặt hàng, trang ProductList.aspx mở ra hiển thị danh sách các loại mặt hàng theo chủng loại mặt hàng vừa chọn. Thông tin về mặt hàng trong trang này gồm có ảnh,tên mặt hàng, giá, ngời chủ của nó hoặc ngời cần mua và tổng số ngời đã xem một cách chi tiết mặt hàng nàỵ
Trong trang này còn có các hyperlink để ngời dùng phân loại mặt hàng theo mục đích của nó ( để bán, cần mua) hay xem cả hai
Nếu danh sách mặt hàng trong đây lớn hơn 6 thì danh sách này đợc phân trang. Hai nút link Prev<<| và |>>Next giúp di chuyển tới trang trớc và trang kế tiếp trong danh sách nàỵ
Khi cần liên lạc với ngời chủ của mặt hàng này, ngời dùng có thể click vào tên của ngời chủ tơng ứng với mặt hàng đó để đợc đa đến trang có chức năng gửi th.
Nếu muốn xem chi tiết các thông tin về một mặt hàng, ngời dùng có thể click vào ảnh của mặt hàng đó.
Trang Productdetails là trang đa ra toàn bộ thông tin thuộc tính về mặt hàng đợc chọn và các thông tin về địa chỉ, điện thoại, email của ngời sở hữu hay ngời cần mua mặt hàng nàỵ
Khi muốn liên hệ (qua email) ngời dùng click vào địa chỉ email của ngời chủ trong đó. Trang sendemail.aspx mở ra giúp ngời dùng soạn một bức th để liên hệ.
Một số nội dung liên quan đến mặt hàng và ngời dùng nh tên ngơì gửi, tên ngời nhận, tên mặt hàng đã đợc định dạng sẵn, nếu thích ngời dùng có thể sửa đổi lại nội dung
Để đăng ký một mặt hàng mới cho mọi ngời ngời dùng có thể vào trang RegisterProduct.aspx qua link trên banner. Tuy nhiên để đăng ký đợc mặt hàng ngời dùng cần phải có một account và đã thực hiện đăng nhập tại trang login.aspx. Nếu là ngời dùng mới lần đầu vào Web họ cần phải đăng ký với Web site
Tơng tự ngời mua cũng cần làm những thao tác nh trên để đa đợc thông tin về sản phẩm cần mua của mình lên mạng tuy nhiên ngời mua không cần phải đang kí một cách chi tiết nh ngời bán, nếu có ngời bán có sản phẩm phù hợp thì họ cũng nhận đợcc một email có thông tin về ngời muạ
Tất cả các thông tin tìm đợc ngoài việc gửi qua email đều đựơc lu lại vào tài khoản của khách hàng. Để sau lần sau khi đăng nhập ngời dùng có thể xem lại các mặt hàng tìm thấy đợc.
Làm việc với Cơ sở dữ liệu là một hoạt động không thể thiếu của mọi ngôn ngữ lập trình một ứng dụng Web hoạt động hiệu quả phụ thuộc rất nhiều vào Cơ sở dữ liệu đợc thiết kế. Trong ứng dụng mà chúng ta sẽ xây dựng đợc sử dụng với hệ quản trị CSLD nổi tiếng Oracle với phiên bản mới nhất Oracle 9i Enterprisẹ Cần rất nhiều thời gian để nói về hệ quản trị CSDL này do đó ở đây với lợi ích to lớn mà nó đem lại, ở đây chúng ta chỉ xét đến việc thiết kế một cơ sở dữ liệu theo kiểu Oraclẹ
Việc phát triển một cơ sở dữ liệu hiệu quả bao gồm một số bớc. Cũng nh tất cả các ứng dụng quá trình bắt đầu yêu cầu phân tích. Theo thuật ngữ Cở sở dữ liệu quan hệ, “pha” (phase) này trả lời những câu hỏi nh các nguyên tố dữ liệu phải lu trữ gì? ai sẽ truy xuất chúng, truy xuất nh thế nàọ
Phase thứ hai dùng để định nghĩa dữ liệu logic. Phase này không quan tâm đến dữ liệu đợc lu trữ vật lý nh thế nào mà thông tin đợc thể hiện một cách logic nh thế nàọ Yêu cầu đợc chuyển dịch thành một mô hình cung cấp một mức trừu t- ợng hoá từ cơ sở dữ liệu vật lý, biểu diễn dữ liệu tạo thuật ngữ các thực thể nghiệp vụ và các quan hệ hơn là theo thuật ngữ các bảng và cột.
Phase thiết kế là phase cuối cùng trong đó các nguyên tố dữ liệu riêng biệt đ- ợc cho các thuộc tính và đợc định nghĩa nh là các cột trong các bảng. Phase này cũng quan tâm đến hiệu năng liên quan đến việc tạo các Index, segment rollback, segment tạm và layout vật lý của tập tin dữ liệu trên đĩa, các script đl (ngôn ngữ định nghĩa dữ liệu, Data Definition language) đợc viết để tạo các đối tợng cơ sở dữ liệu và đợc sử dụng để dự định năng user.
3.2.1 Định nghĩa các yêu cầu
Cơ sở dữ liệu của ta đợc thiết kế để quản lý các loại mặt hàng do ngời dùng đa lên, các mặt hàng này có một số thuộc tính nh (tên mặt hàng, nhà sản xuất, nớc sản xuất, giá..). Các mặt hàng phải đợc phân loại và sắp xếp theo từng chủng loại, quản lý các user tham gia vào mạng, lu lại các bức th mà ngời dùng gửi có liên quan đến mặt hàng trong Web sitẹ
Đợc sử dụng cho nhiều user trên Internet một số user có khả năng quản trị cơ sở dữ liệụ Các user khách hàng có quyền đa các thông tin về mặt hàng của mình vào trong CSDL bất cứ lúc nào
3.2. Sơ đồ phân rã chức
Mục đích của sơ đồ phân rã chức năng:
+ Chỉ ra ràng buộc cần xây dựng, xác định các chức năng mà HT cần thực hiện.
+ Xác định rõ phạm vi của hệ thống trong phân tích hệ thống. Các chức năng đợc xác định ở đây sẽ đợc dùng nhiều trong mô hình sau nàỵ Chỉ ra miền khảo cứu của hệ thống trong toàn bộ hệ thống tổ chức. Điều này có thể làm rõ trách nhiệm, giúp tránh đợc trùng lặp công việc.
Cybermarket
Quản trị Người dùng
Xác nhận hợp lệ Gửi thư
Đưa thông tin lên
Cập nhật chủng loại Tìm mặt hàng
người dùng Quản trị
Tài khoản User
Thư liên hệ Mặt hàng Đăng nhập Tìm kiếm Post xác nhận hợp lệ Xem
và sửa thưGửi
Cập nhật danh mục login đồng ý login/Register đồng ý Kết quả tìm thấy YC tìm/duyệt Tạo thư Thêm mặt hàng Yêu cầu xác nhận Xem lại mặt hàng Thay đổi Sửa đổi Yêu cầu xác nhận đồng ý Cập nhật Cập nhật Quản lý danh mục Xác nhận Tìm thấy Xác nhận đông ý Yêu cầu Tìm kiếm
3.2.3. Mô hình logic
Mô hình logic cho ta thấy đợc quan hệ của các đối tợng dữ liệu trong cơ sở dữ liệụ Các quan hệ này có thể trực tiếp hay gián tiếp và không cần quan tâm đến dữ liệu đợc lu trữ nh thế nàọ
CSDL này có 6 thực thể chính:
- Categories (các danh mục hàng hoá lớn). - SubCategories (các danh mục hàng hoá phụ). - Products.
- Users (ngời sử dụng).
- Mailsent (thông tin về mail của ngời dùng).
- Maildetails (thông tin chi tiết về mail liên quan đến sản phẩm).
- Ngoài ra còn một số thực thể (admin, Post) không có quan hệ dùng để chứa một vài thông tin cho ngơì quản lý.
Mối quan hệ giữa các thực thể có thể tổng kết nh sau: