- Nền NET Framework và ASP.NET cung cấp sơ đồ (schemes)
3. Phân tích hệ thống theo sơ đồ luồng dữ liệu:
3.2. Sơ đồ luồng dữ liệu mức đỉnh :
3.3.Sơ đồ luồng dữ liệu mức dưới đỉnh: 3.3.1. Chức năng quản lý người dùng:
3.3.3. Chức năng phân quyền:
3.4. Sơ đồ luồng dữ liệu tổng quát:
4. Các bảng cơ sở dữ liệu dùng trong chương trình:
4.1. Bảng Tài khoản :
-Gồm các trường: Tên Tài Khoản, Mật Khẩu, Quản trị.
4.2.Bảng Thư mục_Tài khoản :
4.3. Bảng Nhân viên :
-Gồm các trường:Mã Nhân Viên, Tên, Họ, Ngày Sinh, Địa chỉ, Số CMTND, Ngày Kí Hợp Đồng, Nơi Kí Hợp Đồng, Chuyên môn, Phòng, Ngày Bắt Đầu, Ngày Kết Thúc, Loại Hợp Đồng, Mức Lương.
4.4. Bảng Thư mục:
CHƯƠNG VI. PHÁT TRIỂN ỨNG DỤNG.
1. Xây dựng kế hoạch phát triển ứng dụng
1.1. Tiêu chí phát triển:
-Để phát triển ứng dụng một cách hiệu quả và có chất lượng cần phải đưa ra các bước xây dựng chương trình, các tiêu chí cho áp dung công nghệ và thiết kế. Có nghĩa là chương trình xây dựng phải đảm bảo đi theo mô hình phân tích và thiết kế. Để làm được điều đó thì chương trình xây dựng phải:
- Xây dựng hệ thống chức năng của ứng dụng phải đảm bảo đúng như các chức năng được phân tích và thiết kế.
- Xây dựng cấu trúc của chương trình phải tương thích với mô hình MVC.
- Các bảng biểu chương trình phải đúng với thiết kế.
1.2. Kế hoạch phát triển:
-Ngoài các tiêu chí xây dưng chương trình, khi phát triển ứng dụng cần phải thực hiện các bước sau một cách tuân thủ chặt chẽ.
Bước 1: Cài đặt cơ sở dữ liệu và các dữ liệu khởi tạo chương trình. Bước 2: Xây dựng cấu trúc chương trình.
Bước 3: Phát triển các chức năng theo thiết kế.
2. Cài đặt cơ sở dữ liệu và dữ liệu khởi tạo:
2.1.Tạo cơ sở dữ liệu:
-Tạo cơ sở dữ liệu trong SQL Server 2005 với tên là HRM (Human Resour).
2.2. Tạo các bảng biểu:
2.2.1. Bảng Thumuc_Taikhoan:
2.2.2. Bảng Taikhoan:
[Tên Tài Khoản] nchar(20) Checked [Mật Khẩu]nchar(20) Checked
[Quản Trị] int Checked
2.2.3. Bảng NhanVien:
[Mã Nhân Viên] nchar(15) Checked Tên nchar(15) Checked
Họ nchar(30) Checked
[Ngày Sinh]datetime Checked [Địa chỉ] nchar(50) Checked
[Số CMTND] nchar(15) Checked
[Ngày Kí Hợp Đồng] datetime Checked [Nơi Kí Hợp Đồng] nchar(30) Checked [Chuyên Môn] nchar(30) Checked
Phòng nchar(30) Checked
[Ngày Bắt Đầu] datetime Checked [Ngày Kết Thúc] datetime Checked [Loại Hợp Đồng] nchar(50) Checked [Mức Lương] int Checked
2.2.4. Bảng Thumuc:
[Mã Thư Mục] nchar(10) Checked [Tên Thư Mục] nchar(30) Checked [Đường Kết Nối] nchar(100) Checked
3. Cấu trúc chương trình áp dụng mô hình MVC:
3.1. Cấu trúc thư mục của chương trình:
-Cấu trúc thư mục chương trình được hiển thị theo hình cây với mỗi thư mục con tương ứng giữ một nhiệm vụ chính trong chình. 3.2. Các thành phần trong cấu trúc: 3.2.1. Thư mục common:
-Chứa các hàm các thủ tục dùng chung như: các hàm xâu, các hàm về toán học, ...
3.2.2. Thư mục Controller:
3.2.3. Thư mục Controller:
-Là thư mục trong cấu trúc mo hình MVC, chứa các đối tương mô tả các đối tượng trong hệ thống chương trình.
3.2.3. Thư mục Images:
-Là thư mục chứa các logo, ảnh của chương trình.
-Thư mục nằm trong cấu trúc mô hình MVC, là chức năng View của cấu trúc. Tất cả giao tiếp giữa người dùng và chương trình được xây dựng trong chức năng này.
3.2.4. Các thành phần khác:
a. Trang default.aspx: là trang mặc định của chương trinh, Chương trình khi chạy sẽ chạy vào trang này đầu tiên.
b. Tệp web.config: là tệp cấu hình của chương trình. Sử dụng để cấu hình kết nối với cơ sở dữ liệu.
4. Xây dựng các chức năng trong hệ thống:
4.1. Quản lý người dùng:
4.1.1. Chức năng đăng nhập
a. Mục đích: Sử dụng để đăng nhập hệ thống. b. Giao diện chương trình:
c. Đoạn mã chính trong chương trình:
protected void btnLogin_Click(object sender, EventArgs e)
{
string strUsername = this.txtUsername.Text; string strPassword = this.txtPassword.Text;
int intCount =
objAccountDB.CheckAccount(objAccountDetails);
Session["sesUsername"] = strUsername; Session["sesPassword"] = strPassword; if (intCount == -1) { Response.Write(objAccountDB.ErrorDetail); Response.Write("<br>"); return; } if (intCount != 0) { Response.Redirect(GetApplicationPath() + "/Interface/home.aspx?page=interface/wellcome.aspx"); }
Response.Write("don't access right!");
} }
4.1.2. Hiển thị danh sách người dùng:
a. Mục đích: hiển thị danh sách người dùng, từ đây có thể link đến chức năng quản lý thư mục.
c. Đoạn mã chính:
public partial class Interface_AccessWebsite_AccountList :
System.Web.UI.Page
{
private AccountDB objAccountDB = new AccountDB(); private AccountDetails[] arrAccountDetails;
protected void Page_Load(object sender, EventArgs e) { arrAccountDetails = objAccountDB.GetAllAccounts(); this.grdAccounts.DataSource = arrAccountDetails; grdAccounts.DataBind(); } }
4.1.3.Thay đổi Mật khẩu:
a. Mục đích: Là một trong những chức năng cập nhật người dùng, chức năng sử dụng để thay đổi mật khẩu của người dùng. Chức năng này chỉ thay đổi mật khẩu cho chính người dùng đang sử dụng
c. Đoạn mã chính:
protected void btnChange_Click(object sender, EventArgs
e) {
// Check suitable between Password and ConfirmPassword
if (this.txtConfirmPassword.Text != this.txtPassword.Text)
{
this.lblMessage.Text = "Password anh confirm is suitable!"; return; } // Change Password objAccountDetails.Username = (string)Session["sesUsername"]; objAccountDetails.Password = this.txtPassword.Text; int intError = objAccountDB.ChangePassword(objAccountDetails); // check blank pass
//if (objAccountDB.ChangePassword(objAccountDetails) == 1 ) //{ // check error if (intError == 0) {
this.lblMessage.Text = "Don't use blank password";
return; }
else {
this.lblMessage.Text = "Password chage successfully!";
return; }
} }
4.1.4. Tạo người dùng mới:
a. Mục đích: Dùng để tạo mới người dùng, chức năng chỉ có người quản trị mới được sử dụng.
b. Giao diện:
c.Đoạn mã chính:
protected void Accept_Click(object sender, EventArgs e) {
string _username = this.txtUsername.Text; string _password = this.txtPassword.Text;
if (objCommon.CheckEmpty(this.txtUsername.Text) == 1) {
Response.Write("Don't use blank Username !"); return;
}
if (objCommon.CheckEmpty(this.txtPassword.Text) == 1) {
Response.Write ("Don't use blank password !"); return;
}
if (this.txtPassword.Text != this.txtConf.Text) {
Response.Write("Password anh confirm is suitable!"); return; } string _administrator; if (CheckBox1.Checked) _administrator = "1"; else _administrator = "0";
AccountDetails accdetail = new
AccountDetails(_username, _password, _administrator);
int _count = accdb.CheckAccount(_username); if (_count == 0)
{
Response.Write("Account is not readly!");
int _flag = accdb.InsertAccount(accdetail); if (_flag == 1)
{
Response.Write("Insert Account is success!");
} else {
Response.Write("Insert Account is not success!");
} } else {
Response.Write("Account is readly!"); }
} }
4.1.5. Xóa tài khoản:
a. Mục đích: Sử dụng để xóa tài khỏan người dùng trong hệ thông, chức năng này chỉ có người dùng quản trị mới được dùng.
d. Đoạn mã chính:
protected void Page_Load(object sender, EventArgs e)
{
DialogResult reply;
reply = MessageBox.Show("Are you sure ?", "Yes or No Demo", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (reply == DialogResult.Yes)
{ int intError = objAccountDB.DeleteAccount(Request.QueryString["username"]); if (intError == 1) { Response.Redirect("~/interface/accesswebsite/AccountList.aspx "); return; } Response.Write(objAccountDB.ErrorDetail); return; } else Response.Redirect("~/interface/accesswebsite/AccountList.aspx "); }
4.2. Quản lý nhân viên:
4.2.1. Hiển thị danh sách nhân viên:
a. Mục đích: Chức năng này dùng để theo dõi danh sách nhân viên trong công ty, để có thể theo dõi, thống kê và báo cáo một cách dễ dàng và thuận tiện.
b. Giao diện:
c. Đoạn mã chính:
protected void Page_Load(object sender, EventArgs e)
{ //Response.Write(objEmployeeDB.ConnectionString); //Response.Write("<br>"); arrEmployeeDetails = objEmployeeDB.GetEmployees(); if (objEmployeeDB.Error == 1) { lblMessage.Text = "Error: " + objEmployeeDB.ErrorDetail; return; } this.grdEmployees.DataSource = arrEmployeeDetails; grdEmployees.DataBind(); }
a. Mục đích: Sử dụng để xóa nhân viên ra khỏi hệ thống quản lý nhân sự. Chức năng này chỉ có người quản lý nhân sự mới có quyền truy cập.
b. Giao diện:
c. Đoạn mã chính:
protected void Page_Load(object sender, EventArgs e)
{ int intError = objEmployeeDB.DeleteEmployee(Request.QueryString["EmployeeID" ]); if (intError == 1) { Response.Redirect("~/interface/employees/emplist.aspx"); return; } Response.Write(objEmployeeDB.ErrorDetail); } }
4.2.3. Cập nhật thông tin nhân viên:
a. Mục đích: là chức năng chỉnh sửa thông tin của nhân viên. b. Giao diện:
c. Đoạn mã chính:
protected void bntUpdate_Click(object sender, EventArgs
e) {
Common objCommon = new Common();
EmployeeDetails objEmployeeDetail = new
EmployeeDetails();
EmployeeDB objEmployeeDB = new EmployeeDB(); objEmployeeDetail.EmployeeID =
this.txtEmployeeID.Text;
objEmployeeDetail.FirstName = this.txtFirstName.Text; objEmployeeDetail.LastName = this.txtLastName.Text; objEmployeeDetail.DateOfBirth =
this.lstDayOfDateOfBirth.Text, this.lstMonthOfDateOfBirth.Text, this.lstYearOfDateOfBirth.Text); objEmployeeDetail.PernamentAddress = this.txtPernamentAddress.Text; objEmployeeDetail.IDCardNumber = this.txtIDCardNumber.Text; objEmployeeDetail.IssuedDate = objCommon.ConvertIntToDate( this.lstDayOfIssuedDate.Text, this.lstMonthOfIssuedDate.Text, this.lstYearOfIssuedDate.Text); objEmployeeDetail.IssuedPlace = this.txtIssuedPlace.Text; objEmployeeDetail.Title = this.txtTitle.Text; objEmployeeDetail.Department = this.txtDepartment.Text; objEmployeeDetail.StartDate = objCommon.ConvertIntToDate( this.lstDayOfStartDate.Text, this.lstMonthOfStartDate.Text, this.lstYearOfStartDate.Text); objEmployeeDetail.ProbEnd = objCommon.ConvertIntToDate( this.lstDayOfProbEnd.Text, this.lstMonthOfProbEnd.Text, this.lstYearOfProbEnd.Text); objEmployeeDetail.EndDate = objCommon.ConvertIntToDate( this.lstDayOfEndDate.Text, this.lstMonthOfEndDate.Text, this.lstYearOfEndDate.Text); objEmployeeDetail.ContractStatus = this.txtContractStatus.Text; objEmployeeDetail.GrossSalaryStatus = objCommon.ConvertStrToNum(this.txtGrossSalaryStatus.Text); objEmployeeDB.UpdateEmployee(objEmployeeDetail); if (objEmployeeDB.Error == 1) { Response.Write(objEmployeeDB.ErrorDetail); } else { Response.Redirect("EmpList.aspx"); }
4.2.4. Thêm mới nhân viên:
a. Mục đích: Sử dụng để làm thêm mới một nhân viên, khi nhân viên đó được kí hợp đồng thử việc, hay hợp đồng chính thức.
b. Giao diện:
c. Đoạn mã chính:
protected void bntAddNew_Click(object sender, EventArgs
e) {
EmployeeDetails objEmployeeDetail = new
EmployeeDetails();
EmployeeDB objEmployeeDB = new EmployeeDB(); objEmployeeDetail.EmployeeID = this.txtEmployeeID.Text; objEmployeeDetail.FirstName = this.txtFirstname.Text; objEmployeeDetail.LastName = this.txtLastname.Text; objEmployeeDetail.DateOfBirth = objCommon.ConvertIntToDate( this.lstDayOfDateOfBirth.Text, this.lstMonthOfDateOfBirth.Text, this.lstYearOfDateOfBirth.Text); objEmployeeDetail.PernamentAddress = this.txtPernamentAddress.Text; objEmployeeDetail.IDCardNumber = this.txtIDCardNumber.Text; objEmployeeDetail.IssuedDate = objCommon.ConvertIntToDate( this.lstDayOfIssuedDate.Text, this.lstMonthOfIssuedDate.Text, this.lstYearOfIssuedDate.Text); objEmployeeDetail.IssuedPlace = this.txtIssuedPlace.Text; objEmployeeDetail.Title = this.txtTitle.Text; objEmployeeDetail.Department = this.txtDepartment.Text; objEmployeeDetail.StartDate = objCommon.ConvertIntToDate( this.lstDayOfStartDate.Text, this.lstMonthOfStartDate.Text, this.lstYearOfStartDate.Text); objEmployeeDetail.ProbEnd = objCommon.ConvertIntToDate( this.lstDayOfProbEnd.Text, this.lstMonthOfProbEnd.Text, this.lstYearOfProbEnd.Text); objEmployeeDetail.EndDate = objCommon.ConvertIntToDate( this.lstDayOfEndDate.Text, this.lstMonthOfEndDate.Text, this.lstYearOfEndDate.Text); objEmployeeDetail.ContractStatus = this.txtContractStatus.Text;
objEmployeeDetail.GrossSalaryStatus = objCommon.ConvertStrToNum(this.txtGrossSalaryStatus.Text);// .ToInt32(this.txtContractStatus.Text); // objEmployeeDetail.PernamentAddress = this.txtPernamentAddress.Text; int intError = objEmployeeDB.InsertEmployee(objEmployeeDetail); if (intError == -1) { Response.Write(objEmployeeDB.ErrorDetail); return; } else { Response.Write("successly!"); Response.Redirect("EmpList.aspx"); } // Response.Redirect("EmpAddview.aspx"); }
4.3.Quản lý phân quyền:
4.3.1. Hiển thị danh sách phân quyền:
a. Mục đích: Sử dụng để quản lý việc phân quyền hệ thống cho các user.
b. Giao diện:
c. Đoạn mã:
public partial class Interface_AccessWebsite_DeleteAccMenu :
private MenuDB objMenuDB = new MenuDB();
protected void Page_Load(object sender, EventArgs e) { int intError = objMenuDB.DeleteMenuAccount(Request.QueryString["Username"], Request.QueryString["IDMenu"]); if (intError == 1) { Response.Redirect("~/interface/accesswebsite/EditAccMenu.aspx "); return; } Response.Write("Error"); return; } }
4.3.2. Cập nhật phân quyền người dùng:
a. Mục đích: Sử dụng để thêm mới, xóa quyền sử dụng của người dùng.
b. Giao diện:
public partial class Interface_AccessWebsite_DeleteAccMenu : System.Web.UI.Page
{
private MenuDB objMenuDB = new MenuDB();
protected void Page_Load(object sender, EventArgs e) { int intError = objMenuDB.DeleteMenuAccount(Request.QueryString["Username"], Request.QueryString["IDMenu"]); if (intError == 1) { Response.Redirect("~/interface/accesswebsite/EditAccMenu.aspx "); return; } Response.Write("Error"); return; } }
KẾT LUẬN
Vơí nền kinh tế thị trường ngày càng phát triển như nước ta hiện nay, việc xuất hiện nhiều tập đoàn, công ty được thành lập và phát triển với tốc độ nhanh chóng, chính vì vậy, việc quản lý nhân sự là một phần không thể thiếu. Trong thời gian thực tập ở công ty cổ phần công nghệ thanh toán Việt Nam- Vinapay, em đã tham gia xây dựng chương trình quản lý nhân sự của công ty. Qua đó, em đã bước đầu được làm quen và tiếp thu một số kiến thức cơ bản về SQL Server, Asp.net, C#...
Với chương trình “Quản Lý Nhân Sự Công Ty Vianapay”, em mong muốn đưa ra được cái nhìn tổng thể về việc quản lý nhân sự trong công ty một cách đơn giản và hiệu quả nhất. Về cơ bản, chương trình đã đáp ứng được những chức năng đơn giản như: nhập, sửa chữa, xóa, thêm mới, quản lí, bảo mật thông tin của nhân viên trong công ty.
Do còn hạn chế về kiến thức cũng như kinh nghiệm thực tế nên khi xây dựng chương trình còn nhiều mặt hạn chế như: thiếu phần tính hệ số lương, hay quản lý thông tin nhân viên còn nhiều thiếu xót…Em rất mong được sự hướng dẫn khắc phục và chỉ bảo của thầy cô.
Một lần nữa, em xin chân thành cảm ơn công ty Vianapay và thầy Đặng Minh Ất đã giúp đỡ em trong quá trình thực tập và hoàn thành đề tài.
TÀI LIỆU THAM KHẢO
*E-BOOKS : 1. Kỹ thuật lập trình C#.
2. Tìm hiểu C# và ứng dụng. Đồng tác giả: Phạm Văn Việt-Trương Lập Vĩ_Bộ môn Công nghệ phần mềm-Khoa Công nghệ thông tin- Trường Đại học Khoa Học Tự Nhiên.
3. Introduction to ASP.Net.
4. SQL Instant Reference. Tác giả: Martin Gruber.
5. Complete IIS Training Coure. Tác giả: Torn Dell và Marine Leroux.
*Website: 1.www.javavietnam.org
2.www.wikipedia.org
PHỤ LỤC
1.CÁC KÍ HIỆU TRONG PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG:
Tác nhân ngoài: Chức năng : Luồng dữ liệu : Kho dữ liệu :
2.Một số hàm sử dụng trong bảng cơ sơ dữ liệu:
• Nchar: hàm cố định chiều dài chuỗi kí tự.
• Datetime: hàm thời gian (ngày, tháng).
• Int (hàm số nguyên).
3.Từ viết tắt trong bài:
* HTML: Hyper Text Markup Language. * XML: Extension Markup Language. * HTTP: Hyper Text Transfer Protocol. * FTP: File Transfer Protocol.
* DBA: Database Administrator. * POP3: Post Office Protocol.
MỤC LỤC
Lời mở đầu...1
Chương I: GIỚI THIỆU VỀ CÔNG TY THỰC TẬP ...3
I.Giới thiệu công ty Vinapay:...4
1. Giới thiệu chung: ...4
1.1. Tầm nhìn của Vinapay:...4
1.2. Sứ mệnh của Vinapay:...4
1.3. Cam kết của Vinapay:...5
1.4. Chiến lược:...5
2. Cơ cấu tổ chức công ty:...6
2.1. Sơ đồ tổ chức:...6
2.2. Đội ngũ quản lý:...6
2.2.1. Ông Nguyễn Trọng Khang ...6
2.2.2. Ông Hoàng Kim Chương...7
2.2.3. Ông Đỗ Việt Hà...7
2.2.4. Bà Nguyễn Hương Giang:...8
CHƯƠNG II.TỔNG QUAN VỀ ỨNG DỤNG WEB - QUẢN LÝ NHÂN SỰ...9
1. Mục đích xây dựng chương trình:...10
2. Tổng quan về chương trình:...10
3.Ứng dụng Web:...11
3.1. Khái niệm: ...11
3.2. Lịch sử phát triển và ưu điểm của ứng dụng web:...12
3.3. Các kĩ thuật trong Web application:...13
4. Các công nghệ sử dụng để triển khai và phát triển ứng dụng:...15
4.1. Internet Information Server (IIS)...16
4.1.1 Khái niêm:...16
4.1.2. IIS có thể làm được gì?...17
4.1.3. IIS hoạt động như thế nào?...17
4.2. SQL Server 2005 : ...18
4.2.1. Khái niệm: ...18
4.2.2. Phân loại SQL Server: ...19
4.2.3. Các phiên bản của SQL Server: ...20
4.2.4. Các thành phần quan trọng trong SQL Server 2005:...20
4.3. ASP.NET...26
4.3.1. Khái niệm vềASP.NET:...26 -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 có,
4.3.2. Môi trường phát triển ứng dụng ASP.NET: ...26 -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...27
4.3.3. Các tính năng lập trình trong ASP.NET: ...27 a). 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ẽ...28 b). 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:...28
Web Forms cho phép xây dựng các form có nội dung phong phú (powerful forms) trên trang Web (Web Page). Khi xây dựng các form có thể sử dụng các server control để tạo các thành phần UI thông dụng và lập trình cho chúng một vài chức năng thông dụng, những control này cho phép xây dựng nhanh chóng các form chỉ dùng một lần (out of reusable built-in), hoặc các custom component, làm đơn giản mã của trang web (simplifying the code of a page)...28
c). 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...29 d). 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:...29