Hotline: 024.62511017

024.62511081

  Trang chủ   Sản phẩm   Phần mềm Dành cho nhà trường   Phần mềm Hỗ trợ học tập   Kho phần mềm   Liên hệ   Đăng nhập | Đăng ký

Tìm kiếm

School@net
 
Xem bài viết theo các chủ đề hiện có
  • Hoạt động của công ty (726 bài viết)
  • Hỗ trợ khách hàng (498 bài viết)
  • Thông tin tuyển dụng (57 bài viết)
  • Thông tin khuyến mại (80 bài viết)
  • Sản phẩm mới (216 bài viết)
  • Dành cho Giáo viên (549 bài viết)
  • Lập trình Scratch (3 bài viết)
  • Mô hình & Giải pháp (156 bài viết)
  • IQB và mô hình Ngân hàng đề kiểm tra (127 bài viết)
  • TKB và bài toán xếp Thời khóa biểu (242 bài viết)
  • Học tiếng Việt (183 bài viết)
  • Download - Archive- Update (289 bài viết)
  • Các Website hữu ích (70 bài viết)
  • Cùng học (92 bài viết)
  • Learning Math: Tin học hỗ trợ học Toán trong nhà trường (78 bài viết)
  • School@net 15 năm (154 bài viết)
  • Mỗi ngày một phần mềm (7 bài viết)
  • Dành cho cha mẹ học sinh (124 bài viết)
  • Khám phá phần mềm (122 bài viết)
  • GeoMath: Giải pháp hỗ trợ học dạy môn Toán trong trường phổ thông (36 bài viết)
  • Phần mềm cho em (13 bài viết)
  • ĐỐ VUI - THƯ GIÃN (363 bài viết)
  • Các vấn đề giáo dục (1210 bài viết)
  • Bài học trực tuyến (1037 bài viết)
  • Hoàng Sa - Trường Sa (17 bài viết)
  • Vui học đường (275 bài viết)
  • Tin học và Toán học (220 bài viết)
  • Truyện cổ tích - Truyện thiếu nhi (180 bài viết)
  • Việt Nam - 4000 năm lịch sử (97 bài viết)
  • Xem toàn bộ bài viết (8223 bài viết)
  •  
    Đăng nhập/Đăng ký
    Bí danh
    Mật khẩu
    Mã kiểm traMã kiểm tra
    Lặp lại mã kiểm tra
    Ghi nhớ
     
    Quên mật khẩu | Đăng ký mới
     
    Thành viên có mặt
    Khách: 11
    Thành viên: 0
    Tổng cộng: 11
     
    Số người truy cập
    Hiện đã có 89501849 lượt người đến thăm trang Web của chúng tôi.

    Sử dụng DotNetNuke như một mô hình phát triển ứng dụng Desktop (Phần II)

    Ngày gửi bài: 31/01/2007
    Số lượt đọc: 5502

    2.5. Mô hình lập trình với DotNetNuke

    2.5.1. Mô hình các đối tượng trong DNN components

    Chúng ta hãy xem xét một ví dụ của việc tạo ra các lớp để có thể thao tác với đối tượng lớp nhân viên (ứng với bảng HT_NhanVien trong CSDL). Các components được tạo ra sẽ có dạng thức như sau. Trong ví dụ này, phương thức lấy thông tin của một nhân viên theo khóa chính MaNhanVien được sử dụng để cho thấy các đối tượng trong kiến trúc của DNN.

    Mô hình của các đối tượng trong DNN được trình bày trong sơ đồ dưới đây

    Controller Class

    Đối tượng điều khiển, sự dụng các phương thức của DataProvider để truy xuất dữ liệu.

    Info Class

    Lớp mô tả các đối tượng lưu trữ thông tin

    DataProvider Class

    Lớp ảo (abstract) định nghĩa các phương thức truy nhập dữ liệu. Lớp ảo này cho phép phát triển độc lập các mô tả truy nhập dữ liệu.

    SqlDataProvider Class

    Đối tượng truy nhập dữ liệu thực sự

    Store Procedure

    Các thủ tục ở CSDL MSSQL server được SqlDataProvider sử dụng

    2.5.2. Triển khai cụ thể của các DNN Components

    public class NhanVienController : DotNetNuke.Entities.Modules.ISearchable, DotNetNuke.Entities.Modules.IPortable

    {
    public NhanVienInfo Get(string maNhanVien)
    {
    return
    (NhanVienInfo)DotNetNuke.Common.Utilities.CBO.FillObject(DataProvider.Instance().GetNhanVien(maNhanVien),
    typeof(NhanVienInfo));
    }
    }
    public class NhanVienInfo
    {
    #region "Private Members"
    string _maNhanVien;
    string _ten;
    bool _gioiTinh;
    DateTime _ngaySinh;
    string _dienThoai;
    string _diaChi;
    string _maPB;
    double _heSoLuong;
    #endregion
    #region "Constructors"
    public NhanVienInfo()
    {
    }

    public NhanVienInfo(string maNhanVien, string ten , bool gioiTinh , DateTime ngaySinh , string dienThoai , string diaChi , string maPB , double heSoLuong)
    {
    public abstract class DataProvider {
    public abstract IDataReader GetNhanVien(string maNhanVien);
    }
    public class SqlDataProvider : DataProvider
    public override IDataReader GetNhanVien(string maNhanVien)
    {
    return (IDataReader)SqlHelper.ExecuteReader(ConnectionString, DatabaseOwner + ObjectQualifier + "HT_NhanVienGet", maNhanVien);
    }
    }

    2.6. Xây dựng thành phần (components) cho lớp Data Access Layer (DAL)

    2.6.1. Khởi động CodeSmith Explorer

    2.6.2. Tạo một kết nối mới

    Chọn Bảng trong CSDL cần triển khai sqlDataProvider cho nó (Chúng ta có thể chọn nhiều bảng để sản sinh cùng một lúc, nhưng để việc trình bày trong sáng hơn thì tôi dẫn ra việc sinh mã với bảng HT_NhanVien

    Có một số lưu ý: Các bảng được chọn sinh mã bắt buộc phải có trường khóa chính (Primary Key) trong bảng. Khi đó các phương thức của SqlDataProvider được sinh ra có thể nhận biết được các tiêu chí như thêm, sửa, xóa, cập nhật và tìm kiếm.

    2.6.3. Việc sinh mã thực hiện thành công

    Khi đó ta chỉ việc chép (copy) phần mã vừa sinh ra vào file SqlDataProvider.cs của lớp SqlDataProvider trong project tạo DAL mà ta đã tạo ra ở trên.

    Đoạn mã chứa các phuơng thức của SqlDataProvider dành cho truy xuất thông tin Nhân viên trong CSDL

    #region "NhanVien Methods"

    public override IDataReader GetNhanVien(string maNhanVien)

    {
    return (IDataReader)SqlHelper.ExecuteReader(ConnectionString, DatabaseOwner + ObjectQualifier + "HT_NhanVienGet", maNhanVien);
    }
    public override IDataReader ListNhanVien()
    {
    return (IDataReader)SqlHelper.ExecuteReader(ConnectionString, DatabaseOwner + ObjectQualifier + "HT_NhanVienList");
    }
    public override int AddNhanVien(string ten, bool gioiTinh, DateTime ngaySinh, string dienThoai, string diaChi, string maPB, double heSoLuong)
    {
    return
    int.Parse(SqlHelper.ExecuteScalar(ConnectionString, DatabaseOwner + ObjectQualifier + "HT_NhanVienAdd", GetNull(ten), GetNull(gioiTinh), GetNull(ngaySinh), GetNull(dienThoai), GetNull(diaChi), GetNull(maPB), GetNull(heSoLuong)).ToString());
    }
    public override void UpdateNhanVien(string maNhanVien, string ten, bool gioiTinh, DateTime ngaySinh, string dienThoai, string diaChi, string maPB, double heSoLuong)
    {
    SqlHelper.ExecuteNonQuery(ConnectionString, DatabaseOwner + ObjectQualifier + "HT_NhanVienUpdate", maNhanVien, GetNull(ten), GetNull(gioiTinh), GetNull(ngaySinh), GetNull(dienThoai), GetNull(diaChi), GetNull(maPB), GetNull(heSoLuong));
    }
    public override void DeleteNhanVien(string maNhanVien)
    {
    SqlHelper.ExecuteNonQuery(ConnectionString, DatabaseOwner + ObjectQualifier + "HT_NhanVienDelete", maNhanVien);
    }
    #endregion

    Xây dựng các Store Procedure một cách tự động cũng sử dụng một template có sẵn mà ta đã tải về trong DNN Template đó là StoredProcedures.cst. Có một số chú ý, vì các Store procedure được sử dụng trong việc cài đặt các modules của DNN trên mô hình portal nên một số tiền tố được lưu vào tong đoạn mã sql. Để chuyển về mô hình ứng dụng của chúng ta thì cần thay thế

    * “{databaseOwner}” thành “dbo.” * “{objectQualifier}” thành “” (chuỗi rỗng)

    Và công việc cuối cùng của chúng ta chỉ là chạy sql script này trong SQL Analyzer.

    2.7. Xây dựng thành phần cho lớp triển khai (Bussiness Logic Layer-BLL)

    Công việc triển khai lớp BLL cũng được thực hiện tương tự. Chúng ta sẽ sử dụng các code templates và dùng Code Smith để sinh mã cho các lớp trong BLL. Các templates này được liệt kê dưới đây:

    Có một lưu ý khi sử dụng các template này là chúng ta phải cung cấp “{objectQualifier}” khi thực hiện sinh mã, tham số này bắt buộc phải có. Trong mô hình đưa ra ví dụ ở đây chúng ta đã xây dựng các bảng trong CSDL với tiền tố “HT_” và nó chính là tham số mà chúng ta phải cung cấp cho ObjectQualifier.

    Nguyên nhân của việc xây dựng hệ thống với ObjectQualifier là để chúng ta có thể quản lý nhiều modules và các project khác nhau một cách độc lập nhưng lại có thể giao tiếp với nhau một cách rõ ràng. Đặc điểm này cho phép xây dựng những hệ thống có ưu thế về quản lý mã nguồn.

    3. 3. Gắn kết các thành phần vào một Solution cho phát triển ứng dụng

    School@net



     Bản để in  Lưu dạng file  Gửi tin qua email


    Những bài viết khác:



    Lên đầu trang

     
    CÔNG TY CÔNG NGHỆ TIN HỌC NHÀ TRƯỜNG
     
    Phòng 804 - Nhà 17T1 - Khu Trung Hoà Nhân Chính - Quận Cầu Giấy - Hà Nội
    Phone: 024.62511017 - 024.62511081
    Email: kinhdoanh@schoolnet.vn


    Bản quyền thông tin trên trang điện tử này thuộc về công ty School@net
    Ghi rõ nguồn www.vnschool.net khi bạn phát hành lại thông tin từ website này
    Site xây dựng trên cơ sở hệ thống NukeViet - phát triển từ PHP-Nuke, lưu hành theo giấy phép của GNU/GPL.