Điểm mới trong .NET Core (C#) (edit)

Hôm nay mình sẽ giới thiệu từ mới để các bạn tự khám phá trong ASP.NET Core 2.1

  • Span<T>
  • Memory<T>
  • ReadOnlySpan<T>

Properties

// Normal way
public string FullName
{
    get { return string.Format("{0} {1}", FirstName, LastName); }
}
 
// Using Expression (C# 6.0)
public string FullName => string.Format("{0} {1}", FirstName, LastName);
 
// Above code can be more consize using string interpolation
public string FullName =>$"{FirstName} {LastName}";

Methods

// Normal way
public string GetFullName(string firstname, string middleName, string lastName)
{
    return middleName == null ? $"{firstname} {lastName}" : $"{firstname} {middleName} {lastName}";
}
 
// Using Expessions
public string GetFullName(string firstname, string middleName, string lastName) => middleName == null ?
             $"{firstname} {lastName}" : $"{firstname} {middleName} {lastName}";

Auto properties

public string Name { get; set; }

Constructor (hàm tạo)

// Earlier
public Person(string name)
{
    this.Name = name;
}
 
// With C# 7.0
public Person(string name) => this.Name = name;

Destructor (hàm hủy)

// Earlier
~Person()
{
    Console.WriteLine("Person's destructor");
}
 
// Using Expressions
~Person() => Console.WriteLine("Person's destructor");

Readonly struct

public readonly struct Person
{
    public string FirstName { get; }
 
    public string LastName { get; }
 
    public int Age { get; }
 
    public Person(string firstName, string lastName, int age)
    {
        this.FirstName = firstName;
        this.LastName = lastName;
        this.Age = age;
    }
 
}

Ôn lại lý thuyết về Const, ReadOnly, Static và Struct

Const là một hằng số phải gán giá trị khi khai báo (complie-time constant). Mặc định const là static nên không thể thêm static trước hoặc sau const

ReadOnly là một biến được khởi tạo giá trị khi khai báo và có thể thay đổi giá trị ở hàm tạo (run-time constant).

Static đưa vào trước biến để mọi đối tượng đều có thể truy xuất vào. Chỉ áp dụng cho class, fields, properties, operators, events, constructor, không áp dụng được cho destructor và index

Struct:

Kinh nghiệm xử lý try catch throw exception

Đơn giản chỉ cần "throw;" try { ... } catch (Exception ex) { throw; }

Nếu sử dụng "throw ex;" sẽ mất stack trace dẫn đến việc debug lỗi gặp khó khăn.

Kinh nghiệm xử lý Concurrency Conflickts trong EF Core

https://docs.microsoft.com/en-us/ef/core/saving/concurrency

Kinh nghiệm xử lý Concurrency Conflicts trong EF 6

https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/handling-concurrency-with-the-entity-framework-in-an-asp-net-mvc-application

Làm thế nào để kiểm soát optimistic concurrency.

Bạn cần có một cột rowversion là một kiểu dữ liệu timestamp.

SQL Server tự động khởi tạo số nhị phân duy nhất bất cứ khi nào thao tác insert hoặc update được thực hiện trong một bảng.

https://www.codeproject.com/Articles/817432/Optimistic-Concurrency-in-Entity-Framework-Code-Fi

Technical Stack là gì?

Stack là gì? Stack là một nền tảng hệ điều hành và những phần mềm đi kèm

ELK Stack là gì?

ELK Stack là tập hợp 3 phần mềm đi chung với nhau, phục vụ cho công việc logging. Ba phần mềm này lần lượt là:

  • Elasticsearch: Cơ sở dữ liệu để lưu trữ, tìm kiếm và query log
  • Logstash: Tiếp nhận log từ nhiều nguồn, sau đó xử lý log và ghi dữ liệu và Elasticsearch
  • Kibana: Giao diện để quản lý, thống kê log. Đọc thông tin từ Elasticsearch

SQL tiếng Việt

https://www.mastercode.vn/blog/sql-server/

Xóa log file của SQL Server

https://www.mastercode.vn/blog/web-development/giam-dung-luong-tren-he-thong-server-xoa-cac-file-khong-can-thiet.97

Caching

Các loại Local Cache Store

  • In-process
  • Out-of-process

Các loại Remote Cache

  • Memcached
  • Azure
  • DiskCache
  • Redis

Top 10 OWASP (link tiếng Việt)

  1. Injection
  2. Cross-Site Scripting (XSS)
  3. Broken Authentication and Session Management
  4. Insecure Direct Object References
  5. Cross-Site Request Forgery (CSRF)
  6. Security Misconfiguration
  7. Insecure Cryptographic Storage
  8. Failure to Restrict URL Access
  9. Insufficient Transport Layer Protection
  10. Unvalidated Redirects and Forwards

Tìm hiểu thêm

C# 6.0 features

C# 7.X features