C# WPF
1.1 WPF 개요
1.1 WPF 개요
2024.11.19WPF(Windows Presentation Foundation)는 2006년 Microsoft에서 .NET Framework 3.0과 함께 공개되었습니다.이후, 다양한 윈도우 응용 프로그램 개발 분야에서 사용되어 온 UI 프레임워크입니다. WPF는 당연히 .NET 환경에서 동작합니다.UI 디자인은 XAML(Extensible Application Markup Language,자믈)을 사용합니다. 비지니스 로직 은 C# 을 주 언어로 소스 코드로 작성하지만, .NET 기반이기 때문에, F#, VB으로 구현 가능합니다.그리고 WPF는 최신 그래픽 하드웨어를 활용하도록 작성된 해상도 독립적인 벡터 기반 렌더링 엔진을 사용합니다.WPF를 사용하면 시각적으로 뛰어난 Windows용 데스크톱 클라이언트 애플리케..
C# History
C# History
2024.10.28C# 은 매년 새로운 기술을 포함한 버전을 발표합니다. [1] 여기에서 주목할 점은, 1)C# 버전, 2)닷넷 프레임워크 버전, 그리고 3)비주얼 스튜디오 버전의 호환성 입니다.- 예를들어 은, + 에서만 가능합니다. [2] 그리고 매년 이렇게 새로운 기능이 추가된다면, 학습과 유지보수 측면에서 어떤 문제가 발생할지 생각해봅시다.
.NET Standard
.NET Standard
2024.03.121. 닷넷(.NET) Standard.NET 구현에서 공통적인 API의 공식 사양 2. 닷넷(.NET) 5.0 이전 더보기2.1 닷넷(.NET)의 기본 라이브러리와.NET Standard 닷넷 플랫폼은, 개발환경 플랫폼으로, 다양한 "프로그래밍 언어"를 활용해 Linux, macOS, Windows, iOS, Android 등의 다양한 운영체제에서 콘솔, 데스크톱, 웹 및 모바일 애플리케이션을 만들 수 있는 개발환경을 서비스를 제공하는 플랫폼입니다. 닷넷(.NET) 의 최초 구현체는 .NET Framework 이었습니다. .NET Framework 는 .NET Framework 를 위한 라이브러리 모듈이 존재했고, 이후 추가된 프레임워크(.NET Core, Xamarin 등)를 제공했지만, 각각의 구..
.NET Framework
.NET Framework
2024.03.121. 프레임워크(Framework)란?더보기1.1 용어[어원] 'FRAME (틀, 규칙)' + 'WORK (작업)' ≒ 시스템 1.2 시스템은 왜 사용할까? 커피 프렌차이즈 매장을 새로 개업한다고 예를 들어 봅시다.프렌차이즈는, 매장 인테리어, 메뉴구성, 결제 시스템, 접객 및 운영 방법까지 모든 것을 제공합니다.제조공정 - 분업과 대량생산, 그리고 생산 효율 향상 1.3 UI 프레임워크 예 버튼, 폼 양식, 다이얼로그 등과 같이 자주 사용되는 UI를 미리 구현해서 제공하는 프레임워크이다. WPF(Windows Presentation Foundation)데스크톱 클라이언트 애플리케이션을 만드는 UI(사용자 인터페이스) 프레임워크입니다. WPF는 애플리케이션 모델, 리소스, 컨트롤, 그래픽,..
.NET 빌드와 실행
.NET 빌드와 실행
2024.03.111. 프로그래밍이란?더보기1.1 컴퓨터 동작 컴퓨터는 다양한 하드웨어 부품으로 이루어져 있습니다.복잡해 보이는 컴퓨터가 실행되는 원리는 매우 간단합니다.전기 신호가 “있다" 와 “없다" 라는 두 가지 상태만으로 동작합니다. 조금 더 자세히 말하자면, 컴퓨터는 “있다" 와 “없다"로 이루어진 패턴에 맞춰 특정 동작을 실행합니다.개발자는 “있다" 와 “없다" 라는 두 가지 상태를 0과 1이라는 숫자를 사용해 패턴을 만듭니다. 즉, 개발자가 컴퓨터를 동작시키려면 0과 1로 이루어진 10011011 과 같은 패턴 만들어 컴퓨터에게 보내면, 패턴에 맞는 동작을 컴퓨터가 실행시킵니다. 1.2 기계어 (Machine Code) 0과 1로 이루어진 기계어는 컴퓨터에게, 정확하게 말하자면 CPU에게 던져주면 바로 ..
.NET Platform
.NET Platform
2024.03.091. 닷넷(.NET, dotnet)더보기1.1 닷넷 학습 관점 '닷넷'은 프로그램 개발에 사용되는 여러가지 편리한 기술의 묶음 개념입니다.마치 프로그래밍을 '음식'이라고 가정하면, 닷넷은 '한식', '중식', '일식', '양식' 에 가깝습니다. '한식'은 밥과 국이 기본을 이루고, 한상에는 다양한 반찬들이 함께 차려지는 것이 일반적인 특징이듯이'닷넷'은 C#이라는 프로그래밍 언어로, .Net Standard 라는 라이브러리를 사용하며, .Net 컴파일러로 빌드되어, CLR이라는 실행 환경으로 실행합니다. 닷넷을 학습한다는 것은, 한식만이 가지는 고유한 특징처럼, 닷넷을 이루는 구성요소를 이해해야 합니다. 하지만, 닷넷 구성 요소를 이해하기에 앞서, 1)플랫폼 2)빌드와 실행환경 개념을 먼저 이해합시..
Winform async, await
Winform async, await
2023.10.12윈폼 동기버튼을 누르면, RefreshLable( ) 이 실행되는 동안 다른 작업을 할 수 없다. 윈폼 비동기버튼을 누르면, RefreshLableAcync( ) 함수가 비동기로 동작하여 UI 동작에 영향이 없다.이 실행되는 동안 다른 작업을 할 수 있다. 윈폼 비동기, await C# async는 컴파일러에게 해당 메서드가 await를 가지고 있음을 알려주는 역할을 한다. async라고 표시된 메서드는 await를 1개 이상 가질 수 있다.하나도 없는 경우라도 컴파일은 가능하지만 Warning 메시지가 표시된다.
delegate 3. MulticastDelegate
delegate 3. MulticastDelegate
2023.10.10멀티캐스트 대리자 함수 실행1 using System; namespace delegate_test3 { class Program { static void Main(string[] args) { Program program = new Program(); program.run("실행1"); program.SomethingHappend("실행2"); program.MyAreaClick("실행3"); program.AfterClick("실행4"); } void run(string sender) { Console.WriteLine(sender + " run 클릭!"); } void SomethingHappend(string sender) { Console.WriteLine(sender + " SomethingHa..
delegate 2. 사용 방법
delegate 2. 사용 방법
2023.10.09C#의 대리자는 함수를 변수처럼 사용하는 방법일 뿐이다. C/C++ 에서는 함수 포인터의 개념과 비슷하고, 대부분의 언어에서 Callback(콜백) 개념으로 구현되어 있다. 대리자 선언 1. 선언방법 델리게이트_키워드 함수_반환형 델리게이트_이름(함수_시그니처); delegate return_type delegate_name(int num1, int num2); [.NET Frame 1.0] 델리게이트_키워드 함수_반환형 델리게이트_이름 = new 델리게이트_키워드(함수_이름) delegate return_type delegate_name = new delegate(funtion); [.NET Frame 2.0] 델리게이트_키워드 함수_ 반환형 델리게이트_이름 = 함수_이름 delegate void de..
5. 비동기 TCPListener 예제
5. 비동기 TCPListener 예제
2023.10.06동기화 코드의 문제점 데이터를 보내는 작업과 받는 작업이 블록되는 문제 상황을 강제로 발생시켜보자.네트워크 프로그램은 많은 부분에서 비동기 코드가 필요하다. Read( ) 함수의 동작은 C언어의 Scanf( ) 동작과 유사하다.Read( ) 함수는 stream에 전달받은 데이터가 있다면, 데이터를 읽어들인다. 하지만 읽을 데이터가 없다면, 데이터가 들어올 때까지 대기하는데, 이때 실행 흐름은 블록된다. 만약 이 상태에서 데이터를 전송시키고 싶다면, Send( ) 가 실행 제어권을 가지지 못하기에 전송 작업 실행은 불가능하다.위의 예제 프로젝트의 소스코드는, 이전 포스트와 동일하다.TCPServer, TCPClient_Protocol 을 실행시면, 한 번의 전송 이후 각자 Read( ) 에서 서로 멈춘상태..
4. 프로토콜
4. 프로토콜
2023.10.06프로토콜 1 응용 프로그래밍에서 네트워크를 사용해 데이터를 송수신 할때 사용하는 규칙을 의미한다. 네트워크 응용 프로그래밍에서, 일반적으로 데이터를 보낼 때는 정확한 바이트 파악 할 수 있다. 하지만 데이터를 받을 때는 몇 바이트가 올지 알 수가 없다. 그리고 데이터가 분산되어 여러번 전달 될 수도 있다. 그렇기에 네트워크 응용 프로그래밍은 서버와 클라이언트 사이에 주고 받는 데이터의 크기 및 데이터 구조 등에 대해 프로토콜(규칙)을 개발자가 정해야 한다. 프로토콜(규칙)의 예시 헤더에 차후 보낼 바이트의 크기 전송한다. 전달하는 데이터 마지막에 특정한 End of Message 마크를 사용한다. 일정 시간 아무 데이타가 없으면 수신 종료한다. 연결 종료시점까지 데이터를 읽는 방법 만약 이러한 프로토콜이..
3. TCPClient, TCPListener 예제
3. TCPClient, TCPListener 예제
2023.10.06TCPClient & TCPListener 내부적으로 System.Net.Sockets.Socket 클래스를 사용한다. 하지만 Socket 으로 작업하는 것보다 훨씬 간결하다. 네트워크 데이터 송수신은 기본적으로 바이트 자료형을 사용한다. 따라서 문자열을 보낼 경우 먼저 바이트로 인코딩한 후, 일반 영문은 ASCII로 인코딩하고, 한글 등 비영문 문자열은 UTF8 인코딩을 사용한다. 실행 흐름 TCPListener Server의 Listen( ) 동작을 의미한다. using System.Net.Sockets; using System.Net; namespace TcpServerTest { class Program { static void Main(string[] args) { // [1] 서버의 Liste..