Archive for May 2017

Bất đồng bộ với Entity Framework, tại sao không?

thuvienwinform - Chỉ với một thay đổi nhỏ, phần mềm sẽ thay đổi đáng kể về hiệu suất cũng như tương tác với người dùng. Dòng chữ "Not Responding" sẽ đi vào dĩ vãng, người dùng sẽ có thêm thời gian để làm nhiều công việc hơn, tán gái chẳng hạn :D khi mà phần mềm của bạn chạy một cách trơn tru, mượt như bôi Neptune vậy.

Bất đồng bộ và câu chuyện bắt cá 2 tay
Trong khi người yêu lúc nào cũng kè kè bên cạnh thì làm sao bạn có thể tán tỉnh cô gái khác, thậm chỉ là lên Facebook, Instagram ngắm vài em xinh tươi cũng là cả một thử thách khó khăn. Nhưng nếu bạn điêu luyện, bạn sẽ sử dụng 2 tay của mình một cách hiệu quả. Một tay ôm ấp vuốt ve con gấu nằm cạnh cho nó tê còn một tay sẽ thoải mái mà vuốt cái màn hình điện thoại để ngắm các em xinh tươi và code :v. Với lập trình bất đồng bộ thì việc bắt cá 2 tay này vô cùng đơn giản, trong khi tiến trình chính đang try hart và chương trình đáng lẽ bị treo (như việc người yêu bạn kè kè bên cạnh vậy) và các code khác sẽ phải ém mình chờ đến lượt mình chạy (các em gái khác sẽ phải né mình chờ đến lượt được vuốt ve). Những tác vụ nặng, chiếm tài nguyên sẽ được đẩy ra một luồng xử lý khác, tiến trình chính vẫn được thực hiện, chương trình không hề bị treo. Hay tương tự như Windows vậy, trong khi code vẫn có thể nghe nhạc, xem phim, quay tay,...

Trong lập trình đồng bộ, các đoạn code được thực hiện tuần tự, code đứng sau chỉ được thực hiện khi code trước nó được thực hiện xong. Nhưng trong bất đồng bộ, code đứng sau có thể được thực hiện khi code đứng trước nó chưa thực hiện xong. Việc này có thể được thực hiện bằng việc tạo các thread nhưng trong .NET Framework 4.5 thì chỉ cần 2 từ khóa asyncawait thôi, bạn muốn mọc bao nhiêu tay cũng được.

Bạn đã thật sự biết cách ngoại tình khi sử dụng Entity Framework
Các phiên bản EF gần đây đã hỗ trợ bất đồng bộ cho một số hàm (những hàm, thủ tục kết thúc bằng Async) như LoadAsync, SaveChangesAsync,...tham khảo thêm tại đây.
Vấn đề đáng sợ nhất của làm việc nhóm là thay đổi công nghệ, tin mình đi. Để các coder sử dụng công nghệ mới sẽ mất cả năm trời, sản phẩm sẽ trở nên rời rạc, không ăn khớp nhưng với async, await thì code sẽ chỉ thay đổi một chút rất ít. Thay vì Load() nay chỉ cần tthay thế bằng await LoadAsync()
 
private async Task NapDuLieuAsync()
{
    XuLyDaLuong.ThayDoiTextLabel(lblTrangThai, "Đang tải dữ liệu...", Color.Red);
    _db = new QLTTTNModel();
    _dbCheck = new QLTTTNModel();

    //Load
    await _db.tbNguoiYeu1.Where(p => p.IdCuocTinh == _idCuocTinh).LoadAsync();
    await _db.tbNguoiYeu2.LoadAsync();
    await _db.tbNguoiYeu3.LoadAsync();
    await _db.tbNguoiYeu4.LoadAsync();
}
private async void frm_Load(object sender, EventArgs e)
{
    await this.NapDuLieuAsync();
}

Chỉ cần thêm async và await thôi, thay đổi không nhiều về lượng nhưng chất đã biến đổi. Phần mềm của bạn sẽ đốn tim hầu hết khách hàng với sự mượt mà của nó.
Hay sống thật vui và yêu thật nhiều :D
5/17/2017
Đăng bởi :
Nhãn : ,

Nhận ngay 100$ cho VPS

Mua hàng ủng hộ page

Ủng hộ page

Nhãn

Code (45) Team Foundation Server (17) Database (14) News (14) product (13) toolbox (10) Linq (9) SoftDesign (8) XNA (6) API (5) Project (5) item (4)

- Bản quyền thuộc về Thư Viện WinForm - Giao diện: Metrominimalist - Thiết kế: Johanes Djogan -