일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- MS-SQL
- 깃허브
- .NET
- 리엑트
- AnimationController
- db
- spring boot
- 닷넷
- 함수
- Firebase
- 플러터
- listview
- Binding
- MVVM
- page
- typescript
- 파이어베이스
- Maui
- MSSQL
- GitHub
- HTML
- 오류
- Animation
- 마우이
- 애니메이션
- Flutter
- React JS
- 바인딩
- JavaScript
- 자바스크립트
- Today
- Total
목록서버 개발 (33)
개발노트

WinForm을 이용한 TCP 클라이언트 애플리케이션 만들기TCP 클라이언트를 이용한 통신은 다양한 네트워크 애플리케이션에서 중요한 역할을 합니다. 이번 글에서는 WinForm을 이용하여 TCP 클라이언트 애플리케이션을 만드는 방법을 다뤄보겠습니다. 이 애플리케이션은 서버와 연결하고 데이터를 송수신하는 기능을 제공합니다.애플리케이션 개요이 애플리케이션은 TCP 클라이언트로, 사용자가 버튼을 클릭하여 서버에 연결하고, 데이터를 보내고 받는 기능을 수행합니다. 요청 데이터는 단순 문자열로 서버에 전송되며, 서버로부터 응답을 받으면 그 내용을 화면에 표시합니다.UI 구성연결 버튼 (btn_open): 서버와의 연결을 시작합니다.종료 버튼 (btn_close): 서버와의 연결을 종료합니다.요청 버튼 (btn_r..
개요이번 글에서는 .NET Core의 IHostedService와 BackgroundService를 활용하여 TCP 서버를 백그라운드 서비스로 구현하는 방법을 소개합니다. TCP 서버를 구축하고, 백그라운드 서비스에서 이를 실행하는 방식과 종속성 주입(DI)으로 관리하는 원리를 설명합니다.1. TCP 서버란?TCP 서버는 클라이언트와의 연결을 유지하면서 데이터를 송수신하는 서버입니다. .NET Core에서는 TcpListener와 TcpClient를 사용하여 TCP 서버를 구축할 수 있습니다.이 글에서는 TcpServer 클래스를 만들어서 클라이언트의 요청을 받고, 해당 메시지를 그대로 응답하는 간단한 TCP 서버를 구현합니다.2. TCP 서버 구현하기TcpServer 클래스 (IHostedService..

문제: DB로부터 결과 값은 다 잘받아오는데 결과 값이 직렬화가 안되는 문제삽질 기간: 하루해결: 객체 속성을 public으로 선언하여 해결발견 디버깅 구간var resultData = personData.SelectAddress(addressID); //잘나옴response.Body = JsonConvert.SerializeObject(resultData); //{[]} 빈값으로 직렬화됨 원인은 결과로 받은 BusinessEntityAddress 객체 속성에 public을 안붙여서...였다. 해결 전 [Table("Person.BusinessEntityAddress")] public class BusinessEntityAddress { [Column("BusinessEnt..
웹파일을 CDN, dll로 띄우면 내부망을 사용하는 경우, 등 문제가 생긴다. 그렇기 때문에 프로젝트 파일을 받아서 띄우기로 해본다. 자 그럼 먼저 아래 문서를 읽어보자https://learn.microsoft.com/ko-kr/aspnet/core/fundamentals/static-files?view=aspnetcore-9.0 ASP.NET Core의 정적 파일ASP.NET Core 웹앱에서 정적 파일을 제공 및 보호하고 정적 파일 호스팅 미들웨어 동작을 구성하는 방법을 알아봅니다.learn.microsoft.com해결책은 index.html, css, js 파일 등 정적 파일을 프로젝트로 추가하고, 이를 미들웨어로 등록하여 띄워보는 것이다. 목표는 Scalar ui를 기존 CDN으로 띄우는것을 파일..

패키지를 Visual Studio 에서 제공하는 누겟 관리자로만 설치 해왔다면이제는 패키지를 소스로 받아 수정도하고 커스텀해서 사용 해보자 Swagger 패키지를 프로젝트로 받아오는 것을 기준으로 한번 설명해보겠다. 원리는 다음과 같다.1. 누겟 패키지의 master 리포지토리 Url을 찾는다.보통 누겟 갤럭시에서 찾으면 나옴https://www.nuget.org/packages/Swashbuckle.AspNetCore.SwaggerUI Swashbuckle.AspNetCore.SwaggerUI 7.2.0Middleware to expose an embedded version of the swagger-ui from an ASP.NET Core applicationwww.nuget.org 2. git c..
.NET Framework 에서 사용했다면 아래 보통 아래와 같이 HttpClient 인스턴스를 생성하고 요청, 응답을 보내고 받는 방법을 사용했을 거야HttpClient client = new HttpClient(); 그냥 이렇게 사용했다면 어떤 것들이 문제되었을까?MicroSoft에서는 기존 HttpClient의 어떤 문제들을 인지하였고 이것들을 고치기 위해 어떤 방안들을 제시했을지 같이 알아보자.NET Core 2.1부터는 아래와 같이 사용할 수 있을거야문제점 1. 소켓 고갈- 소켓 고갈이 생기는 원인은 뭘까?커넥션 Pool을 이용하지않고 새로운 인스턴스를 생성하기 때문에, 항상 새로운 연결을 생성하고 해제해 HttpClient를 매번 new HttpClient()로 생성하면, 내부적으로 Http..
Dapper 는 .NET에서 사용되는 ORM 으로 이를 이용하면 좀 더 편하게 DB 작업이 가능하다.Dapper는 DB에서 반환되는 테이블을 이용하여 객체와 맵핑이 가능하다.TableValueParameter 사용으로 DB에 정의된 TVP를 매개변수로 이용가능하다.반환되는 테이블의 수가 여러개라면 QueryMultiple 로 처리가능하다.ORM 이 외에도 저장 프로시저, 쿼리 다 사용가능하다. SplitOn 을 사용하여 Join 결과를 "Column1, Column2"와 같이 구분자를 지정, 이를 기준으로 여러개의 객체로 나누어 맵핑이 가능하다. (이를 통해 Json Depth 맵핑가능)예시) 1. Dapper로 TVP 사용하기(AsTableValuedParameter)using Dapper;using ..
IList 사용으로 인한 변화 및 이점1. 구체적인 구현에 의존하지 않음기존 방식 (List 사용):Order 클래스가 특정 구현인 List에 의존합니다.만약 나중에 아이템을 배열(Array)이나 다른 컬렉션(LinkedList, ObservableCollection)으로 바꾸고 싶다면 Order의 코드를 수정해야 합니다.IList 사용:Order는 IList 인터페이스를 통해 아이템 목록을 관리하므로, 내부에서 사용하는 컬렉션의 구현에 대해 알 필요가 없습니다.이후 List 대신 다른 컬렉션 구현으로 쉽게 교체할 수 있습니다.//예시1// List을 전달IList gameItems = new List();gameItems.Add(new EquipmentItem("Sword"));gameItems.Add..
DIP (Dependency Inversion Principle)란?DIP(의존성 역전 원칙)는 SOLID 원칙 중 하나로, 상위 모듈이 하위 모듈에 의존하지 않도록 설계하는 것을 말합니다.즉, 구체적인 클래스 대신 추상화(인터페이스나 추상 클래스)에 의존해야 합니다.DIP 적용 전public class Dog{ public void Eat() { Console.WriteLine("The dog is eating."); }}public class Cat{ public void Eat() { Console.WriteLine("The cat is eating."); }}// AnimalFeeder 클래스가 Dog와 Cat에 의존public class ..

1. 의존성 주입(DI)란?**의존성 주입(Dependency Injection)**은 객체 간의 의존성을 외부에서 주입하여 객체를 생성하고 관리하는 디자인 패턴입니다.이를 통해 코드의 재사용성, 테스트 용이성, 유지 보수성을 높일 수 있습니다.왜 DI를 사용하는가?객체가 서로 강하게 결합(Coupling)되어 있으면 변경이 어렵습니다.의존성을 분리하면 코드 변경과 테스트가 용이해집니다.서비스, 리포지토리, 데이터베이스와 같은 의존성을 명확히 관리할 수 있습니다.2. IoC란?IoC(Inversion of Control, 제어의 역전)은 객체의 생성과 생명 주기를 개발자가 직접 관리하지 않고, 컨테이너 또는 프레임워크가 관리하는 것을 말합니다. (제어권이 컨테이너에게 있음)이를 통해 코드가 DI 컨테이너..