Tag Archives: c#

Dependency Injection và Inversion of Control – Phần 2: Áp dụng DI vào code

Series bài viết Dependency Injection và Inversion of Control gồm 3 phần:

  1. Định nghĩa
  2. Áp dụng DI vào code
  3. Viết DI Container. Áp dụng DI vào ASP.NET MVC

Bạn đã đọc phần 1 nhưng vẫn chưa hiểu rõ lắm về DI, IoC, chưa biết cách áp dụng chúng vào code? Đừng lo, ở phần 2 này sẽ cung cấp những đoạn code mẫu, giải thích rõ hơn về những điều mình đã nói ở phần 1. Sau khi đọc xong phần này, các bạn quay lại phần 1 thì sẽ thấy “thông” ra được nhiều thứ nhé.

Dependency là gì?

Dependency là những module cấp thấp, hoặc cái service gọi từ bên ngoài. Với cách code thông thường, các module cấp cao sẽ gọi các module cấp thấp. Module cấp cao sẽ phụ thuộc và module cấp thấp, điều đó tạo ra các dependency.

ioc-and-mapper-in-c-4-638

Continue reading Dependency Injection và Inversion of Control – Phần 2: Áp dụng DI vào code

Khai trương trang fanpage của “Tôi đi code dạo” – Mừng blog đạt mốc 100k view

Mãi mà cũng sắp hết năm 2015. Mình bắt đầu viết blog từ ngày 31/12/2014, tính ra cũng gần tròn 1 năm rồi. Nhờ sự theo dõi và ủng hộ tận tình của các bạn, blog đã vượt qua các cột mốc 1000 view, 50 post và bây giờ là 100.000 view – một con số không tệ đối với một blog 1 năm tuổi.

views

Từ ban đầu, mình đã xác định mục tiêu của blog sẽ là: Chia sẻ các kinh nghiệm về công nghệ (Chủ yếu là C# và một số công nghệ web), tiếp theo là nghề nghiệp. Ở giai đoạn đầu, mình tập trung chủ yếu vào các bài viết technical. Sau đó mình nhận thấy các bài viết về con đường nghề nghiệp, phát triển bản thân cũng nhận được rất nhiều hưởng ứng. Vì vậy, mình sẽ cố gắng cân bằng giữa các bài viết về technical (C# hay ho, tutorial) và nghề lập trình.  Cả hai loại kiến thức này đều rất hữu ích cho các bạn từ sinh viên cho đến junior dev nhé.

Continue reading Khai trương trang fanpage của “Tôi đi code dạo” – Mừng blog đạt mốc 100k view

Dependency Injection và Inversion of Control – Phần 1: Định nghĩa

Series bài viết Dependency Injection và Inversion of Control gồm 3 phần:

  1. Định nghĩa
  2. Áp dụng DI vào code
  3. Viết DI Container. Áp dụng DI vào ASP.NET MVC

Hôm trước, có vài bạn nhờ mình giải thích các khái niệm Dependency Injection, Inversion of Control. Vốn lười, mình định google một bài viết bằng tiếng Việt để quăng cho các bạn ấy. Ngặc một nỗi là mình chả tìm được bài nào cụ thể rõ ràng về Dependency Injection, chỉ có hướng dẫn sử dụng Unity, StructureMap. Một số bài viết hay thì lại toàn bằng tiếng Anh.

Mình cũng thấy vài bạn đã đi làm 1, 2 năm mà vẫn còn “ngáo ngơ” về DI, IoC, chỉ biết sử dụng nhưng không hiểu rõ bản chất của nó. Do đó, mình viết bài này nhằm giải thích một cách đơn giản dễ hiểu về Dependency Injection. Các bạn junior nên đọc thử, vì DI được áp dụng rất nhiều trong các ứng dụng doanh nghiệp, rất hay gặp khi đi làm/đi phỏng vấn. Pattern này được dùng trong cả C#, Java và các ngôn ngữ khác nên các bạn cứ đọc thoải mái nhé.

ioc-and-mapper-in-c-1-638

Continue reading Dependency Injection và Inversion of Control – Phần 1: Định nghĩa

Series C# hay ho: C# 6 có gì hay ho nào

Gần đây, mình tập trung viết một số bài về định hướng nghề nghiệp và phát triển bản thân mà ít viết về công nghệ. Vì vậy hôm nay mình quyết định tiếp tục viết series C# hay ho. Ở bài này, mình sẽ giới thiệu những cải tiến được Microsoft tích hợp vào C# 6. Bạn nào muốn biết thêm về sự phát triển của C# từ bản 1.0 lên 5.0 hãy đọc bài cũ của mình ở đây nhé.

Ở phiên bản này, C# không có nhiều cải tiến to lớn như Linq, hay async/await. Những thay đổi của bản 6 giúp việc viết code dễ hơn, code ngắn gọn và đẹp hơn.

Continue reading Series C# hay ho: C# 6 có gì hay ho nào

Chuyện về các cây đa cây đề trong làng Software Engineering

Để thành một lập trình viên giỏi, có rất nhiều bạn phải học và phải biết: Cách viết code sạchrefactor code, design thế nào để code SOLID, Inversion of Control và  Dependency Injection, Agile methodology, …

Tuy nhiên, đã bao giờ bạn tự hỏi: “Ai là người đã nghĩ ra những thứ đấy” chưa?. Bài viết này sẽ kể bạn nghe về những người đó. Đây là những cái tên có nhiều đóng góp to lớn cho ngành phần mềm. Họ nổi tiếng không chỉ nhờ khả năng code, mà còn nhờ khả năng viết và diễn đạt, truyền cảm hứng.

img

Continue reading Chuyện về các cây đa cây đề trong làng Software Engineering

NoSQL có gì hay ho – Tổng quan về NoSQL – Phần 2

Như đã giới thiệu ở bài trước, NoSQL Database đang được sử dụng ngày một nhiều hơn, chiếm dần vị trí của Relational Database. Bài viết này sẽ giới thiệu một số dạng NoSQL và ứng dụng của chúng.

Hiện nay, trên thị trường có khá nhiều NoSQL Database Management System: MongoDB, RavenDB, Redis, Neo4j,… Ta có thể chia NoSQL thành 4 loại:

  • Key-Value Database
  • Document Database
  • Column-Family Database
  • Graph Database

overview2

Continue reading NoSQL có gì hay ho – Tổng quan về NoSQL – Phần 2

NoSQL có gì hay ho – Tổng quan về NoSQL – Phần 1

NoSQL đang dần nổi lên như một thế lực trong giới lập trình. Nhà nhà quảng cáo NoSQL, người người sử dụng NoSQL. MEAN stack (MongoDB, Express, AngularJS, NodeJS) đang dần lấn lướt, thay thế cho LAMP stack (Linux, Apache, MySQL, PHP/Python) đã lỗi thời.

Bài viết này giới thiệu tổng quan về NoSQL, giúp các bạn có thêm kiến thức khi phỏng vấn xin việc hoặc chém gió với nhau lúc trà dư tửu hậu.

nosql-expert

Continue reading NoSQL có gì hay ho – Tổng quan về NoSQL – Phần 1

Hướng dẫn tích hợp Travis-CI vào project trên github

Như mình giới thiệu ở bài trước, CI mang lại rất nhiều lợi ích cho một dự án phần mềm. Ở các công ty, sẽ có một server để cài đặt Team City, Hudson, Jenkin, TFS… phục vụ cho CI. Tuy nhiên, nếu các bạn làm bài tập nhóm, làm freelance hoặc project riêng, việc setup 1 server riêng cho CI khá là khó khăn.

May thay, với Travis-CI, mọi công việc cài đặt phức tạp đã được thực hiện sẵn cho bạn. Travis-CI có hỗ trợ tích hợp với github. Bạn chỉ cần config project github một chút là xong ngay. (Mình đã có 1 bài hướng dẫn tích hợp Visual Studio và github, nếu cần bạn có thể xem lại nhé).
travis-ci

Continue reading Hướng dẫn tích hợp Travis-CI vào project trên github

[Tutorial] Viết Unit Test trong C# với NUnit

Giới thiệu tổng quan về Unit Test

trường đại học chắc các bạn đã được học khái niệm về Unit Test trong môn “Kiểm thử chất lượng phần mềm”. Nói một cách dễ hiểu, unit test tức là code dùng để test code ta đã viết.

Một số đặc điểm của unit test:

  1. Code unit test phải ngắn gọn, dễ hiểu, dễ đọc.
  2. Mỗi unit test là 1 đơn vi riêng biệt, độc lập, không phụ thuộc vào unit khác.
  3. Mỗi unit test là 1 method trong test class, tên method cũng là tên UnitTest. Do đó ta nên đặt tên hàm rõ ràng, nói rõ unit test này test cái gì (Test_A_Do_B), tên method có thể rất dàiii cũng không sao.
  4. Unit Test phải nhanh, vì nó sẽ được chạy để kiểm định lỗi mỗi lần build. Do đó trong unit test nên hạn chế các task tốn thời gian như gọi I/O, database, network,…
  5.  Unit Test nên test từng đối tượng riêng biệt. Vd: Unit Test cho Business Class thì chỉnh test chính BusinessClass đó, không nên dụng tới các class móc nối với nó (DataAccess Class chẳng hạn).

Continue reading [Tutorial] Viết Unit Test trong C# với NUnit

Series C# hay ho: Giới thiệu Humanizer – Một thư viện khá thú vị của C#

Kì này, series C# hay ho sẽ giới thiệu với bạn một thư viện khá “hay ho”, đúng như tên gọi của series. Thư viện này có tên là Humanizer. Nó chỉ có một chức năng duy nhất: Chuyển string, ngày tháng, … thành chữ mà con người đọc được (Đúng như tên gọi Humanizer tức là “người hóa”). Nghe đơn giản vậy thôi, nhưng bạn sẽ ngạc nhiên trước những chức năng của nó.

Bài viết chỉ mang tính chất showcase, giới thiệu nên sẽ không có code nhiều. Nếu tò mò, các bạn có thể tạo 1 project mới, dùng nuger để cài đặt Humanizer và code thử nhé. Một số tính năng nổi bật của Humanizer

Continue reading Series C# hay ho: Giới thiệu Humanizer – Một thư viện khá thú vị của C#