Microsoft PowerPoint - hci2-lecture12 [호환 모드]

Similar documents
(Microsoft PowerPoint - hci2-lecture12 [\310\243\310\257 \270\360\265\345])

gnu-lee-oop-kor-lec06-3-chap7

PowerPoint Presentation

PowerPoint Presentation

(Microsoft PowerPoint - C#\260\355\261\3361.ppt)

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

Microsoft PowerPoint - CSharp-10-예외처리

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 05. 객체의 활용

PowerPoint Presentation

Design Issues

3ÆÄÆ®-14

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

어댑터뷰

PowerPoint 프레젠테이션

비긴쿡-자바 00앞부속

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

쉽게 풀어쓴 C 프로그래밍

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

PowerPoint Presentation

Microsoft PowerPoint - 04-UDP Programming.ppt

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

JAVA PROGRAMMING 실습 02. 표준 입출력

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - Lect04.pptx

rmi_박준용_final.PDF

PowerPoint 프레젠테이션

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

PowerPoint Presentation

PowerPoint Presentation

제11장 프로세스와 쓰레드

<4D F736F F D20BEBEBCA520C4DAB5F920BFACBDC0202D20B8D6C6BC20BEB2B7B9B5E5BFCD20C0CCBAA5C6AE2E646F6378>

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

PowerPoint Presentation

Microsoft PowerPoint - C++ 5 .pptx

PowerPoint 프레젠테이션

Spring Data JPA Many To Many 양방향 관계 예제

C++ Programming

쉽게 풀어쓴 C 프로그래밍

JAVA PROGRAMMING 실습 07. 상속

Microsoft PowerPoint - 2강

교육자료

mytalk

쉽게 풀어쓴 C 프로그래밊

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

JVM 메모리구조

JAVA PROGRAMMING 실습 05. 객체의 활용

5장.key

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 09. 예외처리

PowerPoint Presentation

Network Programming

C++ Programming

설계란 무엇인가?

Microsoft PowerPoint - Chapter 6.ppt

Microsoft PowerPoint - Java7.pptx

17장 클래스와 메소드

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

Microsoft PowerPoint - Chap12-OOP.ppt

05-class.key

PowerPoint Presentation

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

PowerPoint Presentation

제8장 자바 GUI 프로그래밍 II

Microsoft PowerPoint - additional08.ppt [호환 모드]

Index Process Specification Data Dictionary

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

Microsoft PowerPoint - 03-TCP Programming.ppt

PowerPoint 프레젠테이션

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

Data Provisioning Services for mobile clients

Interstage5 SOAP서비스 설정 가이드

PowerPoint Presentation

C++ Programming

07 자바의 다양한 클래스.key

3ÆÄÆ®-11

PowerPoint 프레젠테이션

중간고사

PowerPoint 프레젠테이션

PowerPoint Presentation

쉽게

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

Microsoft Word - java19-1-midterm-answer.doc

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

Microsoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt

유니티 변수-함수.key

자바 프로그래밍

PowerPoint 프레젠테이션

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

untitled

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

PowerPoint Presentation

슬라이드 1

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f

Transcription:

Serialization C# Serialization 321190 2012 년가을학기 11/28/2012 박경신 Serializaiton( 직렬화 ) 란객체상태를지속시키거나전송할수있는형식으로변환하는과정으로, Serialization 반대로다시객체로변환하는것을 Deserialization 임 Serialization i 을사용하는이유 객체의상태를저장소에보존했다가나중에똑같은복사본을다시만들기위하거나, 한응용프로그램에서다른응용프로그램으로객체를전송하기위해서임 닷넷에서제공하는 Serialization 방식 Binary Serialization 형식 (Type) 정확도를유지하므로응용프로그램의여러호출간에객체상태를유지하는데유용. 객체를스트림, 디스크, 메모리, 네트워크등으로 serialize 함. XML Serialization public 속성과필드만 serialize 하며형식정확도를유지하지않음. XML은공개표준이므로웹을통해데이터를공유하는데효과적인방법임. Serialization Binary Serialization Serialize하고자하는객체의 public, private 필드와클래스이름을모두바이트의스트림 (binary) 로변환하는방식이며, deserialize 되면원본객체의정확한복제본이생성 Binary Serialization 방법 기본 Serialization 클래스의일부멤버를 Serialize하는선택적 Serialization ISerializable 인터페이스를사용한사용자지정 Serialization XML/SOAP Serialization XML Serialization은객체의 public 필드와속성또는메소드의매개변수와반환값을 XML 스트림으로 Serialize하는방식으로, XML Serialization을사용하면저장이나전송을위해직렬형식으로변환되는 public 속성및필드가있는강력한형식클래스생성 XML/SOAP Serialization 방법 XML Serialization SOAP인코딩된 XML 스트림으로 Serialization 기본 Serialization 클래스를 Serializable 특성으로표시 public class MyObject { public int n1 = 0; public int n2 = 0; public string str = null; 클래스객체를 Serialize 하여파일로저장 MyObject obj = new MyObject(); // 객체생성 obj.n1 = 1; obj.n2 = 2; obj.str = test ; FileStream stream = new FileStream( TestFile.bin, FileMode.Create, FileAccess.Write, FileShare.None); // FileStream 생성 BinaryFormatter bf= new BinaryFormatter(); // BinaryFormatter 생성 bf.serialze(stream, obj); // Formatter에게 stream과객체를주고 serialize stream.close(); // FileStream 닫기 Serialize 된객체를반대로 Deserialize 로복원 BinaryFormatter bf= new BinaryFormatter(); // BinaryFormatter 생성 FileStream stream = new FileStream( TestFile.bin, FileMode.Open, FileAccess.Read); MyObject obj = (MyObject) bf.deserialze(stream); // Deserialize stream.close(); // FileStream 닫기

get { return name; set { name = value; using System.Runtime.Serialization.Formatters.Binary; textbox3.text, textbox4.text); FileStream fs = new FileStream(@ C:\Person.bin, FileMode.Create, FileAccess.Write); BinaryFormatter bf= new BinaryFormatter(); bf.serialze(fs, p); // Formatter 에게 stream 과 Person 객체를주고 serialize get { return name; set { name = value; using System.Runtime.Serialization.Formatters.Soap; textbox3.text, textbox4.text); FileStream fs = new FileStream(@ C:\Person.xml, ml FileMode.Create, FileAccess.Write); SoapFormatter sf= new SoapFormatter(); sf.serialze(fs, p); // SoapFormatter 에게 stream 과 Person 객체를주고 serialize using System.Runtime.Serialization.Formatters.Binary; List<Person> plist = new List<Person>(); FileStream fs = new FileStream(@ C:\PersonList.bin, FileMode.Create, FileAccess.Write); BinaryFormatter bf= new BinaryFormatter(); bf.serialze(fs, plist); // BinaryFormatter 에게 stream 과 Person 리스트객체를주고 serialize private void button2_click(object sender, EventArgs e) { FileStream fs = new FileStream(@ C:\PersonList.bin, FileMode.Open, FileAccess.Read); BinaryFormatter bf= new BinaryFormatter(); plist = (List<Person>)bf.Deserialze(fs); // Person 리스트 deserialize // 리스트뷰에출력 listview1.items.clear(); foreach (Person p in plist) ){ listview1.items.add(p.tolistviewitem()); 선택적 Serialization 클래스에서 serialize 하지않아야할필드를 NonSerialized 특성으로표시함으로써해당변수가 Serialize 되지않게함 public class MyObject { public int n1 = 0; [NonSerialized] [ o Se a ed] public int n2 = 0; // n2 멤버는더이상 serialize 되지않음 public string str = null;

Custom Serialization ISerializable 인터페이스를사용한사용자지정 Serialization // GetObjectData 메소드와 deserialize 될때사용되는특수생성자구현이포함되어야함 public class MyObject : ISerializable { public int n1=0; public int n2=0; public string str=null; public MyObject() { protected MyObject(SerializationInfo info, StreamingContext context) ){ n1 = info.getint32( i ); n2 = info.getint32( j ); str = info.getstring( k ); // deserialize시필요 [SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)] public virtual void GetObjectData(SerializationInfo info, StreamingContext context){ info.addvalue( i, n1); info.addvalue( j, n2); info.addvalue( AddValue( k k, str); // serialize시필요 public class Person: IComparable<Person>, IEquatable<Person>, ISerializable { #region ISerializable public Person(SerializationInfo info, StreamingContext context) { this.name = info.getstring("name"); this.id = info.getint32("id"); this.phone = info.getstring("phone"); this.address = info.getstring("address"); public void GetObjectData(SerializationInfo info, StreamingContext context) { info.addvalue("name", this.name); info.addvalue("id", this.id); info.addvalue("phone", this.phone); info.addvalue("address", this.address); #endregion Custom Serialization 사용자가 Serialization을직접제어하는방식으로 ISerializable 인터페이스를사용하는방식외에, Serialization 도중과이후에데이터를수정하는데사용되는메소드에다음특성을적용 OnDeserializedAttribute OnDeserializing Attribute OnSerializedAttribute OnSerializingAttribute XML Serialization XML Serialization 특징 XML은공개표준이기때문에 XML 스트림은플랫폼에관계없이필요에따라모든응용프로그램에서처리될수있음 XML serialization 은 SOAP 사양과일치하는 XML 스트림으로객체를 serialize하는데사용할수있음 객체를 serialize하거나 deserialize 하기위해서는 XmlSerializer 클래스를사용 Serialize된데이터에는데이터자체와클래스의구조만포함 Public 속성및필드만 serialize 될수있음 만약 public 이아닌데이터를 serialize 해야하는경우 binary serialization을사용할것 클래스는 XmlSerializer에의해 serialize될기본생성자가있어야함 메소드는 serialize 될수없음

XML Serialization XmlSerializer 를사용하여 serialize/deserialize 하는방법 public class MyObject { public int n1=0; private int n2=0; public string str=null; public MyObject() { n1 = 1; n2 =2; str= XML serialization ; // 결과물인 obj.xml 에는 private 멤버와메소드의정보는기록되지않음 class Program { static void Main(string[] args) { MyObject obj = new MyObject(); // MyObject 객체생성 // XmlSerializer 생성자에 serialize하고자하는객체의타입을전달하여생성 XmlSerializer xs = new XmlSerializer(typeof(MyObject)); ( y StreamWriter sw = new StreamWriter( obj.xml ); // stream writer 생성 xs.serialize(sw, obj); // XmlSerializer에게 stream과객체를전달하여 serialize sw.close(); StreamReader sr = new StreamReader( obj.xml ); // stream reader 생성 MyObject obj2 = (MyObject) xs.deserialize(sr); // deserialize Console.WriteLine( WriteLine( n1= n1= + obj2.n1 + str= + obj2.str); sr.close(); SOAP 인코딩된 XML Serialization SOAP 인코딩된 XML Serialize하기위해서는, 새로운 SoapReflectionImporter를만들고 serialize된클래스의형식으로 ImportTypeMapping 메소드를호출하여 XmlTypeMapping 을만든뒤 XmlSerializer 생성자매개변수에전달 class Program { static void Main(string[] args) { MyObject obj = new MyObject(); // MyObject 객체생성 XmlTypeMapping xtm = new SoapReflectionImporter().ImportTypeMapping(typeof(MyObject)); XmlSerializer xs = new XmlSerializer(xtm); StreamWriter sw = new StreamWriter( obj obj.xml xml ); // stream writer 생성 xs.serialize(sw, obj); // XmlSerializer에게 stream과객체를전달하여 serialize sw.close(); [XmlType(Namespace= urn:person )] [XmlAttribute(AttributeName= Name )] get { return name; set { name = value; using System.Xml; Using System.Xml.Serialization; Serialization; textbox3.text, tbo t textbox4.text); tbo t) FileStream fs = new FileStream(@ C:\Person.xml, FileMode.Create, FileAccess.Write); XmlSerializer xs= new XmlSerializer(typeof(Person)); xs.serialze(fs, p); // XmlSerializer li 에게 stream 과 Person 객체를주고 serialize [XmlType(Namespace= urn:person )] [XmlAttribute(AttributeName= Name )] get { return name; set { name = value; using System.Xml; Using System.Xml.Serialization; textbox3.text, textbox4.text); FileStream fs = new FileStream(@ C:\Person.xml, FileMode.Create, FileAccess.Write); XmlTypeMapping xtm= new SoapReflectionImporter().ImportTypeMapping(typeof(Person)); XmlSerializer xs= new XmlSerializer(xtm); xs.serialze(fs, p); // XmlSerializer에게 stream과 Person 객체를주고 serialize

XML XML 기본 Element 와 Contents 로구성 Element는문서의구조를정의하는요소. 시작과끝태그 (Tag) 를사용하여표시 Contents는실제데이터 XML 파서 (Parser) 가필요함 www.w3.org/xml에서정의한구문규칙을사용 대표적인파서로 ms XML Core Services(MSXML) XML 문서는선택적으로문서의구조를정의하는 DTD (Document Type Definition) 또는스키마 (Schema) 를참조가능 XML 구성요소 XML 구성요소 Element 마크업태그와그안에포함된내용 Root Element 문서내모든 Element와내용을포함하고있는 XML 문서의요소 Attribute Element에포함되어추가적인정보를제공 Entity 텍스트, Binary, 비 ASCII 문자를저장하는데사용 Processing Instruction 전체문서나문서의일부를처리하는응용프로그램과연결해주는명령어 Comment ( 주석 ) XML 프로세서가해석하지않는설명문 CDATA Section 모든문자를마크업이나태그로인식하지않고일반문자로인식할수있는표기법. 즉, 특수한문자를일반텍스트로인식하도록하는표기법 XML Element XML Attribute public class Person { [XmlElement("Name")] get; set; [XmlElement( ID")] public int ID { get; set;.. <Person> <Name>Park </Name> <ID>1207</ID> <Phone> 000-111-2222</Phone> <Address> 단국대학교 </Address> </Person> 19 public class Person { [XmlAttribute(AttributeName="Name")] get; set; [XmlAttribute(AttributeName= ID")] public int ID { get; set;.. <Person Name= Park ID= 1207 Phone= 000-111- 2222 Address= 단국대학교 /> 20

XML 구성요소 처리명령 (Processing Instruction) <? 와?> 사이에표현되고특정응용프로그램에대해처리할정보나명력을가리키는역할 <?xml:stylesheet type="text/xsl" text/xsl href=" 메모.xsl xsl"?> XML 의스타일쉬트를지정하고, 타입은 test/xsl이며, 소스는메모.xsl에있다는의미 주석 (Comment) <!- - 와 - -> 사이에정의되고주석처리로사용 <!-- <Person Name= Park ID= 1207 Phone= 000-111-2222 Address= 단국대학교 />--> CDATA 섹션 (CDATA Section) <![CDATA[ 와 ]]> 사이에정의되고그안의내용을문자열로사용 <![CDATA[<Person Name= Park ID= 1207 Phone= 000-111- 2222 Address= 단국대학교 />]]> 21