ASP.NET là một kỹ thuật phía server (server-side) dành cho việc thiết kế các ứng dụng web trên môi trường .NET
ASP.NET là một kỹ thuật server-side. Hầu hết những web designers bắt đầu sự nghiệp của họ bằng việc học các kỹ thuật client-side như HTML, JavaScript và
Cascading Style Sheets (CSS). Khi một trình duyệt web yêu cầu một trang web được tạo ra bởi các kỹ thuật client-side, web server đơn giản lấy các files mà được yêu cầu và gửi chúng xuống. Phía client chịu trách nhiệm hoàn toàn trong việc đọc các định dạng trong các files này và biên dịch chúng và xuất ra màn hình.
Với kỹ thuật server-side như ASP.NET thì hoàn toàn khác, thay vì việc biên dịch từ phía client, các đoạn mã server-side sẽ được biên dịch bởi web server. Trong trường hợp này, các đoạn mã sẽ được đọc bởi server và dùng để phát sinh ra HTML,
JavaScript và CSS để gửi cho trình duyệt. Chính vì việc xử lý mã xảy ra trên server
nên nó được gọi là kỹ thuật server-side.
ASP.NET cho phép bạn viết ứng dụng web bằng các loại ngôn ngữ lập trình quen thuộc khác nhau.
ASP.NET sử dụng .NET Framework, .NET Framework là sự tổng hợp tất cả các kỹ thuật cần thiết cho việc xây dựng một ứng dụng nền desktop, ứng dụng web,
web services… thành một gói duy nhất nhằm tạo ra cho chúng khả năng giao tiếp với hơn 40 ngôn ngữ lập trình.
Thậm chí với những sự lý giải kỹ càng như vậy, chúng ta vẫn ngạc nhiên tự hỏi điều gì làm nên một ASP.NET tốt như vậy. Sự thật là có rất nhiều kỹ thuật server- side với điểm mạnh và điểm yếu riêng nhưng ASP.NET có những tính năng gần như là duy nhất.
• ASP cho phép bạn sử dụng ngôn ngữ lập trình mà bạn ưa thích hoặc gần gũi với chúng. Hiện tại, thì .NET Framework hỗ trợ trên 40 ngôn ngữ lập trình khác nhau mà đa phần đều có thể được sử dụng để xây dựng nên những web sites ASP.NET. Chẳng hạn như C# (C sharp) và Visual Basic.
• Nhưng trang ASP.NET được Compiled chứ không phải là Interpreted. Khác với các trang ASP được Interpreted, điều này có nghĩa là mỗi lần người dùng yêu cầu một trang, máy chủ sẽ đọc các đoạn mã vào bộ nhớ, xử lý cách thức thực thi các đoạn mã và thực thi chúng. Đối với ASP.NET, máy chủ chỉ cần xử lý cách thức thực thi một lần duy nhất. Đoạn mã sẽ được Compiled thành các files mã nhị phân cái mà được thực thi rất nhanh mà không cần phải đọc lại. Chính điều này tạo ra bước tiến nhảy vọt về hiệu suất so với ASP
• ASP đã có khả năng toàn quyền truy xuất tới các chức năng của .NET Framework. Hỗ trợ XML, web services, giao tiếp với CSDL, email… và rất nhiều các kỹ thuật khác được tích hợp vào .NET, giúp bạn tiết kiệm được công sức.
• ASP cho phép bạn phân chia các đoạn mã server-side và HTML. Khi bạn phải làm việc với cả đội ngũ lập trình và thiết kế, sự tách biệt này cho phép các lập trình viên chỉnh sửa server-side code mà không cần dính dáng gì tới đội ngũ thiết kế.
• ASP giúp cho việc tái sử dụng những yếu tố giao diện người dùng trong nhiều web form vì nó cho phép chúng ta lưu các thành phần này một cách độc lập.
PHẦN 3
XÂY DỰNG ỨNG DỤNG
Trong phần này em xin trình bày chi tiết xây dựng hệ thống tìm kiếm khách sạn với Web service và Microsoft.NET Framework.
Nội dung trình bày bao gồm các phần sau:
Hướng tiếp cận xây dựng ứng dụng.
Phân tích thiết kế hệ thống.
Cài đặt ứng dụng.
I/HƯỚNG TIẾP CẬN XÂY DỰNG ỨNG DỤNG: 1/Phát biểu bài toán:
Hệ thống tìm kiếm khách sạn được xây dựng đáp ứng các yêu cầu sau:
1. Về phía người sử dụng, hệ thống cho phép người sử dụng nhập vào thông tin truy vấn về khách sạn bao gồm: Địa điểm, ngày đến, ngày đi, tên khách sạn, hạng khách sạn, số giường, giá phòng.
=> Thông tin trả về của hệ thống là một danh sách các khách sạn bao gồm: Tên khách sạn, hạng khách sạn, địa chỉ, điện thoại, phòng, số giường/phòng, đơn giá/ngày và tổng giá tiền. Cũng có thể trả về kết quả là không tìm được khách sạn theo yêu cầu của khách hàng.
2. Về phía hệ thống, yêu cầu thiết kế hệ thống đó là:
a.Hệ thống phải hoạt động với một số lượng lớn các web service của các khách sạn.
b.Hệ thống cho phép sắp xếp kết quả tìm kiếm trả về cho người sử dụng dựa trên việc sắp xếp trình tự truy vấn các web service. Trình tự truy vấn các web service phụ thuộc vào gói dịch vụ mà web service đó đăng kí với hệ thống. Hệ thống đăng kí này bao gồm ba mức (vàng - gold, bạc – silver, đồng – copper), các web service đăng kí tham gia ở mức cao sẽ được ưu tiên hiển thị kết quả trước.
c.Hệ thống cho phép thêm hoặc bớt các web service mà nó truy vấn thông tin một cách động. Hệ thống cũng cho phép chuyển đổi các gói dịch vụ mà các web service đã đăng kí với hệ thống.
2/Hướng tiếp cận giải quyết bài toán:
Việc giải quyết bài toán với hướng tiếp cận truyền thống đó là xây dựng một web service client. Web service này sẽ trực tiếp truy vấn đến các web service của các khách sạn và sắp xếp các kết quả trả về theo các tiêu chuẩn đã đặt ra. Cách tiếp cận giải quyết bài toán này là hoàn toàn không thích hợp cho việc giải quyết các yêu cầu của bài toán.
Thứ nhất, hệ thống xây dựng dựa trên cách tiếp cận trên sẽ rất nặng nề và nhiều dư thừa trong lập trình do khi muốn truy vấn đến một web service, hệ thống phải có các tham chiếu đến các web service đó. Ở đây trong việc lập trình đó là hệ thống phải sinh ra các stub, các lớp liên quan đến việc gọi web service. Đồng thời với đó là hệ thống không thể thêm bớt các web service một cách động. Khi muốn thêm, bớt các web service hệ thống phải được xây dựng lại để thêm hoặc bớt các lớp liên quan đến việc gọi web service tương ứng.
Ta thấy hướng giải quyết bài toán bằng hướng tiếp cận web service client là không hợp lý, nó sẽ không đáp ứng được các yêu cầu của bài toán, điều này khiến ta phải tìm ra hướng tiếp cận và giải quyết mới. Sau đây em xin trình bày kĩ thuật chính để giải quyết bài toán này như sau:
3/Kĩ thuật chính giải quyết bài toán:
SoapHttpClientProtocol cung cấp khả năng thay đổi địa chỉ của một service trong chuỗi sử lý (flow process) của chương trình ngay trong khi chuỗi xử lý đó đang được thực thi (gán địa chỉ động).
Vi dụ:
localhost.FirstService mySvc = new localhost.FirstService(); mySvc.Url = http://localhost/test1/FirstService.asmx;
II/PHÂN TÍCH THIẾT KẾ HỆ THỐNG:
1/Mô tả các Actors và Use cases
Use cases diagram
Mô tả các Actors
Người sử dụng (User) là người trực tiếp sử dụng chương trình, khai thác các tiện ích của chương trình.
Mô tả các Use cases
Management Partner
- Tóm tắt:
Đây là trường hợp người sử dụng lựa chọn chức năng quản lý các đối tác là các khách sạn
- Tác nhân:
NSD (User)
- Liên quan:
Không có các use cases liên quan
- Luồng sự kiện:
+ Luồng sự kiện Thêm mới:
* Người sử dụng chọn nút thêm bản ghi mới * Người sử dụng nhập các thông tin đầu vào * Người sử dụng chọn nút lưu
* Hệ thống hiển thị kết quả cập nhật * Kết thúc use case
+ Luồng sự kiện Sửa:
* Người sử dụng chọn bản ghi cần sửa * Người sử dụng chọn nút sửa
* Người sử dụng nhập các thông tin đầu vào * Người sử dụng chọn nút lưu
* Hệ thống hiển thị kết quả cập nhật * Kết thúc use case
+ Luồng sự kiện Xóa:
* Người sử dụng chọn bản ghi cần xóa * Người sử dụng chọn nút xóa
* Hệ thống hỏi “Bạn có chắc chắn muốn xóa không?”
* Người sử dụng chọn nút “Yes”, hệ thống xóa và hiển thị kết quả * Người sử dụng chọn nút “No”, hệ thống không xóa
* Kết thúc use case
Tìm kiếm khách sạn
- Tóm tắt:
Đây là trường hợp người sử dụng lựa chọn chức năng tìm kiếm khách sạn để đặt phòng.
- Tác nhân:
NSD (User)
- Liên quan:
Không có các use cases liên quan
- Luồng sự kiện:
+ Luồng sự kiện chính:
* Người sử dụng nhập những thông tin cần để tìm kiếm * Người sử dụng chọn nút “Tìm kiếm”
* Hệ thống hiển thị kết quả tìm được * Kết thúc use case
2/Mô hình hóa tương tác
Management Partner
Biểu đồ trình tự
Insert(): Thêm mới bản ghi thông tin của đối tác (khách sạn) Update(): Sửa thông tin một bản ghi
Delete(): Xóa một bản ghi
Biểu đồ lớp (Class) của modul Management Partner
Tìm kiếm khách sạn (Search ) Biểu đồ trình tự
chooseCondtion(): Nhập vào các điều kiện tìm kiếm Execute(): Thực hiện lệnh tìm kiếm
displayResult(): Hiển thị kết quả tìm kiếm
Modul Web Service của khách sạn:
Là một thư viện cung cấp thông tin do các đối tác phát triển, ở đây em tự phát triển một mẫu. Web service này gồm một webmethod với các tham số đầu vào là số giường, đơn giá, tình trạng đặt phòng. Khi hệ thống gọi webmethod của service, webservice sẽ trả về kết quả được thiết kế dưới dạng một danh sách cấu trúc định nghĩa dưới dạng XML schema như sau
<DataSet xmlns="http://localhost/MyWebServices/"> <xs:schema id="NewDataSet" xmlns=""
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas- microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="Table">
<xs:complexType> <xs:sequence>
<xs:element name="ID" type="xs:decimal" minOccurs="0" /> <xs:element name="SO_PHONG" type="xs:int"
minOccurs="0" />
<xs:element name="SO_GIUONG" type="xs:int" minOccurs="0" />
<xs:element name="GIA_TIEN" type="xs:decimal" minOccurs="0" />
<xs:element name="CHECK_IN" type="xs:boolean" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema> <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> <NewDataSet xmlns="">
<Table diffgr:id="Table1" msdata:rowOrder="0"> <ID>1</ID> <SO_PHONG>201</SO_PHONG> <SO_GIUONG>2</SO_GIUONG> <GIA_TIEN>100</GIA_TIEN> <CHECK_IN>true</CHECK_IN> </Table>
<Table diffgr:id="Table2" msdata:rowOrder="1"> <ID>2</ID> <SO_PHONG>203</SO_PHONG> <SO_GIUONG>3</SO_GIUONG> <GIA_TIEN>120</GIA_TIEN> <CHECK_IN>true</CHECK_IN> </Table> </NewDataSet> </diffgr:diffgram> </DataSet>
3/Mô hình cơ sở dữ liệu quan hệ
Bảng dm_ws (danh mục các đối tác, phục vụ cho modul Management
Partner)
Tên trường Kiểu dữ liệu Diễn giải
ID decimal(18, 0) Khóa chính
NamePartner nvarchar(250) Tên đối tác (khách sạn)
NameWS nvarchar(250) Đường dẫn web services
Packet nvarchar(50)
Gói dịch vụ (Gold, Silver, Copper), gói dịch vụ thể hiện mức ưu tiên của đối tác trong tìm kiếm
NumStar int Hạng (1 sao, 2 sao,.., 5 sao)
[Add] nvarchar(250) Địa chỉ
Tel varchar(50) Số điện thoại
UU_TIEN varchar(1)
A, B, C (Mức ưu tiên tương ứng với Packet (Gold, Silver,
Copper), dùng để sắp xếp khi liệt kê
III/CÀI ĐẶT ỨNG DỤNG:
1/Môi trường cài đặt:
Dùng công nghệ ASP.Net và SQL server 2005.
2/Một số giao diện chương trình:
Giao diện tìm kiếm cho người sử dụng:
Hình 3.1.1: Giao diện tìm kiếm cho người sử dụng
Giao diện thông tin trả về:
Giao diện quản lý dịch vụ:
Hình 3.1.3: Giao diện xem thông tin và quản lý đối tác
PHẦN 4
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
MỘT SỐ KẾT QUẢ ĐẠT ĐƯỢC:
Qua tìm hiểu và nghiên cứu đề tài, em đã nắm được các cở sở lý thuyết về kiến trúc cùng với kĩ thuật phát triển ứng dụng với web service và Microsoft.NET Framework.
Do các kiến trúc và kĩ thuật này còn mới mẻ nên để hiểu rõ và nắm vững là điều không dễ dàng. Vì vậy, mục tiêu của đề tài đặt ra gồm hai phần chính như sau:
Về lý thuyết: Mục tiêu là tìm hiểu, nghiên cứu về kiến trúc Web Service và công nghệ Microsoft.NET Framework.
Về phần ứng dụng minh họa: Mục tiêu là nắm vững được các kỹ thuật lập trình web service và ngôn ngữ Microsoft.NET Framework: Cách tạo ra web service phục vụ cho việc trao đổi thông tin. Bên cạnh đó là xây dựng một hệ thống ứng dụng tìm kiếm khách sạn dựa trên những công nghệ đã tìm hiểu đáp ứng được các yêu cầu đề ra.
Nội dung đề tài đưa ra khá rộng mà chỉ được thực hiện trong khoảng thời gian không dài do đó để hoàn tất đề tài này em phải gặp rất nhiều khó khăn về mặt tìm kiếm tài liệu, đọc hiểu tài liệu và một số kỹ thuật để vận dụng kiến thức mình đã tìm hiểu được nhưng nhờ sự giúp đỡ và chỉ bảo tận tình của cô giáo hướng dẫn: TS. Trương Diệu Linh cùng các thầy cô trong Viện Công nghệ thông tin và truyền thông, trường Đại học Bách Khoa Hà Nội em đã hoàn thành được những mục tiêu, yêu cầu đưa ra của đề tài.
HƯỚNG PHÁT TRIỂN:
Đồ án đã hoàn thành với những kết quả đạt được theo yêu cầu của đề tài đưa ra. Tuy nhiên qua quá trình thực hiện đề tài em nhận thấy vẫn còn nhiều vấn đề khác liên quan đến lĩnh vực này cần được quan tâm. Và đây chính là hướng phát triển của đề tài để em nghiên cứu tiếp sau này.
• Đối với phần lý thuyết: Em còn phải nghiên cứu sâu hơn về ngôn ngữ Microsoft.NET Framework, đặc biệt là việc lập trình sử dụng Microsoft.NET Framework để kết hợp các web service, từ đó mới có thể mở rộng ứng dụng Microsoft.NET Framework và web service trong thực tế.
• Đối với ứng dụng đã xây dựng : Vì dữ liệu của ứng dụng chỉ có tính chất minh họa nên để đạt được những kết quả hứa hẹn mà công nghệ mang lại cần tổ chức dữ liệu phong phú hơn, mở rộng số lượng các web service tham gia vào hệ thống cũng
như phát triển một hệ thống mềm dẻo linh hoạt hơn trong việc tương tác với các web service.
• Phát triển ứng dụng thành một Search Engine hỗ trợ tìm kiếm đa lĩnh vực, cũng như đa thông tin.
• Bên cạnh đó chúng ta cũng phải quan tâm đến việc làm sao để cho các service có tính an toàn, toàn vẹn và bảo mật thông tin trong web services nhất là các service liên quan đến giao dịch thương mại và tài chính.
Một lần nữa em xin chân thành cảm ơn cô giáo hướng dẫn TS. Trương Diệu Linh và các thầy cô trong viện Công nghệ thông tin và truyền thông, trường Đại học Bách Khoa Hà Nội đã chỉ bảo và giúp đỡ em hoàn thành đồ án này.
Do trình độ và thời gian nghiên cứu còn hạn hẹp nên dù đã cố gắng nhưng sẽ không thể tránh khỏi những thiếu sót. Rất mong nhận được sự chỉ bảo, góp ý của thầy cô và các bạn sinh viên.