Sử dụng WebService do người dùng xây dựng

Một phần của tài liệu Nghiên cứu tổng quan về web service và ứng dụng web service để xây dựng hệ thống đặt vé tàu trực tuyến qua mạng internet (Trang 26)

Sử dụng Web Service do chúng ta xây dựng tương tự như việc sử dụng các lớp đối tượng. Ví dụ:

Dim phep_toan As New WS_PHEP_TOAN lblKet_qua.Text = phep_toan.Cong_hai_so(4, 6)

3.2.2 Sử dụng Web Services được cung cấp miễn phí trên mạng

Để biết được những Web Services được cung cấp miễn phí trên mạng, các bạn có thể dùng google để thực hiện tìm kiếm. Ở đây, chúng tôi giới thiệu đến các bạn trang:

http://www.webservicex.net cung cấp khá nhiều các Web Services hữu ích.

Trong phần này, chúng tôi sẽ hướng dẫn bạn sử dụng các Web Services để lấy thông tin tỷ giá ngoại tệ, thông tin thời tiết, các thành phố chính của một quốc gia và các đơn vị tiền tệ của các quốc gia trên thế giới.

Các bước thực hiện:

Bước 1.Chọn Add Web Reference… từ thực đơn ngữ cảnh của ứng dụng

Thêm WebService vào ứng dụng

Bước 2.Nhập thông tin đường dẫn của WebService, nhấn để thực hiện việc xác thực Web Service.

Bước 3.Nếu Web Service được xác thực thành công, thông tin mô tả về Web Service sẽ được hiển thị ngay phía bên dưới. Trong ví dụ này, chúng ta lần lượt xác thực 3 Web Service sau:

http://www.webservicex.net/country.asmx?WSDL Các quốc gia http://www.webservicex.net/globalweather.asmx?WSDL Thời tiết http://www.webservicex.net/CurrencyConvertor.asmx?WSDL Tỷ giá

Tham chiếu Web Service

Bước 4.Đặt tên tham chiếu cho WebService: Web reference name.

Bước 5.Nhấn Add Reference để hoàn tất tham chiếu WebService. Bảng trên mô tả các phương thức và tài liệu hướng dẫn của WebService

Danh sách các Web Service được tham chiếu Bước 6.

Màn hình thiết kế

Viết lệnh xử lý: 'Lấy tỉ giá ngoại tệ

Dim tgNgoai_te As New Ws_Ty_gia.CurrencyConvertor lblUSD.Text = tgNgoai_te.ConversionRate( _ Ws_Ty_gia.Currency.USD, Ws_Ty_gia.Currency.VND) lblEUR.Text = tgNgoai_te.ConversionRate( _ Ws_Ty_gia.Currency.EUR, Ws_Ty_gia.Currency.VND) lblGBP.Text = tgNgoai_te.ConversionRate( _ Ws_Ty_gia.Currency.GBP, Ws_Ty_gia.Currency.VND) 'Lấy thông tin thời tiết các thành phố chính

Dim lWeather As New Ws_Thoi_tiet.GlobalWeather

lblHN.Text = lWeather.GetWeather("Ha Noi", " Viet Nam ")

lblHCM.Text = lWeather.GetWeather("Ho Chi Minh", " Viet Nam ") lblThanh_pho.Text = lWeather.GetCitiesByCountry(" Viet Nam ") 'Lấy tên các quốc gia và đơn vị tiền tệ trên thế giới

Dim lCountry As New Ws_Quoc_gia.country lblDon_vi.Text = lCountry.GetCurrencyCode()

lblQuoc_gia.Text = lCountry.GetCountries()

Tỷ giá ngoại tệ và thông tin thời tiết được lấy từ WebService vào lúc: 9:30:00 AM ngày 13/06/2005 (giờ Việt nam). Lúc các bạn thi hành, các giá trị này có thể thay đổi.

3.3. Xây dựng Web Services truy xuất dữ liệu

Web Service: WS_KHACH_HANG

Trong phần này, chúng ta phối hợp các lớp xử lý đã có để xây dựng Web service WS_KHACH_HANG. Trong ví dụ minh họa dưới đây, chúng ta xây dựng ba thủ tục:

-Doc_danh_sach_khach_hang -Them_khach_hang

-Xoa_khach_hang <WebMethod()> _

Public Function Doc_danh_sach_khach_hang() As DataSet Dim lKhach_hang As New XL_KHACH_HANG (adsbygoogle = window.adsbygoogle || []).push({});

Dim lDataset As New DataSet lDataset.Tables.Add(lKhach_hang) Return lDataset End Function --- --- <WebMethod()> _

Public Function Them_khach_hang(ByVal pHo_kh As String, _ ByVal pTen_kh As String, _

ByVal pNgay_sinh As Date, _ ByVal pGioi_tinh As Boolean, _ ByVal pDia_chi As String, _ ByVal pTen_dn As String, _

ByVal pMat_khau As String) As Boolean Try

Dim lKhach_hang As New XL_KHACH_HANG Dim lDr As DataRow

lDr = lKhach_hang.NewRow() lDr("Ho_khach_hang") = pHo_kh lDr("Ten_khach_hang") = pTen_kh lDr("Ngay_sinh") = pNgay_sinh

lDr("Gioi_tinh") = pGioi_tinh) lDr("Dia_chi") = pDia_chi lDr("Ten_dang_nhap") = pTen_dn lDr("Mat_khau") = pMat_khau lKhach_hang.Rows.Add(lDr) lKhach_hang.Ghi_du_lieu() Return True Catch ex As Exception Return False End Try End Function <WebMethod()> _

Public Function Xoa_khach_hang(ByVal pMkh As Long) Dim lKhach_hang As New XL_KHACH_HANG

lKhach_hang.Xoa_dong(pMkh) End Function

Trong Web service trên, chúng ta có sử dụng một số phương thức từ lớp XL_KHACH_HANG. Để sử dụng, chúng ta cần bổ sung các phương thức sau vào lớp XL_KHACH_HANG:

'Xác định chỉ số của dòng có mã số tương ứng

Public Function Lay_chi_so(ByVal pMa_so As Integer) As Long Dim i as Long

For i = 0 To Me.So_dong() - 1

If Me.Rows(i)(Khoa) = pMa_so Then Return i

End If Next Return -1 End Function

Public Sub Xoa_dong(pMa_so as Long) Dim lChi_so as Long = Lay_chi_so(pMa_so)

If lChi_so >= 0 Then Try Me.Rows(lChi_so).Delete() Ghi_du_lieu() Catch e As Exception End Try End If End Sub

Public Sub Ghi_du_lieu() Try mDa_Bo_doc_ghi.Update(Me) Me.AcceptChanges() Catch e As Exception Me.RejectChanges() End Try End Sub

Kiểm tra Web Service

Sau khi thiết kế thành công WS_KHACH_HANG, chúng ta tiến hành kiểm tra Web service vừa tạo.

Danh sách các phương thức của WS_KHACH_HANG

Thi hành phương thức Doc_danh_sach_khach_hang

Kết quả:

Kết quả dưới dạng XML

Sử dụng Web Service WS_KHACH_HANG

Sau khi xây dựng và kiểm tra thành công WS_KHACH_HANG, chúng ta sử dụng web service vừa tạo vào ứng dụng.

Viết lệnh xử lý:

Private Sub Page_Load(…) Handles MyBase.Load Dim lKhach_hang As New WS_KHACH_HANG

dtgKhach_hang.DataSource = lKhach_hang.Doc_danh_sach_khach_hang dtgKhach_hang.DataBind()

End Sub (adsbygoogle = window.adsbygoogle || []).push({});

Phần 4: Ứng dụng dịch vụ web để xây dựng hệ thống đặt vé tàu qua mạng Internet

4.1 Giới Thiệu

Để có thể hiểu hơn, nắm vững hơn về các kiến thức của Webservice cũng như khả năng ứng dụng triển khai thì phần dưới đây em sẽ thực hiện một Demo ứng dụng đơn giản, cụ thể :

+Xây dựng một WebService để tìm kiếm kết quả về thông tin liên quan đến số lượng, giá vé, ngày giờ. Với đầu vào là nơi đi, đích đến

+Xây dựng một WebService để ghi lại dữ liệu của việc đặt mua.

+Xây dựng một webform dành cho khách hàng đặt vé tàu có sử dụng 2 webservice trên .

4.2 Thiết kế Cơ Sở Dữ Liệu

Bảng 1 : Chi tiết Tàu

Chức năng : Lưu trữ thông tin về chi tiết về các đoàn tàu STT Tên trường

Kiểu

DL Diễn giải NULL

1 Ma Tau nchar Mã Tàu Không được phép 2 TenTau nchar Tên Tàu Được phép

3 SoLuong int Số Lượng Ghế Tối Đa Của Tàu Được phép Bảng 2: Khách

Chức năng : Lưu trữ thông tin về Khách

STT Tên trường

Kiểu

DL Diễn giải NULL

1 SoBaoDanh nchar Số Báo Danh Không được phép 2 TenKhach nchar Tên Khách Được phép

Bảng 3: Tuyến

Chức năng : Lưu trữ thông tin về chi tiết về các tuyến

STT Tên trường

Kiểu

DL Diễn giải NULL

1 Ma Tuyen nchar Mã Tuyến Không được phép

2 GaDi nchar Ga Đi Được phép

3 GaDen nchar Ga Đến Được phép

Bảng 4: Lịch Tàu

Chức năng : Lưu trữ thông tin về chi tiết về Lịch trình các đoàn tàu

STT Tên trường KiểuDL Diễn giải NULL 1 Ma Lich nchar Mã Lịch

Không được phép (adsbygoogle = window.adsbygoogle || []).push({});

2 MaTau nchar Mã Tàu Được phép

4 Time datetime tàuThời gian khởi hành of chuyến Được phép 5 GiaVe Int Giá cho một vé Được phép 6 ChoTrong Int

Số chổ trống còn lại trên chuyến

tàu Được phép

Bảng 5: Đăt Vé

Chức năng : Lưu trữ thông tin về chi tiết về việc đặt vé của Khách

STT Tên trường KiểuDL Diễn giải NULL

1 Ma DatVe nchar Mã Tuyến Không đượcphép 2 SoBaoDanh nchar Số Báo Danh Được phép 3 MaLich nchar Mã Lịch Được phép

4 SoVe Int Số Vé Đặt Được phép

4.3 Xây Dựng WebService WS_VETAU

Xây dựng một WebService có tên WS_TAU để tìm kiếm kết quả về thông tin liên quan đến số lượng, giá vé, ngày giờ. Với đầu vào là nơi đi, đích đến

publicclass WS_VETAU : System.Web.Services.WebService

{ [WebMethod] publicstring HelloWorld()

{ return"Hello World"; }

[WebMethod]

public DataSet WS_TimKiem(string gadi, string gaden, DateTime time, refint kt)// Webservice co the chi ho tro dataset ma khon ho tro Datatable

{ cls_VeTau BL_VeTau = new cls_VeTau();

return BL_VeTau.TimKiemLichTau(gadi, gaden, time, ref kt); }

}

4.4 Xây Dựng Webservice WS_GHIDULIEU

Xây dựng một WebService có tên WS_GHIDULIEU để ghi lại dữ liệu của việc đặt mua với đầu vào là số báo danh, mã lich, số vé, biến kiểm tra

publicclass WS_GHIDULIEU : System.Web.Services.WebService

{

[WebMethod]

publicstring HelloWorld()

{

return"Hello World";

}

[WebMethod]

publicvoid WS_ghilaidulieu(string sobaodanh, string malich, int sove, refint kt) (adsbygoogle = window.adsbygoogle || []).push({});

{

cls_VeTau BL_VeTau = new cls_VeTau();

BL_VeTau.GhiDuLieu(sobaodanh,malich,sove,ref kt);

} }

4.5 Xây Dựng WebForm Ứng Dụng

- WebForm có sử dụng 2 Webservice trên để dành cho Sinh viên tìm kiếm lịch tàu, đặt mua vé tàu trực tuyến

Kết quả tìm kiếm

KẾT LUẬN

Trong quá trình làm đề án, em đã được tìm hiểu, nghiên cứu về WebService. Để từ đó em đã đi vào thực tế về tìm hiểu, phân tích, thiết kế một hệ thống đặt vé tàu trực tuyến đơn giản ứng dụng công nghê Webservice. Rèn luyện thêm khả năng tự nghiên cứu, trình bày, có thêm kinh nghiệm và kiến thức để hổ trợ cho thực tập cuối khóa và sau này.

Tự đánh giá ưu nhược điểm của hệ thống Ưu điểm

- Giới thiệu tổng quan về Webservice

- Demo thực hiện đơn giản và dễ hiểu nhấn mạnh vào ứng dụng WebService

- Hệ thống đã đáp ứng được yêu cầu cơ bản của quá trình Nhược điểm

- Hệ thống chỉ mới dừng lại ở việc ứng dụng WebService, chưa phải là một hệ thống hoàn chỉnh với đầy đủ các chức năng.

Hướng phát triển

- Mở rộng phạm vi nghiên cứu.

TÀI LIỆU THAM KHẢO

-Th.S Nguyễn Thành Thủy, Bài Giảng Môn Lập Trình Web, Khoa Thống Kê - Tin Học, Trường Đại Học Kinh Tế Đà Nẵng.

- Dương Quang Thiện sách .NET Toàn Tập - Lập Trình Web Dùng ASP.NET Và C# - Tập 5

-Trung Tâm Tin Học – Đại Học Khoa Học Tự Nhiên Tp.HCM- Tài Liệu Hướng Dẫn Giảng Dạy -Lập trình ứng dụng web với ASP.NET

- Sách thiết kế Web – giáo viên Trần Phi Hảo- khoa khoa học máy tính – Trường CĐ CNTT Việt Hàn.

PHỤ LỤC

WebService có sử dụng các phương thức của lớp cls_VeTau

publicclass cls_VeTau {

public DataSet TimKiemLichTau(string gadi, string gaden, DateTime time, refint kt) //dataset

{

//khai bao cau lenh de hien thi thong bao kiem tra co tim thay lich trinh nhu yeu cau

string strSQL1 = "SELECT MaLich,TenTau, GaDi, GaDen, Time ,GiaVe, ChoTrong FROM " +

" (TAU INNER JOIN LICHTAU ON TAU.MaTau=LICHTAU.Matau) INNER JOIN TUYEN ON TUYEN.MaTuyen=LICHTAU.MaTuyen" +

" WHERE TUYEN.GaDi=@GaDi AND TUYEN.GaDen=@GaDen AND TIME >= @Time"; SqlParameter[] ThamSo1 = { new SqlParameter("GaDi", gadi), (adsbygoogle = window.adsbygoogle || []).push({});

new SqlParameter("GaDen", gaden), new SqlParameter("Time", time), };

DataSet ds = new DataSet();

ds = (DataSet)DAL.Select(strSQL1, ThamSo1); if (ds.Tables[0].Rows.Count == 0)

kt = 0;

else kt = ds.Tables[0].Rows.Count;

// tim kiem

string strSQL = "SELECT MaLich,TenTau, GaDi, GaDen, Time ,GiaVe, ChoTrong FROM " +

" (TAU INNER JOIN LICHTAU ON TAU.MaTau=LICHTAU.Matau) INNER JOIN TUYEN ON TUYEN.MaTuyen=LICHTAU.MaTuyen" +

" WHERE TUYEN.GaDi=@GaDi AND TUYEN.GaDen=@GaDen AND TIME >= @Time"; SqlParameter[] ThamSo = { new SqlParameter("GaDi", gadi),

new SqlParameter("GaDen", gaden), new SqlParameter("Time", time),

};

return DAL.Select(strSQL, ThamSo);

}

publicvoid GhiDuLieu(string sobaodanh, string malich, int sove, refint kt)// kt la kiem tra viec ghi du lieu thanh cong hay khong

{

string strSQL1 = "DatVeTau";// su dung 1 procedure da viet o trong SQL server

SqlParameter[] ThamSo1 ={ new SqlParameter("SoBaoDanh",sobaodanh), new SqlParameter("MaLich",malich),

new SqlParameter("SoVe",sove), new SqlParameter("kt",kt), };

DAL.Execute_Procedure(strSQL1, ref ThamSo1, ref kt); }

}

Trong Lớp cls_DataAccessLayer.cs

// Ham Execute su dung Procedure

publicvoid Execute_Procedure(string strSQL, ref SqlParameter[] ThamSo, refint kt) {

try //Bảy lỗi

{

Conn.Open();

SqlCommand command = new SqlCommand(strSQL, Conn);

command.CommandType = CommandType.StoredProcedure; // dung procedure

ThamSo[ThamSo.Length - 1].Direction = ParameterDirection.Output;// day la tham so nhan ket qua tra ve,them cai nay de truyen tham bien cho procedure

for (int i = 0; i < ThamSo.Length; i++) { (adsbygoogle = window.adsbygoogle || []).push({});

command.Parameters.Add(ThamSo[i]); }

command.ExecuteNonQuery();

kt = Convert.ToInt32(ThamSo[ThamSo.Length - 1].Value);// lay gia tri tra ve cua tham so

Conn.Close(); }

catch (Exception ex) //Tìm thấy lỗi

{

showErr(ex); }

}

PROCUDERE Trong SQLServer

ALTERPROCEDURE [dbo].[DatVeTau]

( @SoBaoDanh nchar(10), @MaLich nchar(10), @SoVe int, @kt intOUTPUT)

AS BEGIN

Declare @ConTrong int;

SELECT @ConTrong=ChoTrong FROM LICHTAU

WHERE MaLich=@MaLich;

IF(@SoVe <= @ConTrong)

BEGIN

INSERTINTO DATVE VALUES(@SoBaoDanh,@MaLich,@SoVe);

UPDATE LICHTAU SET ChoTrong=ChoTrong-@SoVe

WHERE MaLich=@MaLich;

SELECT @kt=1;

END

elseSELECT @kt=0;

END

Một phần của tài liệu Nghiên cứu tổng quan về web service và ứng dụng web service để xây dựng hệ thống đặt vé tàu trực tuyến qua mạng internet (Trang 26)