Kha day du :D ACS Full

Nguon:http://sinhvienaptech.info/forum/viewtopic.php?f=94&t=2991

You are a developer is assigned to create assembly Math.DLL version 1.0.0.0 with some public methods: Add (Int32, Int32), Subtract (Int32, Int32), Multiple (Int32, Int32), Divide (Int32, Int32). Then the assembly Math.DLL version 1.0.0.0 is deployed in to GAC on the test computer. To test the Math.DLL you need write Tester.exe version 1.0.0.0 to call all method in the Math.dll.

Bạn là một nhà phát triển được phân công để tạo ra phiên bản assembly Math.DLL 1.0.0.0 với các phương thức public: Add (Int32, Int32), Subtract (Int32, Int32), Multiple (Int32, Int32), Divide (Int32, Int32). Sau đó, triển khai assembly Math.DLL phiên bản 1.0.0.0 vào GAC trên máy tính thử nghiệm. Để kiểm tra Math.DLL bạn cần viết Tester.exe phiên bản 1.0.0.0 để gọi tất cả các phương thức trong Math.dll.

The Math.DLL version must update version 1.0.1.0 detail: add one more method Percent (Float, Float). Then the assembly Math.DLL version 1.0.1.0 is deployed in to GAC on the test computer. Take a picture to show evident you have deployed Math.Dll successfully in GAC. Build the custom attributes to know the method or class is belong to what version (if in a class only some methods is change the version then the version of the class is the highest version of the methods).

Cập nhật Math.DLL lên phiên bản 1.0.1.0: thêm phương thức Percent(Float, Float). Sau đó, triển khai assembly Math.DLL phiên bản 1.0.1.0 vào GAC trên máy tính thử nghiệm. Chụp ảnh chứng minh bạn đã triển khai Math.Dll thành công vào GAC. Xây dựng thuộc tính tự định nghĩa để biết phương thức hoặc lớp thuộc về phiên bản nào (nếu trong một lớp chỉ có một số phương thức thay đổi phiên bản thì phiên bản của lớp là phiên bản cao nhất của các phương thức).

Now, assume that you are a tester; you need to test the Tester.exe version 1.0.0.0 to can be run with Math.dll version 1.0.1.0. Check the attributes in the Math assembly by using reflection.

Bây giờ, giả sử rằng bạn là người kiểm tra, bạn cần phải thử nghiệm Tester.exe phiên bản 1.0.0.0 có thể chạy với Math.dll phiên bản 1.0.1.0. Kiểm tra các thuộc tính trong assembly Math sử dụng reflection.

Modify Math.dll and register Math.dll as COM on the test computer. Take a picture to show evident you have deployed COM in registry. Write an application by Visual Basic 6.0 to call a method on the Math COM.

Sửa đổi và đăng ký Math.dll là COM trên máy tính thử nghiệm. Chụp ảnh để chứng minh bạn đã triển khai COM trong registry. Viết một ứng dụng bằng Visual Basic 6.0 để gọi một phương thức của COM Math.

Develop a demo multithread application, to demo threads are parallel running and they can waiting together and they can be have priority.

Phát triển một ứng dụng demo đa luồng để demo các threads chạy song song, demo các threads đợi nhau và demo các threads có gán quyền ưu tiên.

Develop a demo streams and files application, to demo use stream file and know the current active directory.

Phát triển ứng dụng demo stream và file, để demo cách sử dụng stream file và biết thư mục hiện đang hoạt động.

Develop a demo XML application, demo using XmlDocument to load authorsxml.xml display the content of the xml file in screen and apply authorsxsl.xsl to convert author.html

Phát triển một ứng dụng demo XML, demo sử dụng XmlDocument để load file authorsxml.xml hiển thị nội dung của file xml lên màn hình và áp dụng authorsxsl.xsl để chuyển đổi author.html

 

Mình sẽ giải theo cách của thầy, mỗi phần tạo 1 solution riêng cho dễ hiểu.

Bài sẽ được lưu trong thư mục C:\ThiThu

1. Math version 1.0.0.0

– Tạo project mới đặt tên Math, trong file Program.cs gõ vào

Mã:
using System;
using System.Collections.Generic;
using System.Text;

namespace Math
{
public class Calculation
{
public int Add(int a, int b)
{
return a + b;
}

public int Substract(int a, int b)
{
return a – b;
}

public int Multiple(int a, int b)
{
return a * b;
}

public int Divide(int a, int b)
{
return a / b;
}
}
}

– Chọn Properties của project,

      + ở Tab Application –> Output type: chọn Class Library
    + tiếp Tab Signing, click vào Sign the assembly, trong danh sách xổ xuống chọn <New…>, gõ tên vào, tắt dấu tick.
Hình ảnh

– Build Project

– Triển khai vào GAC, làm theo hình:

Hình ảnh

– Cài đặt thành công Math 1.0.0.0

2. Math version 1.0.1.0

– Tắt Visual Studio 2005

– Vào thư mục C:\ThiThu, đổi tên thư mục Math thành Math1.0.0.0, sao chép thêm 1 phiên bản và sửa thành Math1.0.1.0

Hình ảnh

– Vào thư mục C:\ThiThu\Math1.0.1.0, mở solution Math lên.

– Tạo mới class CodeAttributes.cs, là thuộc tính tự định nghĩa.

Mã:
using System;
using System.Collections.Generic;
using System.Text;

namespace Math
{
[AttributeUsage(AttributeTargets.All, Inherited = true, AllowMultiple = true)]
public class CodeAttributes : Attribute
{
string author;

public string Author
{
get { return author; }
}
string reviewer;

public string Reviewer
{
get { return reviewer; }
}
string reviewDate;

public string ReviewDate
{
get { return reviewDate; }
}
string version;

public string Version
{
get { return version; }
}

public CodeAttributes()
{ }

public CodeAttributes(string author, string reviewer, string reviewDate, string version)
{
this.author = author;
this.reviewer = reviewer;
this.reviewDate = reviewDate;
this.version = version;
}
}
}

– Sửa code trong Program.cs thành

Mã:
using System;
using System.Collections.Generic;
using System.Text;

namespace Math
{
[CodeAttributes(“npthien”, “bdien”, “12/04/2010”, “1.0.0.0”)]
public class Calculation
{
[CodeAttributes(“npthien”, “bdien”, “12/04/2010”, “1.0.0.0”)]
public int Add(int a, int b)
{
return a + b;
}

[CodeAttributes(“npthien”, “bdien”, “12/04/2010”, “1.0.0.0”)]
public int Substract(int a, int b)
{
return a – b;
}

[CodeAttributes(“npthien”, “bdien”, “12/04/2010”, “1.0.0.0”)]
public int Multiple(int a, int b)
{
return a * b;
}

[CodeAttributes(“npthien”, “bdien”, “12/04/2010”, “1.0.0.0”)]
public int Divide(int a, int b)
{
return a / b;
}

[CodeAttributes(“npthien”, “bdien”, “13/04/2010”, “1.0.1.0”)]
public float Percent(float a, float b)
{
return a / b * 100;
}
}
}

– Trong cửa sổ Solution Explorer, chọn Properties, click đôi vào AssemblyInfo.cs, kéo xuống dưới cùng sửa version thành 1.0.1.0.

Mã:
[assembly: AssemblyVersion(“1.0.1.0”)]
[assembly: AssemblyFileVersion(“1.0.1.0”)]

– Build Project

– Triển khai vào GAC, tương tự phía trên, lưu ý lúc này là thư mục Math1.0.1.0

– Vào C:\WINDOWS\assembly để xem kết quả

Hình ảnh

3. Đưa vào .NET Framework

– Vào registry, tiếp HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders

– Click phải chọn New –> Key

– Đặt tên theo phiên bản, gồm có 2 key: Math 1.0.0.0 và Math 1.0.1.0

– Click phải vào Key chọn Modify, gõ vào:

      C:\\Windows\\Assembly\\GAC_MSIL\\Math\\1.0.0.0__536d4e6e3679264c
    C:\\Windows\\Assembly\\GAC_MSIL\\Math\\1.0.1.0__536d4e6e3679264c

– 2 dãy số màu đỏ sẽ được lấy trong C:\WINDOWS\assembly, tìm đến key Math, click phải chọn Properties, click đôi vào Public Key Token, copy và dán vào 2 dãy số màu đỏ phía trên.

4. Get attributes

– Tạo solution mới, tên ReflectAttributes

– Trong cửa sổ Solution Explorer, click phải vào References –> Add Reference, ở Tab .NET chọn Math 1.0.1.0 –> Ok

Hình ảnh

– Trong Program.cs, gõ vào:

Mã:
using System;
using System.Collections.Generic;
using System.Text;
using Math;
using System.Reflection;

namespace ReflectAttributes
{
class Program
{
static void Main(string[] args)
{
// Lay ve thong tin attributes cua Class
Type type = typeof(Calculation);

CodeAttributes attr = (CodeAttributes)Attribute.GetCustomAttribute(type, typeof(CodeAttributes));

// Hien thi thong tin ra man hinh
Console.WriteLine(“Class name  : ” + type.Name);
Console.WriteLine(“Author      : ” + attr.Author);
Console.WriteLine(“Reviewer    : ” + attr.Reviewer);
Console.WriteLine(“Review Date : ” + attr.ReviewDate);
Console.WriteLine(“Version     : ” + attr.Version);

Console.WriteLine(“\n——————————–\n”);

// Lay ve thong tin attributes cua cac Method trong Class

MethodInfo[] methods = type.GetMethods();
object[] attributes = null;

for (int i = 0; i < methods.Length; i++)
{
attributes = methods[i].GetCustomAttributes(true);
foreach (Object attribute in attributes)
{
CodeAttributes obj = (CodeAttributes)attribute;

Console.WriteLine(“Method name : ” + methods[i].Name);
Console.WriteLine(“Author      : ” + obj.Author);
Console.WriteLine(“Reviewer    : ” + obj.Reviewer);
Console.WriteLine(“Review Date : ” + obj.ReviewDate);
Console.WriteLine(“Version     : ” + obj.Version);

Console.WriteLine(“\n——————————–\n”);
}
}

Console.ReadKey();
}
}
}

– Chạy để xem kết quả

5. Demo Threads chạy song song, đợi nhau

– Tạo solution mới, tên ThreadParallel

– Trong Program.cs, gõ vào:

Mã:
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;

namespace ThreadParallel
{
class Program
{
static void Thread_1()
{
Thread.Sleep(3000);
Console.WriteLine(“This is thread 1”);
}

static void Thread_2()
{
Thread.Sleep(1000);
Console.WriteLine(“This is thread 2”);
}

static void Main(string[] args)
{
Thread t1 = new Thread(new ThreadStart(Thread_1));
Thread t2 = new Thread(new ThreadStart(Thread_2));

t1.Start();
t2.Start();

Console.WriteLine(“This is the first sentence of main thread”);

t1.Join();

Console.WriteLine(“This is the second sentence of main thread”);

Console.ReadLine();
}
}
}

– Chạy thử để kiểm tra

6. Demo Threads có gán quyền ưu tiên

– Tạo solution mới, tên ThreadPrior

– Trong Program.cs, gõ vào:

Mã:
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;

namespace ThreadPrior
{
class Program
{
static void Thread_1()
{
Console.WriteLine(“—————-“);
Console.WriteLine(“This is thread 1”);
Console.WriteLine(“—————-\n”);
}

static void Thread_2()
{
Console.WriteLine(“—————-“);
Console.WriteLine(“This is thread 2”);
Console.WriteLine(“—————-\n”);
}

static void Main(string[] args)
{
Thread t1 = new Thread(new ThreadStart(Thread_1));
Thread t2 = new Thread(new ThreadStart(Thread_2));

t1.Priority = ThreadPriority.Highest;
t2.Priority = ThreadPriority.Lowest;

t2.Start();
t1.Start();

Console.WriteLine(“———————–“);
Console.WriteLine(“This is the main thread”);
Console.WriteLine(“———————–\n”);

Console.ReadLine();
}
}
}

– Chạy để xem kết quả
7. Demo stream, file, và directory

– Tạo mới solution, tên FileDirectory

– Trong Program.cs, gõ vào:

Mã:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace FileDirectory
{
class Program
{
static void Main(string[] args)
{
string rootPath = “C:\\Temp”;
string filePath;
StreamWriter strWriter;
StreamReader strReader;
string displayText;

Directory.CreateDirectory(rootPath);
Directory.SetCurrentDirectory(rootPath);

strWriter = new StreamWriter(“Parent Text.txt”);
filePath = Directory.GetCurrentDirectory();

Console.WriteLine(“Created a file in ” + filePath);
strWriter.WriteLine(“I love you so much”);
strWriter.Close();

Directory.CreateDirectory(“ChildFolder”);
filePath = Directory.GetCurrentDirectory();
Console.WriteLine(“The current directory is : ” + filePath);

Directory.SetCurrentDirectory(filePath + “\\ChildFolder”);
filePath = Directory.GetCurrentDirectory();
Console.WriteLine(“The current directory is : ” + filePath);

strWriter = new StreamWriter(“Child Text.txt”);
Console.WriteLine(“Created a file in ” + filePath);
strWriter.WriteLine(“Welcome to CP200909L class!”);
strWriter.Close();

strReader = new StreamReader(“Child Text.txt”);
displayText = strReader.ReadLine();
Console.WriteLine(“\n——- Read file content ——-\n”);
Console.WriteLine(displayText);
strReader.Close();

Console.ReadKey();
}
}
}

– Chạy để xem kết quả

8. XML Document

– Tạo mới solution, tên XmlDom

– Nhấn F5 chạy Project để ra thư mục C:\ThiThu\XmlDom\XmlDom\bin\Debug

– Copy 2 file peoplexml.xml và peoplexsl.xsl vào thư mục trên

Tập tin đính kèm:
XmlDom.rar [619 Byte]
Đã tải về 23 lần.

– Trong Program.cs, gõ vào:

Mã:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Xml;
using System.Xml.Xsl;

namespace XmlDom
{
class Program
{
static void Main(string[] args)
{
string fileName = “peoplexml.xml”;

StreamReader strReader = new StreamReader(fileName);
XmlDocument xmlDom = new XmlDocument();

if (fileName != “”)
{
xmlDom.Load(strReader);
}

XmlNode thisnode = xmlDom.DocumentElement;

Console.WriteLine(“Welcome to XML World!”);

for (int i = 0; i < thisnode.ChildNodes.Count; i++)
{
Console.WriteLine(thisnode.ChildNodes[i].Name);
}

Console.WriteLine(“———————“);

strReader.Close();

XslCompiledTransform objXSLT = new XslCompiledTransform();

string xslFileName, xmlFileName, htmlFileName, currentPath;

currentPath = Directory.GetCurrentDirectory();

xslFileName = currentPath + “\\” + “peoplexsl.xsl”;
xmlFileName = currentPath + “\\” + “peoplexml.xml”;
htmlFileName = currentPath + “\\” + “peoplehtml.html”;

objXSLT.Load(xslFileName);

objXSLT.Transform(xmlFileName, htmlFileName);

Console.WriteLine(“File html has just created in current directory”);

Console.ReadKey();
}
}
}

– Chạy Project, sau đó vào thư mục C:\ThiThu\XmlDom\XmlDom\bin\Debug, chạy file peoplehtml.html

– Cuối cùng, chúc mọi người thi tốt!

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s