Wednesday, February 22, 2012

LESSON 03: ASSEMBLY , STRONG NAME AND GLOBAL ASSEMBLY CACHE

Objectives:
ü     Hiểu về Microsoft Intermediate Language (MSIL)
ü     Các loại Assembly
ü     Làm việc với Private Assembly
ü     Tại sao và cách khai báo Shared Assembly
ü     Khái niệm Strong Name và tiện ích SN.EXE
ü     Làm việc với  tiện ích GACUtil
ü     Đăng ký Shared Assembly đến Global Assembly Cache(GAC)
ü     Cách khai báo Friend Assembly
ü     Tại sao và cách khai báo Friend Assembly
  



EXERCISES : Tạo mới Solution tên Exercise03Soln
Exercise 01 : Thêm Class Library mới vào Solution tên là PrivateAssembly

·        Using System.Data.SqlClient
·        Đổi Class1 thành DataProvider.cs
o       Khai báo biến Protected
§        Khai báo protected statics kiểu là SqlConnection với tên sqlConnection
§        Khai báo protected kiểu là string với tên commandText
§        Khai báo protected kiểu là string với tên connectionString giá trị mặc định là : "server=(local);database=StudentManagementForProfessional;integrated security=true";
#region variable
        protected static SqlConnection sqlConnection ;
        protected string commandText = string.Empty;
        protected string connectionString = "server=(local);database=StudentManagementForProfessional;integrated security=true";
#endregion variable
o       Khai báo Public Properties
§        Khai báo Public get và set Property kiểu là string với tên CommandText
§        Khai báo Public get và set Property kiểu là string với tên ConnectionString
#region Properties
        public string CommandText
        {
            get { return commandText; }
            set { commandText = value; }
        }
        public string ConnectionString
        {
            get { return connectionString; }
            set { connectionString = value; }
        }
        #endregion Properties
o       Khai báo Public Method
§        Khai báo phương thức OpenConnection và khởi tạo đối tượng sqlConnection với biến connectionString
§        Khai báo phương thức CloseConnection để đóng và hủy đối tượng sqlConnection
#region Method
        public void OpenConnection()
        {
            if (sqlConnection==null)
            {
                sqlConnection = new SqlConnection(connectionString);
                sqlConnection.Open();
            }
        }
        public void CloseConnection()
        {
            if (sqlConnection!=null)
            {
                sqlConnection.Close();
                sqlConnection.Dispose();
            }
        }
  #endregion Method
Exercise 02 : Tiếp tục với PrivateAssembly
·        Thêm mới 1 Class tên là DataTableProvider.cs
·        Khai báo kế thừa từ Class DataProvider
·        Khai báo phương thức tên GetDataTable trả ra đối tượng DataTable dựa trên biến commandText
o       Dựa trên biến static sqlConnection
o       Khởi đối tượng SqlDataAdapter và SqlCommand
namespace PrivateAssembly
{
    public class DataTableProvider:DataProvider
    {
       
        public DataTable GetDataTable()
        {
            DataTable dataTable = null;
            OpenConnection();
            SqlCommand sqlCommand = new SqlCommand(commandText, sqlConnection);
            SqlDataAdapter sqldataAdapter = new SqlDataAdapter(sqlCommand);
            dataTable = new DataTable();
            sqldataAdapter.Fill(dataTable);
            return dataTable;
        }
    }
}
·        Build project và kiểm tra PrivateAssembly.dll được tạo trong folder BIN \ Debug ?
Exercise 03 : Thêm mới Windows Application Project đến Exercise03Soln  tên là UsePrivateAssembly
·        Add reference PrivateAssembly.dll từ PrivateAssembly project
·        Kiểm tra PrivateAssembly.dll đã được copy đến thư mục BIN \ Debug ?
·        Khai báo sử dụng namespace là PrivateAssembly
·        Thêm DataGridView và Button (btnShow) vào Form1
o       Khởi tạo DataTableProvider và gán cho thuộc tính  CommandText là Select * from TableName
o       Gọi phương thức GetDataTable và lấy ra đối tượng DataTable sau đó đổ vào DataGridView
Exercise 04 : Mở  Visual Studio 2008 Command  Promt
   

·        Thay đổi folder hiện hành thành C:\
·        Tạo file strong name by cách sau :
o       Sn –k ShareAssembly.snk

·        Kiểm tra ShareAssembly.snk có trong C:/ ?
Exercise 05: Thêm Class Library mới vào Solution tên là SharedAssembly
·        Xóa Class1.cs
·        Copy DataProvider.cs và DataTableProvider.cs từ PrivateAssembly đến SharedAssembly project

·        Thay đổi namespace
o       Mở Class DataProvider và đổi namespace PrivateAssembly thành SharedAssembly
o       Mở Class DataTableProvider và đổi namespace PrivateAssembly thành SharedAssembly
o       Chép ShareAssembly.snk từ  đĩa C:/ vào folder ShareAssembly
o       Mở AssemblyInfo.cs và xuống bên dưới của file
o       Add [assembly: AssemblyKeyFile("ShareAssembly.snk")]

o       Build project và kiểm tra ShareAssembly.dll được tạo trong folder BIN \ Debug ?
Exercise 06 : Mở  Visual Studio 2008 Command  Promt
·        Copy ShareAssembly.dll đến C:\Windows\Microsoft.NET\Framework\v2.0.50727

·        Mở đường dẫn C:\Windows\assembly
·        Đăng ký assembly đến GAC bằng cách sử dụng 1 trong 2 cách sau
o       Copy ShareAssembly.dll đến C:\Windows\assembly
o       Trong Visual Studio 2008 Command  Promt gõ GACUtil.exe /I C:\Windows\Microsoft.NET\Framework\v2.0.50727
·        Kiểm tra  ShareAssembly.dll có trong C:\Windows\assembly ?
Exercise 07 : Thêm mới Windows Application Project đến Exercise03Soln  tên là UseSharedAssembly
·        Add reference SharedAssembly.dll từ Tab .NET

·        Kiểm tra SharedAssembly.dll đã được copy đến thư mục BIN \ Debug ?(không có)
·        Khai báo sử dụng namespace là SharedAssembly
·        Thêm DataGridView và Button (btnShow) vào Form1
o       Khởi tạo DataTableProvider và gán cho thuộc tính  CommandText là Select * from TableName
o       Gọi phương thức GetDataTable và lấy ra đối tượng DataTable sau đó đổ vào DataGridView
Exercise 08: Thêm Class Library mới vào Solution tên là FriendAssembly
·        Xóa Class1.cs
·        Copy DataProvider.cs và DataTableProvider.cs từ PrivateAssembly đến SharedAssembly project
·        Thay đổi namespace
o       Mở Class DataProvider và đổi namespace PrivateAssembly thành FriendAssembly
o       Mở Class DataTableProvider và đổi namespace PrivateAssembly thành FriendAssembly
o       Mở DataTableProvider và khai báo Using
     using System.Runtime.CompilerServices;
o       Trước namespace FriendAssembly thêm [assembly:InternalsVisibleTo("UseFriendAssembly")]
o       Build project và kiểm tra FriendAssembly.dll được tạo trong folder BIN \ Debug ?
Exercise 09 : Thêm mới Windows Application Project đến Exercise03Soln  tên là UseFriendAssembly
·        Add reference FriendAssembly.dll từ folder BIN\Debug của project FriendAssembly
·        Kiểm tra FriendAssembly.dll đã được copy đến thư mục BIN \ Debug của UseFriendAssembly?(có)
·        Khai báo sử dụng namespace là FriendAssembly
·        Thêm DataGridView và Button (btnShow) vào Form1
o       Khởi tạo DataTableProvider và gán cho thuộc tính  CommandText là Select * from TableName
o       Gọi phương thức GetDataTable và lấy ra đối tượng DataTable sau đó đổ vào DataGridView
Exercise 10 : Thêm mới Windows Application Project đến Exercise03Soln  tên là UseCanNotFriendAssembly
·        Add reference FriendAssembly.dll từ folder BIN\Debug của project FriendAssembly
·        Kiểm tra FriendAssembly.dll đã được copy đến thư mục BIN \ Debug  của UseCanNotFriendAssembly ?(có)
·        Khai báo sử dụng namespace là FriendAssembly
·        Thêm DataGridView và Button (btnShow) vào Form1
o       Khởi tạo DataTableProvider và gán cho thuộc tính  CommandText là Select * from TableName
o       Gọi phương thức GetDataTable và lấy ra đối tượng DataTable sau đó đổ vào DataGridView
o       Bạn sẽ thấy lỗi khi khởi tạo DataTableProvider vì không nhìn thấy assembly đươc add reference vào*********  

0 comments:

Post a Comment