Upload
hoc-lap-trinh-web
View
839
Download
7
Embed Size (px)
DESCRIPTION
1. Kiến trúc ba tầng 2. Object Data Source 3. Triển khai ứng dụng
Citation preview
Bài 7:Đối tượng Data Source
-Đóng gói ứng dụng- Giới thiệu các kĩ thuật lập trình ASP.NET nâng cao
Các nội dung đã học trong bài trướcGiới thiệu các điều khiển hiển thị dữ liệuĐiều khiển GridViewĐiều khiển DetailsView
Hệ thống bài cũ
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 2
Mục tiêu môn học
1. Kiến trúc ba tầng
2. Object Data Source
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 3
2. Object Data Source
3. Triển khai ứng dụng
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 4
Hầu hết các chuyên gia pháttriển ứng dụng đều sử dụngkiến trúc ba tầng để pháttriển ứng dụng web.Kiến trúc ba tầng phân táchphần trình bày, các quy tắcnghiệp vụ, thành phần truycập CSDL của ứng dụngBa tầng:
Tầng trình bàyTầng trung gianTầng CSDL
Kiến trúc ba tầngtrong ứng dụng ASP.NET
Web FormTầngtrìnhbày
Hầu hết các chuyên gia pháttriển ứng dụng đều sử dụngkiến trúc ba tầng để pháttriển ứng dụng web.Kiến trúc ba tầng phân táchphần trình bày, các quy tắcnghiệp vụ, thành phần truycập CSDL của ứng dụngBa tầng:
Tầng trình bàyTầng trung gianTầng CSDL
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 5
Lớp truy cậpCSDL
CSDL
Tầngtrunggian
TầngCSDL
Lớp nghiệp vụ
Tầng trình bầy:Gồm các trang ASP.NET quản lý giao diện ứng dụng.
Tầng trung gianGồm các lớp truy cập dữ liệu quản lý truy cập dữ liệu ứngdụng.Có thể chứa các đối tượng nghiệp vụ và các quy tắcnghiệp vụ
Ví dụ: Đối tượng nghiệp vụ: Các lớp biểu diễn thực thể kháchhàng, sản phẩm, nhân viên…Quy tắc nghiệp vụ: Chính sách giảm giá…
Tầng CSDLCSDL của ứng dụng
Kiến trúc ba tầngtrong ứng dụng ASP.NET
Tầng trình bầy:Gồm các trang ASP.NET quản lý giao diện ứng dụng.
Tầng trung gianGồm các lớp truy cập dữ liệu quản lý truy cập dữ liệu ứngdụng.Có thể chứa các đối tượng nghiệp vụ và các quy tắcnghiệp vụ
Ví dụ: Đối tượng nghiệp vụ: Các lớp biểu diễn thực thể kháchhàng, sản phẩm, nhân viên…Quy tắc nghiệp vụ: Chính sách giảm giá…
Tầng CSDLCSDL của ứng dụng
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 6
Cung cấp phương thức truy xuất dữ liệu từ CSDL.Phương thức chèn, cập nhật, xóa dữ liệu sử dụng các kĩthuật truy cập CSDL như ADO.NET.
Nên đặt trong folder App_Code.
Lớp truy cập CSDL
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 7
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 8
Giống với SQL data source, Object data source cungcấp phương pháp:
Truy xuất hiển thị dữ liệu từ CSDL cho người dùngCập nhật CSDL.
KhácObject data source cho phép phát triển ứng dụng CSDLtheo kiến trúc ba tầngObject data source truy cập dữ liệu qua lớp truy cập dữliệu. SQL data source truy cập CSDL trực tiếp.
Với các ứng dụng nhỏ, sử dụng SQL data source manglại nhiều lợi ích, không phải viết code C#.Với các ứng dụng lớn, nên thiết kế theo kiến trúc batầng. Do đó, nên sử dụng ObjectDataSource
Object Data Source
Giống với SQL data source, Object data source cungcấp phương pháp:
Truy xuất hiển thị dữ liệu từ CSDL cho người dùngCập nhật CSDL.
KhácObject data source cho phép phát triển ứng dụng CSDLtheo kiến trúc ba tầngObject data source truy cập dữ liệu qua lớp truy cập dữliệu. SQL data source truy cập CSDL trực tiếp.
Với các ứng dụng nhỏ, sử dụng SQL data source manglại nhiều lợi ích, không phải viết code C#.Với các ứng dụng lớn, nên thiết kế theo kiến trúc batầng. Do đó, nên sử dụng ObjectDataSource
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 9
Ứng dụng CategoryMaint hiển thị thông tin danh mụcsản phẩm trong CSDL, cho phép người dùng cập nhậtthông tin danh mục sản phẩmỨng dụng gồm:
Một điều khiển GridView hiển thị danh sách phân loại sảnphẩmMột điều khiển DetailsView thiết kế ở chế độ Insert chophép người dùng thêm mới sản phẩm
Giới thiệu ứng dụng CategoryMaint
Ứng dụng CategoryMaint hiển thị thông tin danh mụcsản phẩm trong CSDL, cho phép người dùng cập nhậtthông tin danh mục sản phẩmỨng dụng gồm:
Một điều khiển GridView hiển thị danh sách phân loại sảnphẩmMột điều khiển DetailsView thiết kế ở chế độ Insert chophép người dùng thêm mới sản phẩm
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 10
Tổ chức ứng dụng trên theo kiến trúc ba tầng, sử dụngđiều khiển ObjectDataSource để thao tác với CSDL
Tầng trình bày: Web Form Default.aspxHai điều khiển objectDatasourceHai điều khiển buộc dữ liệu (drop-down list và datalist)
Tầng trung gian: Lớp truy cập CSDL ProductDB, lớp nghiệpvụ CategoryTầng CSDL: CSDL Halloween lưutrong hệ quản trị SQL Server
Thiết kếứng dụng theo kiến trúc ba tầng
Tổ chức ứng dụng trên theo kiến trúc ba tầng, sử dụngđiều khiển ObjectDataSource để thao tác với CSDL
Tầng trình bày: Web Form Default.aspxHai điều khiển objectDatasourceHai điều khiển buộc dữ liệu (drop-down list và datalist)
Tầng trung gian: Lớp truy cập CSDL ProductDB, lớp nghiệpvụ CategoryTầng CSDL: CSDL Halloween lưutrong hệ quản trị SQL Server
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 11
CategoryDB,Category
CSDLHallowen
Tầngtrìnhbày
Tầng trunggian
TầngCSDL
Object DataSource
Điều khiển buộc dữ liệu
Web Form
Cấu trúc thư mục của ứng dụng
Thiết kếứng dụng theo kiến trúc ba tầng
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 12
Nội dung demoTạo chuỗi kết nối trong File web.configThiết kết giao diệnTạo lớp nghiệp vụ: CategoryTạo lớp truy cập CSDL:
Tạo lớp CategoryDB
Truy xuất dữ liệu từ CSDLThêm ObjectDataSource, chỉ định CategoryDB là lớp truy cậpdữ liệu cho ObjectDataSource nàyLiên kết ObjectDataSource với các điều khiển
Thêm chức năng cập nhật dữ liệu cho điều khiểnKiểm soát lỗi thao tác với CSDL
Viết mã xử lý sự kiện cho các sự kiện ItemInserted...
DemoXây dựng ứng dụng ProductList
theo kiến trúc ba tầng
Nội dung demoTạo chuỗi kết nối trong File web.configThiết kết giao diệnTạo lớp nghiệp vụ: CategoryTạo lớp truy cập CSDL:
Tạo lớp CategoryDB
Truy xuất dữ liệu từ CSDLThêm ObjectDataSource, chỉ định CategoryDB là lớp truy cậpdữ liệu cho ObjectDataSource nàyLiên kết ObjectDataSource với các điều khiển
Thêm chức năng cập nhật dữ liệu cho điều khiểnKiểm soát lỗi thao tác với CSDL
Viết mã xử lý sự kiện cho các sự kiện ItemInserted...Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 13
Tạo chuỗi kết nối trong file web.config
Chuỗi kết nối
<connectionStrings><add name="HalloweenConnectionString" connectionString="Data
Source=localhost\sqlexpress;Initial Catalog=Halloween;IntegratedSecurity=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 14
Thêm các điều khiển:GridViewDetailsViewLabel
Thiết kế giao diện
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 15
Khai báo các thuộc tính tương ứng với các cột lấy từCSDL và các hàm get, set của các thuộc tính này
Lớp nghiệp vụ Category
public class Category{
private string categoryID;private string shortName;private string longName;
public string CategoryID{
get { return categoryID; }set { categoryID = value; }
}
public string ShortName{
get { return shortName; }set { shortName = value; }
}
public string LongName{
get { return longName; }set { longName = value; }
}public Category(){}}
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 16
public class Category{
private string categoryID;private string shortName;private string longName;
public string CategoryID{
get { return categoryID; }set { categoryID = value; }
}
public string ShortName{
get { return shortName; }set { shortName = value; }
}
public string LongName{
get { return longName; }set { longName = value; }
}public Category(){}}
Cung cấp các phương thức truy xuất, thêm, cập nhật,xóa dữ liệu và trả về kiểu đối tượng DataObject cho điềukhiển ObjectDataSource
Để chỉ định CategoryDB là lớp truy cập CSDLThêm dòng [DataObject(true)] vào trước dòng khai báolớp
Lớp truy cập CSDL CategoryDB
Cung cấp các phương thức truy xuất, thêm, cập nhật,xóa dữ liệu và trả về kiểu đối tượng DataObject cho điềukhiển ObjectDataSource
Để chỉ định CategoryDB là lớp truy cập CSDLThêm dòng [DataObject(true)] vào trước dòng khai báolớp
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 17
Các phương thức của CategoryDBLấy chuỗi kết nối được lưu trong file web.config
private static string GetConnectionString(){
returnConfigurationManager.ConnectionStrings
["HalloweenConnectionString"].ConnectionString;
}
Truy xuất tất cả danh mục sản phẩm trong bảng Categorytrả về kiểu List[DataObjectMethod(DataObjectMethodType.Select)]
public static List<Category> GetCategories(){}
Lớp truy cập CSDL CategoryDB
Các phương thức của CategoryDBLấy chuỗi kết nối được lưu trong file web.config
private static string GetConnectionString(){
returnConfigurationManager.ConnectionStrings
["HalloweenConnectionString"].ConnectionString;
}
Truy xuất tất cả danh mục sản phẩm trong bảng Categorytrả về kiểu List[DataObjectMethod(DataObjectMethodType.Select)]
public static List<Category> GetCategories(){}
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 18
Chỉ định đây là phươngthức của lớp truy cậpCSDL
Phương thức cập nhật CSDL[DataObjectMethod(DataObjectMethodType.Update)]
public static int UpdateCategory(Categoryoriginal_Category,
Category category) {}
Phương thức xóa CSDL[DataObjectMethod(DataObjectMethodType.Delete)]
public static int DeleteCategory(Categorycategory) {}
Phương thức chèn dữ liệu[DataObjectMethod(DataObjectMethodType.Insert)]
public static int InsertCategory(Categorycategory) {}
Lớp truy cập CSDL CategoryDB
Phương thức cập nhật CSDL[DataObjectMethod(DataObjectMethodType.Update)]
public static int UpdateCategory(Categoryoriginal_Category,
Category category) {}
Phương thức xóa CSDL[DataObjectMethod(DataObjectMethodType.Delete)]
public static int DeleteCategory(Categorycategory) {}
Phương thức chèn dữ liệu[DataObjectMethod(DataObjectMethodType.Insert)]
public static int InsertCategory(Categorycategory) {}
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 19
Truy cập CSDL theo kiến trúc kết nối sử dụng datareader
Phương thức truy xuất dữ liệu
[DataObjectMethod(DataObjectMethodType.Select)]public static List<Category> GetCategories(){
List<Category> categoryList = new List<Category>();SqlConnection con = new SqlConnection(GetConnectionString());string sel = "SELECT CategoryID, ShortName, LongName "
+ "FROM Categories ORDER BY ShortName";SqlCommand cmd = new SqlCommand(sel, con);con.Open();SqlDataReader dr =
cmd.ExecuteReader(CommandBehavior.CloseConnection);Category category;while (dr.Read()){
category = new Category();category.CategoryID = dr["CategoryID"].ToString();category.ShortName = dr["ShortName"].ToString();category.LongName = dr["LongName"].ToString();categoryList.Add(category);
}dr.Close();return categoryList;
}Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 20
[DataObjectMethod(DataObjectMethodType.Select)]public static List<Category> GetCategories(){
List<Category> categoryList = new List<Category>();SqlConnection con = new SqlConnection(GetConnectionString());string sel = "SELECT CategoryID, ShortName, LongName "
+ "FROM Categories ORDER BY ShortName";SqlCommand cmd = new SqlCommand(sel, con);con.Open();SqlDataReader dr =
cmd.ExecuteReader(CommandBehavior.CloseConnection);Category category;while (dr.Read()){
category = new Category();category.CategoryID = dr["CategoryID"].ToString();category.ShortName = dr["ShortName"].ToString();category.LongName = dr["LongName"].ToString();categoryList.Add(category);
}dr.Close();return categoryList;
}
Phương thức thêm dữ liệu vào CSDL
[DataObjectMethod(DataObjectMethodType.Insert)]public static int InsertCategory(Category category){
SqlConnection con = new SqlConnection(GetConnectionString());string ins = "INSERT INTO Categories "
+ " (CategoryID, ShortName, LongName) "+ " VALUES(@CategoryID, @ShortName, @LongName)";
SqlCommand cmd = new SqlCommand(ins, con);cmd.Parameters.AddWithValue("CategoryID", category.CategoryID);cmd.Parameters.AddWithValue("ShortName", category.ShortName);cmd.Parameters.AddWithValue("LongName", category.LongName);con.Open();int i = cmd.ExecuteNonQuery();con.Close();return i;
}
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 21
[DataObjectMethod(DataObjectMethodType.Insert)]public static int InsertCategory(Category category){
SqlConnection con = new SqlConnection(GetConnectionString());string ins = "INSERT INTO Categories "
+ " (CategoryID, ShortName, LongName) "+ " VALUES(@CategoryID, @ShortName, @LongName)";
SqlCommand cmd = new SqlCommand(ins, con);cmd.Parameters.AddWithValue("CategoryID", category.CategoryID);cmd.Parameters.AddWithValue("ShortName", category.ShortName);cmd.Parameters.AddWithValue("LongName", category.LongName);con.Open();int i = cmd.ExecuteNonQuery();con.Close();return i;
}
Phương thức cập nhật CSDL
[DataObjectMethod(DataObjectMethodType.Update)]public static int UpdateCategory( Category category){
SqlConnection con = new SqlConnection(GetConnectionString());string up = "UPDATE Categories "
+ "SET ShortName = @ShortName, "+ "LongName = @LongName "+ "WHERE CategoryID = @original_CategoryID "
;SqlCommand cmd = new SqlCommand(up, con);cmd.Parameters.AddWithValue("ShortName", category.ShortName);cmd.Parameters.AddWithValue("LongName", category.LongName);cmd.Parameters.AddWithValue("original_CategoryID",
category.CategoryID);
con.Open();int updateCount = cmd.ExecuteNonQuery();con.Close();return updateCount;
}
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 22
[DataObjectMethod(DataObjectMethodType.Update)]public static int UpdateCategory( Category category){
SqlConnection con = new SqlConnection(GetConnectionString());string up = "UPDATE Categories "
+ "SET ShortName = @ShortName, "+ "LongName = @LongName "+ "WHERE CategoryID = @original_CategoryID "
;SqlCommand cmd = new SqlCommand(up, con);cmd.Parameters.AddWithValue("ShortName", category.ShortName);cmd.Parameters.AddWithValue("LongName", category.LongName);cmd.Parameters.AddWithValue("original_CategoryID",
category.CategoryID);
con.Open();int updateCount = cmd.ExecuteNonQuery();con.Close();return updateCount;
}
Phương thức xóa CSDL
[DataObjectMethod(DataObjectMethodType.Delete)]public static int DeleteCategory(Category category){
SqlConnection con = new SqlConnection(GetConnectionString());string del = "DELETE FROM Categories "
+ "WHERE CategoryID = @CategoryID "+ "AND ShortName = @ShortName "+ "AND LongName = @LongName ";
SqlCommand cmd = new SqlCommand(del, con);cmd.Parameters.AddWithValue("CategoryID", category.CategoryID);cmd.Parameters.AddWithValue("ShortName", category.ShortName);cmd.Parameters.AddWithValue("LongName", category.LongName);con.Open();int i = cmd.ExecuteNonQuery();con.Close();return i;
}
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 23
[DataObjectMethod(DataObjectMethodType.Delete)]public static int DeleteCategory(Category category){
SqlConnection con = new SqlConnection(GetConnectionString());string del = "DELETE FROM Categories "
+ "WHERE CategoryID = @CategoryID "+ "AND ShortName = @ShortName "+ "AND LongName = @LongName ";
SqlCommand cmd = new SqlCommand(del, con);cmd.Parameters.AddWithValue("CategoryID", category.CategoryID);cmd.Parameters.AddWithValue("ShortName", category.ShortName);cmd.Parameters.AddWithValue("LongName", category.LongName);con.Open();int i = cmd.ExecuteNonQuery();con.Close();return i;
}
Thêm ObjectDataSource
Truy xuất dữ liệu từ CSDL
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 24
Chọn lớp truycập CSDL
Chọn phương thức truycập CSDL trong các tab
SELECT, INSERT…
Liên kết Object DataSource với điều khiển
Truy xuất dữ liệu từ CSDL
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 25
Tham khảo các thuộc tính trong SGK
Mã aspx của Object data source
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"ConflictDetection="CompareAllValues"
DataObjectTypeName="Category"DeleteMethod="DeleteCategory" InsertMethod="InsertCategory"OldValuesParameterFormatString="original_{0}"
SelectMethod="GetCategories"TypeName="CategoryDB" UpdateMethod="UpdateCategory">
</asp:ObjectDataSource>
Tham khảo các thuộc tính trong SGK
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 26
Thêm các button edit, delete cho GridViewThêm button Insert cho Details.Đặt chế độ mặc định cho DetailsView là Insert (gánthuộc tính DefaultMode = Insert)
Thêm chức năngcập nhật dữ liệu cho điều khiển
Thêm các button edit, delete cho GridViewThêm button Insert cho Details.Đặt chế độ mặc định cho DetailsView là Insert (gánthuộc tính DefaultMode = Insert)
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 27
Thêm sự kiện RowUpdated, RowDeleted cho GridViewThêm sự kiện ItemInserted cho DetailsView
Kiểm soát lỗi thao tác với
Thêm sự kiện RowUpdated, RowDeleted cho GridViewThêm sự kiện ItemInserted cho DetailsView
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 28
Phương thức xử lý sự kiện RowUpdated
protected void GridView1_RowUpdated(Object sender, GridViewUpdatedEventArgs e)
{if (e.Exception != null){
lblError.Text = "A database error has occurred.<br /><br />" +e.Exception.Message;
if (e.Exception.InnerException != null)lblError.Text += "<br />Message: "
+ e.Exception.InnerException.Message;e.ExceptionHandled = true;e.KeepInEditMode = true;
}else if (e.AffectedRows == 0)
lblError.Text = "Another user may have updated that category."+ "<br />Please try again.";
}
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 29
protected void GridView1_RowUpdated(Object sender, GridViewUpdatedEventArgs e)
{if (e.Exception != null){
lblError.Text = "A database error has occurred.<br /><br />" +e.Exception.Message;
if (e.Exception.InnerException != null)lblError.Text += "<br />Message: "
+ e.Exception.InnerException.Message;e.ExceptionHandled = true;e.KeepInEditMode = true;
}else if (e.AffectedRows == 0)
lblError.Text = "Another user may have updated that category."+ "<br />Please try again.";
}
Phương thức xử lý sự kiện RowDeleted
protected void GridView1_RowDeleted(object sender, GridViewDeletedEventArgs e)
{if (e.Exception != null){
lblError.Text = "A database error has occurred.<br /><br />" +e.Exception.Message;
if (e.Exception.InnerException != null)lblError.Text += "<br />Message: "
+ e.Exception.InnerException.Message;e.ExceptionHandled = true;
}else if (e.AffectedRows == 0)
lblError.Text = "Another user may have updated that category. "+ "<br />Please try again.";
}
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 30
protected void GridView1_RowDeleted(object sender, GridViewDeletedEventArgs e)
{if (e.Exception != null){
lblError.Text = "A database error has occurred.<br /><br />" +e.Exception.Message;
if (e.Exception.InnerException != null)lblError.Text += "<br />Message: "
+ e.Exception.InnerException.Message;e.ExceptionHandled = true;
}else if (e.AffectedRows == 0)
lblError.Text = "Another user may have updated that category. "+ "<br />Please try again.";
}
Phương thức xử lý sự kiện ItemInserted
protected void DetailsView1_ItemInserted(object sender, DetailsViewInsertedEventArgs e)
{if (e.Exception != null){
lblError.Text = "A database error has occurred.<br /><br />" +e.Exception.Message;
if (e.Exception.InnerException != null)lblError.Text += "<br />Message: "
+ e.Exception.InnerException.Message;e.ExceptionHandled = true;
}}
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 31
protected void DetailsView1_ItemInserted(object sender, DetailsViewInsertedEventArgs e)
{if (e.Exception != null){
lblError.Text = "A database error has occurred.<br /><br />" +e.Exception.Message;
if (e.Exception.InnerException != null)lblError.Text += "<br />Message: "
+ e.Exception.InnerException.Message;e.ExceptionHandled = true;
}}
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 32
Triển khai (Deploy) là quá trình copy một ứng dụng webASP.NET từ hệ thống phát triển ứng dụng tới server chạyứng dụng.Ba phương pháp triển khai ứng dụng:
Triển khai XcopyTriển khai tiền biên dịchTạo Web Setup Project
Triển khai ứng dụng ASP.NET
Triển khai (Deploy) là quá trình copy một ứng dụng webASP.NET từ hệ thống phát triển ứng dụng tới server chạyứng dụng.Ba phương pháp triển khai ứng dụng:
Triển khai XcopyTriển khai tiền biên dịchTạo Web Setup Project
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 33
Copy toàn bộ File nguồn của ứng dụng tới ServerHai cách triển khai Xcopy
Sử dụng lệnh XcopySử dụng lệnh Copy Web site trong Visual Studio
Phương pháp này thực hiện khá dễThường dùng để tạo bản copy của ứng dụng trên cácserver khác nhau để kiểm thử.Với ứng dụng nhỏ là phương pháp tốt nhất
Triển khai XCopy
Copy toàn bộ File nguồn của ứng dụng tới ServerHai cách triển khai Xcopy
Sử dụng lệnh XcopySử dụng lệnh Copy Web site trong Visual Studio
Phương pháp này thực hiện khá dễThường dùng để tạo bản copy của ứng dụng trên cácserver khác nhau để kiểm thử.Với ứng dụng nhỏ là phương pháp tốt nhất
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 34
Mở website trong visual studio.Chọn Copy Web Site trong menu WebsiteClick vào Button Connect để mở hộp thoại Open WebSite để chọn vị trí copy file đếnChọn các File muốn copy và sử dụng button -> để copyfile
Demotriển khai XCopy
Mở website trong visual studio.Chọn Copy Web Site trong menu WebsiteClick vào Button Connect để mở hộp thoại Open WebSite để chọn vị trí copy file đếnChọn các File muốn copy và sử dụng button -> để copyfile
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 35
Biên dịch các trang của ứng dụng, sau đó các fileassembly tiền biên dịch được copy tới server.Hai cách triển khai tiền biên dịch
Sử dụng lệnh Publish Web Site trong Visual StudioSử dụng lệnh aspnet_compiler từ cửa sổ dòng lệnh
Triển khai tiền biên dịch có nhiều ưu điểm hơn triển khaiXcopy
Tăng hiệu năng của người dùng đầu tiên truy cập đến site.Bảo mật hơn vì file nguồn không được copy tới server
Triển khai tiền biên dịch
Biên dịch các trang của ứng dụng, sau đó các fileassembly tiền biên dịch được copy tới server.Hai cách triển khai tiền biên dịch
Sử dụng lệnh Publish Web Site trong Visual StudioSử dụng lệnh aspnet_compiler từ cửa sổ dòng lệnh
Triển khai tiền biên dịch có nhiều ưu điểm hơn triển khaiXcopy
Tăng hiệu năng của người dùng đầu tiên truy cập đến site.Bảo mật hơn vì file nguồn không được copy tới server
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 36
Trong Visual Studio. Chọn Publish Web Site trong menuBuild
DemoTriển khai tiền biên dịch
Chọn vị trí lưufile copy
Nếu chọn checkbox, cácfile nguồn sẽ được triểnkhai cùng các file có thể
thực thi
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 37
Nếu chọn checkbox, cácfile nguồn sẽ được triểnkhai cùng các file có thể
thực thi
Phương pháp này tạo ra một bộ cài theo chuẩnWindows, sử dụng để cài đặt ứng dụng Web lên mộtIIS Server.Sử dụng khi triển khai một ứng dụng trên nhiều serverPhiên bản Visual Web Developer Express không hỗ trợphương pháp triển khai này.
Tạo Web Setup Project
Phương pháp này tạo ra một bộ cài theo chuẩnWindows, sử dụng để cài đặt ứng dụng Web lên mộtIIS Server.Sử dụng khi triển khai một ứng dụng trên nhiều serverPhiên bản Visual Web Developer Express không hỗ trợphương pháp triển khai này.
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 38
Chọn File -> Add -> New Project để hiển thị hộp thoạiAdd New Project
DemoTạo Web Setup Project
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 39
Trong cửa sổ Solution Explorer, nhấn chuột phải vào WebSetup Project chọn Add -> Project Output
DemoTạo Web Setup Project
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 40
Tạo chương trình cài đặt bằng cách nhấn chuột phải lênSolution Explorer chọn Build.Bộ cài tạo ra nằm trong thư mục Debug hoặc Realeasecủa Web Setup Project, gồm 2 file
Setup.exe: File chạySetup.msi: Chứa tất cả các file được cài đặt
Để cài đặt ứng dụng Web, Copy file Setup.exe vàSetup.msi tới server và chạy file setup.exe
Tạo Web Setup Project
Tạo chương trình cài đặt bằng cách nhấn chuột phải lênSolution Explorer chọn Build.Bộ cài tạo ra nằm trong thư mục Debug hoặc Realeasecủa Web Setup Project, gồm 2 file
Setup.exe: File chạySetup.msi: Chứa tất cả các file được cài đặt
Để cài đặt ứng dụng Web, Copy file Setup.exe vàSetup.msi tới server và chạy file setup.exe
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 41
Để Client có thể truy cập đến server, các file ứng dụngphải được copy đến thư mục gốc của Web server(C:\inetpub\wwwroot)Để Client có thể truy cập đến một website không nằmtrong thư mục gốc, ta tạo một thư mục ảo trong IIS đểtrỏ tới thư mục chứa các file của website
Tạo và cấu hình thư mục ảo trong IIS
Để Client có thể truy cập đến server, các file ứng dụngphải được copy đến thư mục gốc của Web server(C:\inetpub\wwwroot)Để Client có thể truy cập đến một website không nằmtrong thư mục gốc, ta tạo một thư mục ảo trong IIS đểtrỏ tới thư mục chứa các file của website
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 42
Các bước tạo và cấu hình thư mục ảoTạo thư mục ảo (Virtual Directory) trong IISChuyển thư mục ảo thành ứng dụngCấu hình xác thựcTạo Application PoolGán Applicaton Pool cho ứng dụngKích hoạt directory browsingThiết lập trang chạy mặc định
DemoTạo và cấu hình thư mục ảo trong IIS7
Các bước tạo và cấu hình thư mục ảoTạo thư mục ảo (Virtual Directory) trong IISChuyển thư mục ảo thành ứng dụngCấu hình xác thựcTạo Application PoolGán Applicaton Pool cho ứng dụngKích hoạt directory browsingThiết lập trang chạy mặc định
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 43
Tạo thư mục ảo trong IISMở IIS: Vào Run -> Inetmgr -> OKSite -> Default Web Site. Nhấn chuột phải chọn AddVirtual DirectoryNhập tên thư mục ảo tại mục Alias.Chọn đường dẫn chỉ đến thư mục gốc của Web site tạimục Physical Path
DemoTạo và cấu hình thư mục ảo trong IIS7
Tạo thư mục ảo trong IISMở IIS: Vào Run -> Inetmgr -> OKSite -> Default Web Site. Nhấn chuột phải chọn AddVirtual DirectoryNhập tên thư mục ảo tại mục Alias.Chọn đường dẫn chỉ đến thư mục gốc của Web site tạimục Physical Path
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 44
Chuyển thư mục ảo thành ứng dụngNhấn chuột phải vào thư mục ảo trên IISChọn Convert to Application
DemoTạo và cấu hình thư mục ảo trong IIS7
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 45
Cấu hình xác thựcChọn Authentication trong vùng giao diện chínhThay đổi trạng thái Enable/Disable
DemoTạo và cấu hình thư mục ảo trong IIS7
Cấu hình xác thựcChọn Authentication trong vùng giao diện chínhThay đổi trạng thái Enable/Disable
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 46
Tạo Application PoolChuột phải vào Application Pools. Chọn Add ApplicaationPoolThiết lập các thông số Name, .NET Framwork version, vàManaged pinplline mode trong hộp thoại Add ApplicationPoolChọn Advanced Setting ở khung Actions bên phải. Thayđổi Identity của Application Pool thành Local System
DemoTạo và cấu hình thư mục ảo trong IIS7
Tạo Application PoolChuột phải vào Application Pools. Chọn Add ApplicaationPoolThiết lập các thông số Name, .NET Framwork version, vàManaged pinplline mode trong hộp thoại Add ApplicationPoolChọn Advanced Setting ở khung Actions bên phải. Thayđổi Identity của Application Pool thành Local System
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 47
Gán Application Pool cho ứng dụngNhấn chuột phải vào tên thư mục ảo trong IISChọn Manage Application -> Advanced SettingChọn Application Pool cho ứng dụng tại mục ApplicationPool trong hộp thoại Advanced Setting
DemoTạo và cấu hình thư mục ảo trong IIS7
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 48
Kích hoạt directory browsingNhấn đúp chuột vào biểu tượng Directory browsing trênvùng làm việc chínhChọn Enable trong khung Actions phía bên phải IIS
DemoTạo và cấu hình thư mục ảo trong IIS7
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 49
Chạy thử ứng dụnghttp://localhost/VirtualDirectoryTest/Order.aspx
DemoTạo và cấu hình thư mục ảo trong IIS7
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 50
Thiết lập trang chạy mặc địnhChọn Default Document trong vùng làm việc chínhChọn mục Add trong khung Actions ở phía bên phảiNhập tên trang thiết lập để chạy mặc định
DemoTạo và cấu hình thư mục ảo trong IIS7
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 51
Chạy ứng dụng trên các trình duyệthttp://localhost/VirtualDirectoryTest/
DemoTạo và cấu hình thư mục ảo trong IIS7
Tên thư mục ảo
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 52
File Web.config chứa các thông tin cấu hình của ứngdụngKhi triển khai ứng dụng, bạn phải chỉnh sửa fileweb.config phù hợp với môi trường server.
Ví dụ: Sửa chuỗi kết nối CSDL
Phương pháp chỉnh sửa file web.configChỉnh sửa bằng các trình soạn thảo: notepad, visualstudio…Sử dụng Web Site Administration Tool
Chọn Website -> ASP.NET configuration trong visual studio
Chỉnh sửa File Web.config
File Web.config chứa các thông tin cấu hình của ứngdụngKhi triển khai ứng dụng, bạn phải chỉnh sửa fileweb.config phù hợp với môi trường server.
Ví dụ: Sửa chuỗi kết nối CSDL
Phương pháp chỉnh sửa file web.configChỉnh sửa bằng các trình soạn thảo: notepad, visualstudio…Sử dụng Web Site Administration Tool
Chọn Website -> ASP.NET configuration trong visual studio
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 53
Các kỹ thuật lập trình ASP.NET khácAJAX: Nhóm AJAXWebpart: Nhóm Webpart
Cung cấp các điều khiển để tạo các web site cho phép ngườidùng chỉnh sửa nội dung, giao diện, và hành vi của trangweb trực tiếp trên trình duyệt
Tạo báo cáo: Nhóm ReportingXây dựng các trang quản lý tài khoản người dùng: NhómLoginTạo các điều khiển người dùng: UserControlSử dụng EmailTạo các trang thông báo lỗiĐiều khiển back-button
Giới thiệucác kỹ thuật lập trình ASP.NET khác
Các kỹ thuật lập trình ASP.NET khácAJAX: Nhóm AJAXWebpart: Nhóm Webpart
Cung cấp các điều khiển để tạo các web site cho phép ngườidùng chỉnh sửa nội dung, giao diện, và hành vi của trangweb trực tiếp trên trình duyệt
Tạo báo cáo: Nhóm ReportingXây dựng các trang quản lý tài khoản người dùng: NhómLoginTạo các điều khiển người dùng: UserControlSử dụng EmailTạo các trang thông báo lỗiĐiều khiển back-button
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 54
Kiến trúc ba tầngKiến trúc ba tầng phân tách phần trình bày, các quy tắcnghiệp vụ, thành phần truy cập CSDL của ứng dụngBa tầng:
Tầng trình bày: Gồm các trang ASP.NET quản lý giao diệnứng dụngTầng trung gian
– Lớp truy cập CSDL– Lớp nghiệp vụ
Tầng CSDL: CSDL của ứng dụng
Tổng kết
Kiến trúc ba tầngKiến trúc ba tầng phân tách phần trình bày, các quy tắcnghiệp vụ, thành phần truy cập CSDL của ứng dụngBa tầng:
Tầng trình bày: Gồm các trang ASP.NET quản lý giao diệnứng dụngTầng trung gian
– Lớp truy cập CSDL– Lớp nghiệp vụ
Tầng CSDL: CSDL của ứng dụng
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 55
Object Data SourceGiống với SQL data source, Object data source cungcấp phương pháp:
Truy xuất hiển thị dữ liệu từ CSDL cho người dùngCập nhật CSDL
KhácObject data source cho phép phát triển ứng dụng CSDLtheo kiến trúc ba tầngObject data source truy cập dữ liệu qua lớp truy cập dữ liệu.SQL data source truy cập CSDL trực tiếp.
Tổng kết
Object Data SourceGiống với SQL data source, Object data source cungcấp phương pháp:
Truy xuất hiển thị dữ liệu từ CSDL cho người dùngCập nhật CSDL
KhácObject data source cho phép phát triển ứng dụng CSDLtheo kiến trúc ba tầngObject data source truy cập dữ liệu qua lớp truy cập dữ liệu.SQL data source truy cập CSDL trực tiếp.
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 56
Triển khai ứng dụngTriển khai (Deploy) là quá trình copy một ứng dụng webASP.NET từ hệ thống phát triển ứng dụng tới server chạyứng dụng.Ba phương pháp triển khai ứng dụng:
Triển khai XcopyTriển khai tiền biên dịchTạo Web Setup Project
Tổng kết
Triển khai ứng dụngTriển khai (Deploy) là quá trình copy một ứng dụng webASP.NET từ hệ thống phát triển ứng dụng tới server chạyứng dụng.Ba phương pháp triển khai ứng dụng:
Triển khai XcopyTriển khai tiền biên dịchTạo Web Setup Project
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao 57