Xx.

Slides:



Advertisements
Similar presentations
Tcl/Tk 민 인학 한국 Tcl/Tk 커뮤니티.
Advertisements

멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
더존다스 경영전략과 비젼 1 ERP 개발부문
Vision System Lab, Sang-Hun Han
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
C++ Espresso 제3장 배열과 포인터.
C++ Espresso 제3장 배열과 포인터.
2장 닷넷 프레임워크.
제1장 C#의 기초 1.1 .NET Framwork 1.2 .NET Environment 1.3 C# 소개.
C++ Espresso 제1장 기초 사항.
SQL Server 개요 SQL Server의 역사를 파악한다. SQL Server 2008의 특징을 이해한다.
Understanding of Socket and File I/O
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
개발자에게 SharePoint Services 란 무엇인가?
제14장 원격 메소드 호출 김 기 환. 조 명 휘.
마이크로소프트 64bit 윈도우 컴퓨팅 구조와 로드맵
C#에서 데이터베이스 연동 방법.
C# 03장. 프로그램 구성 요소와 데이터형.
제6장 객체배열과 벡터 객체 배열을 이해한다. 벡터(vector) 클래스를 사용할 수 있다.
델파이7 웹서비스 클라이언트 델파이7에서 C#으로 작성한 웹서비스 함수를 사용하기 위한 간략한 방법을 정리해 보았습니다.
Introduction to Web Service Computing
1장 Visual Basic 2010 시작 1.1 프로그램에 대한 기초 1.2 Visual Basic 버전
1장. JSP 및 Servlet을 활용한 동적 웹 프로그래밍 소개 제1장.
2강. JAVA 프로그래밍이란?-II & 변수 JAVA 프로그램 환경설정과 실행 방법 변수란?
명품 JAVA Essential.
Visual Studio 2008 버전별비교 및 제품개요
Power Java 제4장 자바 프로그래밍 기초.
Kasimov C언어 세미나 1st.
Linux를 이용한 Embedded 장비 개발
Network Lab. Seoung Hyeon, Lee
명품 Java Programming.
Embeded 기초 다지기 2015년 10월 26일 intern Sally
이벤트(Event) 처리하기 윈도우 프로그램에서는 이벤트를 통하여 실행 중인 프로그램에게 사용자의 요구사항을 알린다.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
Chapter 05. 클래스 완성. chapter 05. 클래스 완성 01. 복사 생성자 복사 생성(Copy Construction) 생성될 때 자신과 같은 타입의 객체를 변수로 받아, 이 객체와 같은 값을 갖는 새로운 객체를 생성하는 것 명시적인 생성 과정뿐만.
5 장 객체 지향 프로그래밍 5.1 객체 지향 프로그래밍의 개념 5.2 객체 지향 프로그래밍
ASP.NET Mobile Controls
3 장 Visual Basic 2010 기본 문법 3.1 변수 3.2 데이터 형식 3.3 연산자 3.4 제어문
Visual Studio 2010 프로젝트 생성하기 PC화면에서 Visual Studio 2010 아이콘을 더블클릭 하거나
날짜: 팀명: TEAM-SIX 발표자: 이기영
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
강남 DataBinding 스타일 Windows 8 앱개발자라면 꼭 알아야할 개발자가 알아야할 Binding.
비주얼 프로그래밍(2분반) 강의노트 2분반 = 월/목.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
CGI (Common Gateway Interface)
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
AIMS 2016 설비.물류 통합 모니터링 솔루션 Advanced Integrated Monitoring Solution
CGI (Common Gateway Interface)
LINQ to XML 정보통신 공학부 어현승.
컴퓨터공학실습(I) 3주 인공지능연구실.
비주얼 프로그래밍 1분반 화/목.
CH2. ASP.NET 페이지 분석 HTML ASP ASP.NET 의 차이점.
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
비주얼 프로그래밍(2분반) 강의노트 2분반 = 월/목.
제 11장. 템플릿과 STL 학기 프로그래밍언어및실습 (C++).
이번 시간에는... 지난 시간까지 제 1장을 통해 모바일의 정의와 개념, 시작과 발전, 기술과 서비스 및 그 전략을 살펴봄으로써 모바일 산업에 대한 전반적인 이해를 쌓았습니다. 이번시간 부터는 제 2장 모바일 기술을 통해, 무선 인터넷을 위한 컨텐츠 제작 기술, 네트워크.
자바 5.0 프로그래밍.
1장 Visual Basic 2010 시작 1.1 프로그램에 대한 기초 1.2 Visual Basic 버전
안드로이드 앱 분석 팀 기반의 설계 프로젝트 박민재
제 14 장 응용 계층과 클라이언트-서버 모델 클라이언트-서버 모델 14.2 동시성 14.3 프로세스 14.4 요약.
5주 실습강의 학기, 소프트웨어 설계 및 실험(Ⅰ).
SQL Server Reporting Services Feature
C# 09장. 클래스와 객체.
Eclipse를 이용한 Embedded Linux 응용 프로그램 개발
컴퓨터 프로그래밍 언어 Visual Basic 6.0 √ 원리를 알면 VB가 쉽다.
Lady chatterley 윤형석 장홍현 조재범.
Presentation transcript:

xx

윈도우 운영체제 윈도우 응용 프로그램 Win32 API Device Driver

메인보드 CPU 코어 멀티 CPU 멀티 코어

CPU 운영체제 스케줄러 프로세스 A 프로세스 B 프로세스 C 프로세스 D

A.EXE 불가능 B.EXE C.DLL E.DLL D.DLL F.DLL EXE로부터 사용되는 DLL DLL로부터 사용되는 DLL

컴파일러 링커 A.exe 소스코드 파일 A  A.obj 소스코드 파일 B B.obj 소스코드 파일 C C.obj 소스코드 파일 D D.obj 컴파일 링크

공통 파일 포맷 공통 중간 언어 윈도우용 VM 컴파일러 개발자 소스코드 void Main() { } 리눅스용 VM

EXE 파일 C# 소스 코드 빌드 중간 언어 (IL Code) CLR 로더 실행 컴파일러에 의해 삽입된 CLR 로더 코드가 실행되고, CLR 로드 후, 사용자의 중간 언어 코드를 실행

CTS CLS C# VB.NET

어셈블리 모듈 C 매니페스트 모듈 A 모듈 B 메타데이터

Common Language Infrastructure csc.exe 컴파일러 vbc.exe 컴파일러 fsc.exe 컴파일러 C# 소스코드 VB.NET 소스코드 F# 소스코드 Common Language Infrastructure Common Intermediate Language Common Language Runtime (Windows) 1000 0011 1111 1000 닷넷 언어는 각 소스코드를 컴파일해 플랫폼 독립적인 공통 중간 언어(CIL)로 변환 CIL 결과물을 각 플랫폼에 구현된 CLI 구현체가 번역해 실행 Mono (Linux) 1111 1000 0000 0001

Common Language Runtime Windows Win32 API COM+ Console 응용 프로그램 ASP.NET 웹 응용 프로그램 Windows 응용 프로그램 IIS Base Class Library Common Language Runtime VB.NET, C#, C++/CLI, F#, ……

System.Web System.Windows.Forms System.Drawing System.Data System.XML Globalization Diagnostics Configuration Collections Resources Reflection Net IO CodeDom Media Service Process Security Runtime Serialization Remoting Interop Services System.Data ODBC OLEDB SQL Types SQL System.XML XPath XSLT System.Web Caching Session State Services Protocols Discovery Description UI Web Controls HTML Controls System.Drawing System.Windows.Forms Imaging Drawing2D Text Printing Message Box Form List Control Button

Common Infrastructure Compilers .NET Framework Base Class Library WPF Windows Forms .NET Core Languages Runtime components ASP.NET Core Library UWP ASP.NET Core 기반 라이브러리 앱 유형

Common Infrastructure Compilers .NET Framework 비-표준 라이브러리 WPF Windows Forms .NET Core Languages Runtime components ASP.NET UWP ASP.NET Core 앱 유형 .NET Standard Library 기반 라이브러리

int n = 5; 4바이트 할당 5 메모리 저장소 이름 int n = 5; 5 10 메모리 n = 10; (변수의 값 변경)

int n = 5; 4바이트 할당 5 메모리 저장소 이름 스택 영역 int product = 500; 4바이트 할당 500 메모리

0x2000 string text = “Hello”; 스택 저장소 이름 스택 영역 힙 영역 0x0000 메모리 Hello

0x0000 string text; 메모리 null 0x2000 스택 저장소 이름 스택 영역

0x2000 int n1; string txt1; 5 0x1600 int n2; 스택 영역 C# 힙 영역 0x1200 메모리 0x0400 0x2000 int n1; 5 string txt2; int n2; 스택 영역 힙 영역 0x1600 0x1200

0x0000 Book book1; 메모리 #1 0x2000 0x0400 Book book2; 다른 참조 값 0x4000 스택 9788998139018 메모리 #1 0x1600 0x2000 0x0400 Book book2; 다른 참조 값 0x4000 스택 힙 메모리 #2

int [] products = new int[10]; 메모리 4바이트로 10개의 공간을 할당 0x0030 0x0000 0x2000 [9] [8] [7] [6] [5] [4] [3] [2] [1] [0] 힙 스택

int [] arr = new int[10]; int [,] arr = new int[3,10];

int [10] int [9] int [8] int [3] int [5] arr[0][8] arr[0][7] arr[0][6]

int i = 2; while (true) { int j = 1; Console.WriteLine(i + " * " + j + " = " + (i * j)); if (++j > 9) break; } if (++i > 9)

N = 1,Sum = 0 거짓 N = N + 1 Print Sum 참 Sum = Sum + N N < 1,000 3 또는 5의 배수 Sum = Sum + N 참 Print Sum

허클베리 핀의 모험 걸리버 여행기 이상한 나라의 앨리스

short var; 타입의 실체화된 객체 타입

Book 타입의 속성값을 담을 수 있는 메모리 할당 0x0000 Book gulliver = new Book(); Book 타입의 속성값을 담을 수 있는 메모리 할당 메모리 0x1400 0x2000

int result = m.f( 5 ); public int f(int x) { return x * x; }

Notebook Computer Desktop Netbook object DeviceManager

- bool - sbyte, byte - short, ushort - int, uint - long, ulong float, double decimal char System.ValueType class로 정의하는 타입들… object string enum, struct로 정의하는 타입들… 값 형식 참조 형식 System.Array 코드에 정의된 모든 배열

Circle o = new Circle(); double piValue = o.Pi; o.Pi = 3.14159; public double Pi { get { return pi; } set { pi = value; } }

정수 short -32,768 ~ +32,767 int -2,147,483,648 ~ +2,147,483,647

암시적 형변환 명시적 형변환 Computer Notebook 속성 행위 powerOn Boot Shutdown Reset 속성 fingerScan HasFingerScanDevice CloseLid

string text = “Hello”; … H 메모리 0x1400 0x2000 0x0000

0x0000 홍길동 메모리 _name: 0x1400 0x2000 0x0800 홍길순 2 0x1400 CountOfInstance Person 타입 person1 인스턴스 person2 인스턴스 _name: 0x0800

class Target { public void Do(Source obj) Console.WriteLine(obj.GetResult()); } class Source public int GetResult() return 10; public void Test() Target target = new Target(); target.Do(this); ① ②

int Clean (object arg); int FuncDelegate (object arg); delegate int FuncDelegate (object arg); 대상 메서드의 반환값과 인자를 분리하고, 식별자만 바꾼다. 그 상태에서 delegate 예약어를 추가한다.

0x0000 Point pt1; 6 12 메모리 0x2000 0x0400 Vector v1; 5 10 Point pt2 = pt1; Vector v2 = v1; 0x1200 0x1600 스택 힙

Vector v1; 5 10 메모리 0x0000 0x2000 Change(ref Vector vt) 0x1600 스택

0x0000 Point pt1; 5 10 메모리 0x2000 Change(ref Point pt) 0x0400 스택 힙

0x2000 Point pt1; 스택 6 12 힙 Change1(Point pt) 메모리 0x2000 Change1(Point pt) null 6 12 pt = new Point(); pt.X = 6; pt.Y = 12; 0x400 스택 힙

0x0000 Point pt1 = null; 메모리 0x2000 Change2(ref Point pt) Point pt1; 7 14 0x0400 pt = new Point(); pt.X = 7; pt.Y = 14; 스택 힙

System.IndexOutOfRangeException System.SystemException System.NullReferenceException …그 밖에 CLR을 통해 발생하는 모든 예외… System.Exception System.ApplicationException …응용 프로그램 개발자가 정의하는 예외…

5 6 void Main(string [] args) { int result = Sum(5, 6); 0xFFFFFFFF … } 메모리 0xFFFFFFFF 5 Main을 실행하는 스레드에 할당된 스택 6 int Sum( int v1, int v2 ) { int v3 = v1 + v2; return v3; Sum 메서드 호출 후 실행될 주소

5 6 0xFFFFFFFF Main을 실행하는 스레드에 할당된 스택 0x00000000 메모리 v3 용 4바이트 Sum 메서드 호출 후 실행될 주소 v3 용 4바이트

0세대 위치 a 0세대

a b c d e f g 0세대 a b c f g 0세대 1세대

a b c f g h i j k 0세대 1세대 a b c f g h i 0세대 1세대 2세대

a b c 0세대 1세대 2세대 20MB 40MB 40MB(Free) Free 40MB 20MB 40MB

… i 관리 힙 종료 큐 … i 관리 힙 종료 큐 Freachable 큐

… i 관리 힙 종료 큐 Freachable 큐

string txt = “Hello {0}: {1}”; string output = string.Format(txt, “World”, “Anderson”); string txt = “{0,-10} * {1} == {2,10}”; string output = string.Format(txt, 5, 6, 5 * 6); 5 * 6 == 10 10개의 공백 - 좌측정렬 10개의 공백 - 우측정렬

0x0000 string txt; 메모리 #1 0x2000 0x0400 string lwrText; 0x4000 스택 힙 hello world 메모리 #1 0x1600 0x2000 0x0400 string lwrText; Hello World 0x4000 스택 힙 메모리 #2

검색시간 컬렉션 크기 O(N) O(1)

1 Push 1 Push 5 5 Push 3 3 Pop Push 7 7

1 5 3 7 Enqueue 1 Enqueue 5 Enqueue 3 Dequeue Enqueue 7 Dequeue (empty)

“Hello World” 직렬화 byte [ ] 역직렬화 0x48 0x65 0x6c 0x6f 0x20 0x57 0x72

MemoryStream 의 내부 byte 배열 Position = 0 0x7D 0x00 Position = 2 0x7D 0x00 0x4C 0x36 0x19 Position = 6 0x7D 0x00 0x4C 0x36 0x19 Position = 0

0x7D 0x00 0x4C 0x36 0x19 Position = 6 Position = 2 2 바이트 읽음 4 바이트 읽음

스레드 1 실행 스레드 2 실행 CPU 스레드 1 스레드 2 운영체제 이전에 보관해 둔 CPU의 실행 정보를 복원 int func() { int a = 5; int b = 6; int sum = a + b; return sum; } void procedure() Console.WriteLine(“test”); Console.WriteLine(“is”);

Thread t = new Thread(threadFunc); t 스레드 주 스레드 Main 메서드 진입 Thread t = new Thread(threadFunc); t 스레드 t.Start(); 더 이상 실행될 명령어가 없으므로 스레드 종료 스레드 실행 Console.WriteLine(“......”); threadFunc 메서드 진입

Thread t = new Thread(threadFunc); t 스레드 주 스레드 Main 메서드 진입 Thread t = new Thread(threadFunc); t 스레드 t.Start(); 스레드 종료 스레드 실행 Console.WriteLine(“......”); Thread.Sleep(1000 * 60); threadFunc 메서드 진입 t.Join(); 스레드 대기 스레드 종료 알림 스레드 재개

CPU 1번 CPU 2번 CPU 3번 CPU 4번 스레드 A 실행 스레드 B 실행 스레드 C 실행 D 실행 E 실행 F 실행 G 실행 CPU 4번 H 실행 I 실행 J 실행 A 실행

Non-Signal Signal Set Reset

Read 스레드 디스크 스레드 대기 디스크 I/O 다음 코드 실행

BeginRead 스레드 디스크 디스크 I/O  다음 코드 실행 스레드 풀 스레드 readCompleted 실행

스레드 디스크 I/O 디스크 스레드 풀 스레드 스레드 대기 총 스레드 사용 시간 QueueUserWorkItem  다음 코드 실행 스레드 디스크 I/O 디스크 스레드 풀 스레드 스레드 대기 총 스레드 사용 시간

스레드 WaitOne 대기 스레드 스레드 풀 Cumsum 다음 코드 실행 calc (Cumsum) BeginInvoke

BeginInvoke 스레드 스레드 풀 calcCompleted 다음 코드 실행 Cumsum

013-1200-3001 013-1200-3000 홍길동: 013-1200-3000 홍길순: 013-1200-3001 전화번호부 1 2 3 홍길순 홍길동

202.131.30.11 10.10.10.200 전화번호부 1 2 3 네이버 서버 사용자 PC 네트워크 어댑터 DNS 서버 www.sysnet.pe.kr: 168.63.135.152 www.naver.com: 202.131.30.11 전화번호부 1 2 3 네이버 서버 사용자 PC 네트워크 어댑터 DNS 서버

사내 PC Internet 라우터 네이버 웹 서버 192.168.0.2 (개인 IP) 202.131.30.11 (공용 IP)

Internet 네이버 웹 서버 (유무선) 액세스 포인트 192.168.1.2 (개인 IP)

DNS 서버 등록 데이터 www.testdomain.com   173.252.110.27 173.252.100.27 173.252.110.27 (공용 IP) 웹 서버 1 Internet 173.252.100.27 (공용 IP) 웹 서버 2 DNS 서버 DNS 서버 등록 데이터 www.testdomain.com   173.252.110.27 173.252.100.27

TCP/IP 사용 클라이언트 A 서버 192.168.1.10 192.168.1.11 클라이언트 B xx TCP/IP 사용 클라이언트 B 192.168.1.10과 통신 192.168.1.11과 통신 192.168.1.10을 점유하는 프로그램 192.168.1.11을 점유하는 프로그램

TCP/IP 사용 클라이언트 A 서버 192.168.1.10 클라이언트 B 80번 포트를 점유하는 프로그램 xx TCP/IP 사용 클라이언트 B 192.168.1.10의 80번 포트와 통신 192.168.1.10의 90번 포트와 통신 80번 포트를 점유하는 프로그램 90번 포트를 점유하는 프로그램

10.10.10.200 사용자 PC 네트워크 어댑터 A 10.10.10.201 네트워크 어댑터 B 60.20.10.150 60.20.10.151 IP TCP UDP

사용자1 네트워크 어댑터 A (10.10.10.200) 네트워크 어댑터 B (60.20.10.150) 10.10.10.201 60.20.10.151 사용자2 사용자3

UDP 서버 소켓 UDP 클라이언트 소켓 SendTo/Receive serverFunc - 스레드 clientFunc

new Socket(…); Bind Listen Accept Close 2) IP+Port 와 연결 3) 클라이언트로부터 연결을 받을 수 있도록 소켓 상태 전환 4) Listen 이후 연결된 클라이언트를 하나 꺼내와서 반환 5) 서버 소켓 종료 1) TCP 소켓 생성

H e l o char(10) varchar(10)

reader = cmd.ExceuteReader(); Anderson 1950-06-02 anderson@gmail.com 2 Jason 1967-12-03 jason@gmail.com Mark 1988-03-02 mark@naver.com 1 1행 2행 3행 reader = cmd.ExceuteReader(); true = reader.Read() false = reader.Read()

UI 계층 데이터 접근 계층 class MemberInfoDAC 데이터베이스 응용 프로그램 class BlogDAC 데이터 컨테이너 class Blog

UI 계층 데이터 접근 계층 class MemberInfoDAC 데이터베이스 응용 프로그램 class BlogDAC DataSet 데이터 컨테이너

EXE 프로세스(Process) n개의 추가 AppDomain AppDomain 어셈블리 A 어셈블리 B n개의 어셈블리…

어셈블리(Assembly) n개의 모듈(Module) n개의 타입(클래스) n개의 메서드 n개의 필드 n개의 프로퍼티 n개의 이벤트

0x0000 5 메모리 0x2000 스택 영역 힙 영역 0x0400 박싱(Boxing) Add( 0x0400 );

public class NewStack<T> { T [] _list; public void Push(T item) { …… } public T Pop() { …… } } NewStack<int> t = new …; NewStack<double> t = new …; public class NewStack<int> int [] _list; public void Push(int item) { …… } public int Pop() { …… } public class NewStack<double> double [] _list; public void Push(double item) { …… } public double Pop() { …… }

3 ForEach( (elem) => { … } ); 1 4 5 2 Action<T> 리스트의 요소를 하나씩 차례대로 Action<T>에 전달

+ 2항 표현식(Binary Expression) a b 인자 표현식(Parameter Expression) Left Right Expression

from person in people select person; foreach (var person in people) yield return person;

join language in languages Tom 63 Korea Winnie 40 Tibet Anders 47 Sudan Hans 25 Eureka 32 Hawk 15 from person in people join language in languages on person.Name equals language.Name select new { ...... }; Anders Delphi C# Tom Borland C++ Hans Visual C++ Winnie R

LINQ(Language-Integrated Query) C# VB.NET … 기타 .NET 언어 LINQ(Language-Integrated Query) IEnumerable LINQ to Objects LINQ 제공자 LINQ to DataSet LINQ to SQL LINQ to Entities LINQ to XML 배열, List<T>, …… 관계형 DB XML

byte[] buf = new byte[fs.Length]; fs.Read(buf, 0, buf.Length); string txt = Encoding.UTF8.GetString(buf); Console.WriteLine(txt); 동기식 코드 비동기식 코드로 변환 fs.BeginRead(…, readCompleted, …);

스레드 디스크 디스크 I/O 스레드 풀 스레드 ReadAsync  (곧바로 메서드 반환)  Console.ReadLine 실행 스레드 풀 스레드 GetString 메서드  WriteLine 메서드 C# 컴파일러가 분리해낸 코드

int a; 6 메모리 5 0x0000 0x2000 int b; 0x1600 0x1200 스택 영역 스택 영역 int a; 5 메모리 0x0000 0x2000 int b; 0x1600 0x1200

스택 영역 int a; 5 메모리 0x0000 0x2000 int b; 0x1600 0x1200

0x2000 int n1; string txt1; 5 0x1600 int n2; 스택 영역 C# 힙 영역 0x1200 메모리 0x0400 0x2000 int n1; 5 string txt2; int n2; 스택 영역 힙 영역 0x1600 0x1200

마우스 클릭 윈도우 운영체제가 마우스 눌림을 윈도우에 전달 Form1.Click 이벤트 발생

부모 윈도우 자식 윈도우 + = 2개의 윈도우

윈도우 요소(Element) 메모리 영역을 메모리에 그린다. 메모리상의 그림이 합쳐져서 하나의 윈도우 출력이 완성된다.

INotifyPropertyChanged를 구현한 인스턴스 using System; using System.ComponentModel; using System.Windows; using System.Windows.Threading; namespace WpfApplication1 { public partial class MainWindow : Window, INotifyPropertyChanged DispatcherTimer _timer; string _time; public string Time get { return _time; } set _time = value; PropertyChanged(this, new PropertyChangedEventArgs("Time")); } public MainWindow() InitializeComponent(); // …… [생략] …… void _timer_Tick(object sender, EventArgs e) this.Time = DateTime.Now.ToLongTimeString(); public event PropertyChangedEventHandler PropertyChanged; <Window x:Class="WpfApplication1.MainWindow" xmlns=“……" xmlns:x=“……" x:Name="thisWindow“ ……> <Grid> <Label DataContext="{Binding ElementName=thisWindow}" Content="{Binding Path=Time}" ……></Label> </Grid> </Window> INotifyPropertyChanged를 구현한 인스턴스 Time 속성을 가진 인스턴스 Content 에 반영 이벤트 발생

_processInstaller.Account = ServiceAccount.LocalService; _serviceInstaller.ServiceName = “MyEchoServer”; _serviceInstaller.Description = “My First Service Program”; _serviceInstaller.StartType = ServiceStartMode.Automatic;

웹 서버 (w3wp.exe) CGI 실행 파일 ([……].exe) 표준 입력을 통해 인자 값 전달 표준 출력을 통해 HTML 텍스트 반환

사용자 컴퓨터 myapp.exe RAM 상태 유지

사용자 컴퓨터 웹 브라우저 서버 컴퓨터 웹 서버 HTTP 통신 ASPX 클래스 RAM

전송 버튼을 누르면

전송 버튼을 누르면

PC 윈도우 폰 파워포인트 PPTShow ShowController

PC 윈도우 폰 파워포인트 PPTShow ShowController HTTP 통신 5022번 포트 대기 오피스 자동화 기술을 이용해 제어

…… 컴퓨터 IP …… 5022 Open …… 선택된 PPT 파일 경로 …… Port Label 컨트롤 Button 컨트롤

…… 컴퓨터 IP 목록 …… 5022 Open …… 선택된 PPT 파일 경로 …… Port Label 컨트롤 Button 컨트롤 Not Loaded 목록 컨트롤

…… 컴퓨터 IP …… 5022 Connect IP TextBlock 컨트롤 Button 컨트롤 Port TextBox 컨트롤

현재 슬라이드 이미지 TextBlock 컨트롤 Image 컨트롤 Panorama 컨트롤 슬라이드의 메모 내용

현재 슬라이드 이미지 Image 컨트롤 Panorama 컨트롤 슬라이드의 메모 내용 TextBlock 컨트롤 전체 슬라이드의 이미지 목록 ListBox 컨트롤 + Image 컨트롤

닷넷 응용 프로그램 COM 개체 RCW 관리되지 않는(Unmanaged) 영역 관리(Managed) 영역

PC 윈도우 폰 파워포인트 PPTShow ShowController HTTP 통신 5022번 포트 대기 오피스 자동화 기술을 이용해 제어

닷넷 응용 프로그램 P/Invoke Microsoft.Win32 Win32 API