1. Trang chủ
  2. » Tất cả

Lập Trình Backend Với Asp.net Api (Báo Cáo Thực Tập).Pdf

24 8 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 4,27 MB

Nội dung

Báo cáo TTDN docx 1 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO THỰC TẬP LẬP TRÌNH BACKEND với ASP NET API Công ty thực tập KMS Technology VN Người phụ trách Thực tập sinh Phùng[.]

1 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO THỰC TẬP LẬP TRÌNH BACKEND với ASP.NET API Công ty thực tập : KMS Technology VN Người phụ trách : Thực tập sinh : Phùng Thanh Tú TP Hồ Chí Minh, tháng 12 năm 2022 Phùng Thanh Tú LỜI MỞ ĐẦU Theo số liệu thống kê từ trang tuyển dụng, đồng thời từ trải nghiệm cá nhân thân em, nhu cầu lập trình ứng dụng Web, đặc biệt lập trình Backend tăng cao hết Trong thời kỳ thứ đưa lên trình duyệt, muốn có trang Web cho mình, nguồn nhân lực mảng Web, đặc biệt nguồn nhân lực chất lượng cao chưa đáp ứng đủ Bằng chứng thông qua trang chuyên tuyển dụng Linkedin, Upwork, ln có nhiều tin tuyển dụng web xuất Đặc biệt ASP.NET Đây công nghệ với nhu cầu tuyển dụng nhiều Việt Nam Bất chấp tình hình sa thải nhân viên nước phát triển Mỹ hay Singapore Việt Nam nhu cầu lập trình viên C# - ASP.NET khơng có dấu hiệu xuống mà ngược lại cịn tăng Nắm bắt tình hình trên, cộng với vốn kiến thức q giá tích lũy sau ba năm mài dũa mái Trường Đại học Công nghệ Thông tin, em đặt nghiệp trở thành Web Developer Và để tích lũy thêm kinh nghiệm thực tế từ doanh nghiệp Em định chọn KMS Technology VN - môi trường động, đại, chuyên nghiệp - làm điểm đến cho trình xây dựng nghiệp em Phùng Thanh Tú LỜI CẢM ƠN Trân trọng gửi lời cảm ơn Công ty KMS Technology VN tạo điều kiện cho em góp cơng sức để cống hiến cho Cơng ty để học hỏi phát triển thân thông qua môi trường chuyên nghiệp cởi mở Công ty Trong thời gian tháng thử việc tháng làm dự án thức, em học hỏi nhiều kiến thức mà em chưa có hội vận dụng cịn học - kiến thức tảng để xây dựng ứng dụng Web hồn Đặc biệt cảm ơn anh Trương Ngọc Duy, training C#, NET, ASP.NET Core API, hướng dẫn, giúp đỡ cho chúng em tận tình khó khăn cơng việc, đến khó khăn việc làm quen với môi trường Cũng xin cảm ơn thầy cô khoa Công nghệ phần mềm nhiệt tình hỗ trợ, tạo điều kiện em làm báo cáo Phùng Thanh Tú TpHCM, ngày 26 tháng 12 năm 2022 Phùng Thanh Tú NHẬN XÉT CỦA KHOA …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… Phùng Thanh Tú MỤC LỤC Chương 1: Giới thiêu công ty thực tập Giới thiệu công ty KMS Technology VN Sản phẩm công ty Chương 2: Nội dung thực tập Tìm hiểu cơng ty kỹ công ty Nghiên cứu kỹ thuật a Các công cụ làm việc i Git Git Flow ii Docker 13 iii Google Calendar 13 iv Google Chat 13 v Azure DevOps 14 b C# NET 14 i C# 14 ii .NET 15 c SQL Server Entity Framework 17 i Setup SQL Server Docker 17 ii Entity Framework 18 Chương 3: Chi tiết project 22 Giới thiệu dự án 22 Phùng Thanh Tú Chương 1: Giới thiêu công ty thực tập Giới thiệu công ty KMS Technology VN KMS Technology VN thành lập vào tháng năm 2009 US Với 13 năm kinh nghiệm, 1500 nhân viên, KMS khẳng định vị sản phẩm hàng triệu người sử dụng toàn cầu - hợp đồng hợp tác lâu dài với đối tác lớn tiềm Sản phẩm công ty - QA Symphony Katalon Kobiton Visily Groove Phùng Thanh Tú Chương 2: Nội dung thực tập Tìm hiểu cơng ty kỹ công ty Thời gian : ngày Nội dung : Giới thiệu công ty, cách tổ chức công ty Được nghe người phụ trách giới thiệu cơng ty, q trình thành lập phát triên (như nhắc đến trên), quy trình làm việc từ cao xuống thấp, cách thức tổ chức cơng ty Ngồi ra, thực tập sinh cịn giới thiệu cách thức làm việc công ty thời gian làm, quy định cần phải tuân thủ, cách sử dụng email công việc… Kết : Hiểu thêm cơng ty KMS, q trình thành lập phát triển Có thêm kỹ việc sử dụng email công việc, làm việc có kế hoạch, có kỷ luật, có trách nhiệm Nghiên cứu kỹ thuật - a Các công cụ làm việc i Git Git Flow Git hệ thống kiểm soát quản lý mã nguồn Nhờ hệ thống mà mã nguồn phát triển song song nhiều lập trình viên khác nhờ hệ thống quản lý phiên Ngoài nhờ hệ thống mà có lỗi thay đổi u cầu hồn tồn quay trở phiên cũ Git chắn công cụ quen thuộc nên câu lệnh pull, push, commit, checkout, … em không sâu báo cáo mà thay vào em tập trung vào câu lệnh mà em cảm thấy tâm đắc trình thử việc git status: câu lệnh mà trước vào doanh nghiệp em chưa biết đến, câu lệnh cho phép hiển thị thông tin repository, file staged, file track chưa stage, file chưa track Phùng Thanh Tú Ở hình trên, ta dùng lệnh git status, ta thấy thay đổi local track Sơ đồ sau khiến ta dễ hiểu trạng thái file git Khi ta dùng git status, ta biết thái nào, file commit file chưa Đặc biệt ta vơ tình commit file thừa node_modules, bin, obj, … quên đưa chúng vào gitignore check git status ta biết hạn chế việc commit nhầm file Phùng Thanh Tú - git add: câu lệnh dùng để chuyển trạng thái file từ modified sang staged, tức chuyển sang trạng thái sẵn sàng để commit Câu lệnh xem câu lệnh git, nhiên hay bị dùng sai cách Cụ thể, thường người dùng git add để staged tồn file điều dẫn đến việc commit nhầm file nói Nên kết hợp git status git add để git add file mà ta cần để commit Điều thú vị ta hoàn toàn git add file mà ta làm, tránh việc commit file khác (của chức khác) chúng gây conflict Ví dụ hình dựa vào tên branch ta thấy chức ta làm liên quan đến block, ta commit file chức block mà Phùng Thanh Tú 10 - - - git config global core.editor "code wait": câu lệnh cho phép ta chuyển editor commit message sang VS Code, thứ mà dễ nhìn dễ xài so với mặc định (vim) Cịn editor commit message câu lệnh git commit -a giải thích sau git commit -a: Cho phép edit commit message editor mà ta chỉnh lệnh git config Ngoài commit message file cịn sẵn file thay đổi giúp ta dễ dàng nắm bắt tình hình thứ ta làm commit git log Phùng Thanh Tú 11 Câu lệnh lịch sử commit, kết hợp với commit message, ta biết xác ta commit branch Phùng Thanh Tú 12 - git flow: git framework phát triển theo mô hình gitflow workflow Mơ hình tóm tắt sơ đồ sau Cụ thể, mơ hình cách thức setup loại branch khác cách thức để merge chúng lại với Các loại branch chia thành nhánh sau: - master/main: branch production, chứa mã nguồn ứng dụng mà người dùng trực tiếp sử dụng Commit branch gắn tag tương ứng với phiên thức ứng dụng - hotfix: branch base master, dùng để sửa lỗi nóng lỗi khẩn cấp production - release: branch chứa release ứng dụng Bản release team QA kiểm tra kiểm thử trước đưa lên production (merge vào main/master) - develop: branch mà dev làm việc nhiều nhất, branch base từ main/master, chứa toàn lịch sử commit ứng dụng Đây branch mà tất branch feature merge vào - feature: tập hợp branch chức mà dev team làm việc Các branch base từ develop sau chức hoàn thành, chúng Phùng Thanh Tú 13 merge vào lại develop Cần phải tạo pull request trước merge vào branch develop để team lead/ architect review lại code trước merge ii Docker Docker công cụ cung cấp môi trường ảo tách biệt với mơi trường máy tính Docker cho phép ta chạy ứng dụng miễn có image chúng docker hub Trong đợt thử việc em sử dụng docker để setup CSDL SQL Server mà không cần phải tải cài đặt SQL Server vào máy Lợi ích việc cách thức mà ứng dụng kết nối với SQL Server y chang kết nối với Database Cloud (dùng SQL Authentication) Windows Authentication so với kết nối SQL local máy Mặt khác, CSDL SQL Server chạy Docker chạy hệ điều hành chạy Docker (MacOS, Windows, Linux) không giới hạn Windows chạy SQL local iii Google Calendar Google Calendar công cụ quản lý kiện/ họp dạng lịch Ngoài bên google calendar cịn tích hợp sẵn họp google meet nên có họp cần ấn vào link meet calendar vào phịng họp iv Google Chat Google Chat cơng cụ trị chuyện google - nhiên có tích hợp thêm chức quản lý file thông qua Google Drive quản lý Task dạng to-do list Phùng Thanh Tú 14 v Azure DevOps Azure DevOps công cụ tổng hợp Microsoft phát triển dành cho doanh nghiệp Đây công cụ vô mạnh, với chức bao phủ từ quản lý dự án (giống Jira), quản lý mã nguồn (của GitLab), quản lý CI/CD, Test Plan, chí quản lý Tài liệu với Word, Excel, Điều đặc biệt tất chúng nằm chung Workspace toàn chức kết hợp với cách hoàn hảo nhiều so với dùng kết hợp nhiều ứng dụng b C# NET i C# C# ngơn ngữ lập trình kỹ sư Microsoft phát triển vào năm 2000 Trải qua q trình phát triển khơng ngừng cải tiến, đến C# ứng dụng rộng rãi nhiều mảng, từ di động, nhúng đến web game C# kế thừa ưu điểm mà Java có - hướng đối tượng, kế thừa, interface, generic, … Ngồi C# cịn có tính đặc trưng JavaScript - async await Đến phiên C# 10, C# hỗ trợ top-level statement, cho phép loại bỏ cú pháp boilerplate namespace, hàm Main, … file Program.cs Điều học hỏi từ ngôn ngữ python Phùng Thanh Tú 15 Có thể nói đội ngũ phát triển C# hay cập nhật tính thú vị mà ngơn ngữ khác có Điều khiến cho trải nghiệm viết code C# trở nên tối ưu dễ dàng nhiều C# xương sống NET ii .NET .NET NET viết tắt Network Enabled Technologies .NET có phiên NET Framework NET Core Tuy nhiên sau phiên NET Framework 4.8 NET Core 3.1 chúng “hợp nhất” lại thành phiên với tên gọi NET (.NET 5) Hiện phiên LTS NET phiên mắt đến NET .NET sử dụng để xây dựng ứng dụng chạy nhiều tảng khác Dưới sơ đồ NET - Lịch sử NET 2002 -.NET Framework 1.0: giới thiệu CLR (Common Language Runtime) 2003 - NET Framework 1.1: bổ sung thêm Mobile ASP.NET, hỗ trợ ODBC Oracle 2005 - NET Framework 2.0: hỗ trợ ASP.NET, cập nhật thêm API, hỗ trợ generics 2006 - NET Framework 3.0: bổ sung WPF, WPF, WF, WCS Phùng Thanh Tú 16 - - - - - 2007 - NET Framework 3.5: bổ sung LINQ, ASP.NET 3.5, REST, EntityFramework hỗ trợ tính từ C# - lambda expression tree 2009 - NET Framework 4.0: Parallel LINQ, Task Parallel Library, hỗ trợ đa luồng bất đồng (asynchronous) 2012 - NET Framework 4.5: Bổ sung NET API cho Store/UWP app, task-based async model 2016 - phiên NET Core - NET Core 1.0: xây dựng lại từ đầu với mã nguồn mở, đa tảng, có hỗ trợ CLI tools, ASP.NET Core, Xamarin.Forms 2017 - NET Core 1.1: Hỗ trợ Linux, cải thiện ASP.NET Core cho Kestrel server Hỗ trợ Azure, EF Core, SQL 2016 API 2018 - tháng - NET Core 2.1: LTS, cải thiện đáng kể hiệu năng, hỗ trợ Ubuntu 18.04, Alpine, ARM32 2018 - tháng 12 - NET Core 2.2: Cải thiện hiệu năng, hỗ trợ ARM32 Windows, Azure Active Directory cho SQL Client 2019 năm mà NET Framework nhận cập nhật cuối - NET Framework 4.8 Ngoài vào năm 2019, NET Core 3.0 đời với hiệu cải thiện đáng kể, garbage collector tốn nhớ hơn, hỗ trợ WPF WinForms (nhưng Windows) Hỗ trợ Raspberry Pi chip ARM 2020 - tháng - NET Core 3.1 phiên NET Core cuối phiên LTS 2020 - tháng 11 - NET đời, tảng thống chạy thiết bị Hỗ trợ Windows, Linux, MacOS, iOS, Android, tvOS, watchOS, WebAssembly, … Ở thời điểm khơng cịn NET Framework hay NET Core mà tảng NET Tại thời điểm tìm hiểu báo cáo, NET LTS đời đến tại, NET mắt Ưu điểm Nhược điểm NET Ưu điểm: - Đa chức năng, đa tảng - Mạnh mẽ, hỗ trợ tốt OOP, thích hợp để viết ứng dụng lớn với khả maintain mở rộng cao - Hỗ trợ đa luồng, generic, interface, attribute, linq, garbage collection, … Nhược điểm: - Nặng, chiếm dung lượng lớn ( > 20GB) - Vì cơng nghệ phổ biến có tuổi đời cao nên số lượng lập trình viên nhiều dẫn đến tính cạnh tranh cao ngành Phùng Thanh Tú 17 - - Cộng đồng tương đối thiếu tương tác, trang community Microsoft vắng vẻ, chủ yếu thảo luận nằm StackOverflow - Để tận dụng với chất lượng tốt phải tích hợp thêm dịch vụ trả phí Microsoft Azure Cloud, … c SQL Server Entity Framework i Setup SQL Server Docker Cài đặt Docker Desktop theo hướng dẫn từ trang web thức Docker https://www.docker.com/products/docker-desktop/ Sau cài đặt, tạo file docker-compose.yml edit file sau: - Thay đổi mật SA cho phù hợp cd vào folder chứa file docker-compose vừa tạo, sau chạy lệnh sau: - Sau chạy xong, kết nối với CSDL dùng thông tin sau: Phùng Thanh Tú 18 Nếu kết nối thành công, tức CSDL hoạt động, ta sử dụng để gọi query bình thường ii Entity Framework Entity Framework ORM mã nguồn mở cho ứng dụng NET Microsoft hỗ trợ Entity Framework phần NET open-source framework Entity Framework cho phép truy cập tương tác với CSDL thơng qua object (cịn gọi Entity) nhằm chuyển đổi liệu từ object sang câu truy vấn Query mà không cần phải gọi trực tiếp Query đến CSDL iii ASP.NET Core ASP.NET Core phần NET Đây tảng phát triển Web, dùng để tạo trang web, ứng dụng Web Ngồi ASP.NET Core cịn cho phép phát triển ứng dụng Backend thông qua ASP.NET Core API d Unit Testing với xUnit Moq i Unit Test Unit Test kỹ thuật white-box Testing ta kiểm thử đơn vị riêng lẻ hệ thống Đơn vị riêng lẻ hàm, phương thức, lớp Module riêng lẻ Mục đích việc kiểm thử để Debug xác nhận đơn vị hoạt động mong đợi Phùng Thanh Tú 19 Unit Test cô lập mã nguồn xác minh tính đắn Mặc dù kỹ thuật testing, Unit Test viết Dev Tester Trong dự án thực tế, để vượt qua đợt kiểm tra QA đảm bảo mã nguồn test (test coverage) Dev phải viết Unit Test cho mã nguồn ii xUnit xUnit Unit Testing framework cung cấp công cụ để viết Unit Test, đồng thời chạy debug dễ dàng cho ứng dụng C# NET Trong xUnit, testcase method public, gắn nhãn [Fact] Test Explorer tìm hàm chạy trả kết iii Mock Object Trong hướng đối tượng Mock hành động tạo đối tượng, phương thức giả để giả lập hành vi đối tượng thật Đây kỹ thuật Unit Testing để tạo Mock Object ảo không làm ảnh hưởng đến object thật iv Moq Moq thư viện hỗ trợ tạo mock object cho ứng dụng NET Moq cung cấp phương thức giả lập Thực project Trong thời gian training với cơng ty, em có làm practice tổ chức hệ thống eLearning công ty Đây kiểm tra đầu để đảm bảo em có đủ kiến thức để tham gia vào dự án thực tế Nội dung công việc sau: - Sử dụng Docker để tạo instance SQL Server - Sử dụng Entity Framework để tương tác với CSDL SQL Server - Sử dụng mơ hình lớp để xây dựng ứng dụng ASP.NET Core API - Tìm hiểu vận dụng Dependency Injection, đồng thời lấy liệu từ file appsetting.json để thiết lập cài đặt - Vận dụng JWT Authentication Refresh Token để xử lý xác thực người dùng - Xử lý upload ảnh để implement chức thay đổi avatar cho người dùng - Viết Unit Test cho Business Logic Layer sử dụng xUnit Moq - Viết ứng dụng Frontend React để đảm bảo ứng dụng API hoạt động trơn tru xác Tham gia vào dự án công ty a Tổng quan dự án Đây dự án quản lý phòng khám bệnh nhân, cung cấp giải pháp quản lý hồ sơ bệnh nhân, quản lý đợt khám, quản lý bảo hiểm Đây giải pháp toàn diện y tế chăm sóc sức khỏe cho phòng khám Mỹ Phùng Thanh Tú 20 - - - b Các cơng việc dự án Tìm hiểu nghiệp vụ liên quan đến y tế, bảo hiểm chăm sóc sức khỏe Đặc biệt điều khoản nghiêm ngặt bảo mật thông tin liên quan đến y tế Mỹ Tìm hiểu sử dụng công cụ môi trường cung cấp khách hàng (trong có Azure DevOps) Giao tiếp trực tiếp với khách hàng, phân tích yêu cầu nghiệp vụ kỹ thuật, đồng thời truyền đạt lại yêu cầu cho đội ngũ Dev Phát triển chức mới, đồng thời integrate chức mà đội Dev khách hàng phát triển vào codebase dự án, sau viết Unit Test cho chức để đảm bảo tính an tồn cho codebase Follow theo quy trình Scrum, nhận task (ticket) từ Project Manager giải Task thời gian cho phép Lịch làm việc Tuần Công việc - - Tìm hiểu cơng ty, cách tổ chức cơng ty Làm quen với công cụ làm việc công ty Học cách trao đổi, làm việc qua email Tìm hiểu ngơn ngữ lập trình C# Tìm hiểu NET Framework Tìm hiểu Git cách làm việc chuyên nghiệp với Git, Git Flow Setup CSDL SQL Server với Docker Người hướng dẫn Mức độ hoàn thành Nhận xét người hướng dẫn Anh Trương Ngọc Duy Anh Trương Ngọc Duy Phùng Thanh Tú 21 - - - - Tìm hiểu tương tác với CSDL ORM Entity Framework - Tìm hiểu mơ hình lớp - Tìm hiểu ngun lý SOLID lập trình áp dụng vào xây dựng ứng dụng - Xây dựng API CRUD Web với ASP.NET Core API - Unit Test cho Service layer Integration Test cho Data Access Layer Tìm hiểu JWT Authentication ASP.NET Xây dựng xác thực với JWT Token ASP.NET Tìm hiểu vận dụng để xây dựng tính upload lấy hình ảnh ASP.NET Tìm hiểu Claim Identity cách thức sử dụng Claims việc bảo mật tài nguyên người dùng Tìm hiểu ReactJS xây dựng ứng dụng ReactJS để hiển thị UI cho ứng dụng ASP.NET Core API - Tổng kết, tổng hợp tài liệu, kết thúc thử việc Ký Hợp đồng lao động - Bàn giao sang dự án thức Anh Trương Ngọc Duy Anh Trương Ngọc Duy Anh Trương Ngọc Duy Anh Trương Ngọc Duy Phùng Thanh Tú 22 Chương 3: Chi tiết project Giới thiệu dự án Đây giải pháp toàn diện y tế chăm sóc sức khỏe dành cho phòng khám bệnh viện Cho đến sau năm hoạt động công ty đã kết nối với 150 triệu bệnh nhân, 900 insurance payer Toàn dự án viết ASP.NET NET Standard Library Codebase dự án sử dụng NET Core NET Framework dự án deploy Windows Server Vì lý sách bảo mật liệu nghiêm ngặt từ KMS lẫn công ty khách hàng nên em xin phép không tiết lộ tên giao diện dự án Phùng Thanh Tú 23 TÀI LIỆU THAM KHẢO Cơ Gitflow Workflow (viblo.asia) https://topdev.vn/blog/mo-hinh-3-lop-la-gi/ https://comdy.vn/unit-test/tong-quan-ve-unit-test-voi-asp-net-core-xunit-va-moq/ https://viblo.asia/p/unit-tests-with-moq-in-net-EoDGQoBqkbV Phùng Thanh Tú 24 TỔNG KẾT Như vịng tháng thử việc, em tìm hiểu nhiều kiến thức thực tế trang bị cho đầy đủ kiến thức kỹ cần thiết để làm việc cho dự án thức Do thời gian sách bảo mật nên em hồn thành dự án luyện tập dành cho Fresher nội công ty em giới thiệu chi tiết dự án dự án mà em làm Tuy nhiên có thời gian em vận dụng kiến thức để hoàn thành dự án khác có nhiều chức hồn thiện Chân thành cảm ơn giúp đỡ nhiệt tình anh Trương Ngọc Duy, LnD team Admin KMS hỗ trợ hướng dẫn em để em hoàn thành tập tham gia vào dự án thức Phùng Thanh Tú ... hiểu tương tác với CSDL ORM Entity Framework - Tìm hiểu mơ hình lớp - Tìm hiểu nguyên lý SOLID lập trình áp dụng vào xây dựng ứng dụng - Xây dựng API CRUD Web với ASP.NET Core API - Unit Test... đồng thời từ trải nghiệm cá nhân thân em, nhu cầu lập trình ứng dụng Web, đặc biệt lập trình Backend tăng cao hết Trong thời kỳ thứ đưa lên trình duyệt, muốn có trang Web cho mình, nguồn nhân... Workspace toàn chức kết hợp với cách hoàn hảo nhiều so với dùng kết hợp nhiều ứng dụng b C# NET i C# C# ngơn ngữ lập trình kỹ sư Microsoft phát triển vào năm 2000 Trải qua q trình phát triển khơng

Ngày đăng: 01/02/2023, 21:18

w