samchon frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. oon •samchon...

41
Samchon Framework https://github.com/samchon/framework https://github.com/samchon/typescript-stl

Upload: others

Post on 03-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

Samchon Framework

https://github.com/samchon/framework

https://github.com/samchon/typescript-stl

Page 2: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

Index

Outline

• OON

• System Templates

• TypeScript-STL

Specification

• Basic Components

• System Templates

• Examples

Appendix

• Documents

• New Features

2

Page 3: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

Outline

1. OON

2. System Templates

3. TypeScript-STL

3

Page 4: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

1. OON

• Samchon Framework 는,

• Object Oriented Network; 객체지향네트워크

• 네트워크시스템을객체지향적인관점에서,

• S/W 오브젝트를다루듯이구축할수있다.

• 네트워크시스템의각노드는객체다.

4

Page 5: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

1. OON

• 노드 = 오브젝트

• 노드간네트워크메시지전송

• = 오브젝트간에

• 함수 (메소드)를부르고

• 파라미터를전달함

Node

Object

+method1(number)+method2(string, numbe)

Equals

5

Page 6: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

1. OON

TSP and Packer with Tree-structured network system

Symbol Count Description

Each icon means

System Legend

2 Tablet PC

6 Desk-note 17''

4 Notebook 14''

Reporter

Packer Mediator Packer #2

Packer #1-1 Packer #1-2

TSP #2TSP #1

TSP Solver Master

IP: 192.168.0.102Port: #37100,

37110

IP: 192.168.0.101Port: #37300,

37310

Port: #37350

IP: 192.168.0.101Port: #37200

Chief

client

Packer #4

Packer Master

Packer #3

6

Page 7: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

1. OON

• 구성하려는네트워크시스템이

• 얼마나복잡하던, 혹은얼마나거대하던

• 단순히객체지향적인관점에서바라보며

• 오브젝트에서오브젝트로

• 함수를부르고파라미터를전달하면됨

7

Page 8: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

1. OON

Network System

TSP and Packer with Tree-structured network system

Symbol Count Description

Each icon means

System Legend

2 Tablet PC

6 Desk-note 17''

4 Notebook 14''

Reporter

Packer Mediator Packer #2

Packer #1-1 Packer #1-2

TSP #2TSP #1

TSP Solver Master

IP: 192.168.0.102Port: #37100,

37110

IP: 192.168.0.101Port: #37300,

37310

Port: #37350

IP: 192.168.0.101Port: #37200

Chief

client

Packer #4

Packer Master

Packer #3

Object Oriented NetworkInteraction

node chief Master Systems

Abstract master classes

node reporter

node packer-master

node tsp-master

node packer-mediator

Slave Systems

Abstract Slavenode packer-slave

node tsp-slave

PackerMediator extends ParallelClientArrayMediator

-best_solution: Packer

+PackerMediator(master_ip: string)

-completed_count: number-requested_size: number

#createServerBase() -> IServerBase#createMediator() -> MediatorSystem

#createExternalClient(IClientDriver) -> ExternalSystem

#replyOptimization(XML)+sendData(Invoke)

TSPMasterextends Master

-best_solution: Scheduler

+constructor()#optimize(XML)#replyOptimization(XML)

+static main()

+static main()

MasterDriverextends ExternalServer

-chief: Chief

+constructor(Chief, string)#createConnector() -> IServerConnector

+replyData(Invoke)

Chiefextends ExternalServerArray

+constructor()

+solveTSP()+solvePacker()+replyData(Invoke)

#createChild(XML) -> ExternalSystem

11

33

TSP, Packer& Reporter

connects

Masterextends ParallelClientArray

#chiefDriver: ChiefDriver

#createServerBase() -> IServerBase

SlaveDriverextends ParallelSystem

+replyOptimization(XML)

#createExternalClient(IClientDriver)-> ExternalSystem

#optimize(XML)#replyOptimization(XML)

ChiefDriverextends WebServer

implements IProtocol

-master: Master

+constructor(Master)

-client_drvier: WebClientDriver

+addClient(WebClientDriver)

+sendData(Invoke)+replyData(Invoke)

+using super::constructor

1

1

1

1

11

N0

contains and manages

#completed_count: number#requested_size: number

+constructor(port_for_chief: number)

Reporterextends ChiefDriver

+constructor()

-printTSP(XML)-printPacker(XML)

+static main()

+replyData(Invoke)

ChiefDriver is a weird server that

accepts only a client, Chief system. It takes a role of communicating with the Chief sytem.

ChiefDriver is built for providing a

guidance for designing a boundary class which is representing an unusual system.

You can learn how to utilize basic components by following the ChiefDriver

example.

PackerMasterextends Master

-best_solution: Packer

#optimize(XML)#replyOptimization(XML)

+constructor()

+static main()

Reporter system prints optimization

results on screen which are gotten from Chief system

Of course, the optimization results came from Chief system are came from Master systems and even the Master systems also got those optimization results from those own slave systems.

Report system is built for be helpful for

users to comprehend using chain of responsibility pattern in network level.

Master systems are built for providing a guidance of building parallel processing

systems in master side. You can study how to utilize master module in protocol following the example. You also can understand external system module; how to interact with external network systems.

Master system gets order of optimization with its basic data from Chief system and

shifts the responsibility of optimization process to its Slave systems. When the Slave systems report each optimization result, Master system aggregates and deducts the best solution between them, and report the result to the Chief system.

Note that, Master systems get orders from Chief system, however Master is not a client

for the Chief system. It's already acts a role of server even for the Chief system.

connected&intermediated

Packer mediator system is placed on

between Master and Slave systems. It can be a Slave system in Master side, and also can be a Master system for its Slave systems.

PackerMediator is built for providing a

guidance; how to build tree-structured parallel processing system..

Chief system manages Master systems.

Chief system orders optimization processes to each Master system and get reported the optimization results from those Master systems

The Chief system is built for providing a

guidance for external system module.

You can learn how to integrate with external network system following the example, Chief system.

Being Connected

Slaveextends SlaveClient

#optimize(XML, size_t, size_t)

#createConnector() -> IServerConnector#createChild(XML) -> ExtSystemRole

+using super::super

PackerSlaveextends Slave

+using super::constructor#optimize(XML, size_t, size_t)

+static main()

TSPSlaveextends Slave

+using super::constructor#optimize(XML, size_t, size_t)

+static main()

Slave is an abstract and example class has

built for providing a guidance; how to build a Slave system belongs to a parallel processing system.

In the interaction example, when Slave gets orders of optimization with its basic

data, Slave calculates and find the best

optimized solution and report the solution to its Master system.

PackerSlave is a class representing a

Slave system solving a packaging problem. It receives basic data about products and packages and find the best packaging solution.

TSPSlave is a class representing a Slave

system solving a TSP problem.

Principle purpose of protocol module in Samchon Framework is to

constructing complicate network system easily within framework of Object Oriented Design, like designing classes of a S/W. Furthermore, Samchon Framework provides a module which can be helpful for building a network system interacting with another external network system and master and slave modules that can realize (tree-structured) parallel (distributed) processing system.

Interaction module in example is built for providing guidance for those things.

Interaction module demonstrates how to build complicate network system easily by considering each system as a class of a S/W, within framework of Object-Oriented Design.

Of course, interaction module provides a guidance for using external system and

parallel processing system module.

You can learn how to construct a network system interacting with external network system and build (tree-structured) parallel processing systems which are distributing tasks (processes) by segmentation size if you follow the example, interaction module.

If you want to study the interaction example which is providing guidance of building network system within framework of OOD, I recommend you to study not only the class

diagram and source code, but also network diagram of the interaction module.

8

Page 9: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

2. System Templates

• Samchon Framework 는

• 객체지향네트워크프레임워크

• Q. 객체지향?? 그럼모듈화도가능하지않을까?

• A. 가능하다. This is System Templates

9

Page 10: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

2. System Templates

• 네트워크시스템구조를모듈화하여

• 재사용성, 이식성을극대화

• This is OON

• 삼촌프레임워크의궁극적인목표

10

Page 11: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

2. System Templates

- Provides

• Cloud Service: 클라우드서버템플릿

• External System: 1: N 노드제어에관한템플릿

• Parallel System: 병렬처리시스템템플릿

• Distributed System: 분산처리시스템템플릿

11

Distributed Processing System Module

System and related Classes Histories

DistributedSystemArray

extends ParallelSystemArray

-process_map: HashMap

<string, DistributedProcess>

+constructor()

#createProcess(XML) ->

DistributedProcess

+toXML() -> XML

DistributedSystem

extends ParallelSystem

+constructor(DistributedSystemArray)

DistributedProcess

extends Entity

-systemArray: DistributedSystemArray

+constructor(DistributedSystemArray)

-progress_list, history_list:

HashMap<number, DSInvokeHistory>

-resource: double

-name: string

+construct(XML)

+replyData(Invoke)

+sendData(Invoke)

+sendData(Invoke, double)

+TAG() -> string := "process"

+toXML() -> XML

#_Send_back_history

(Invoke, InvokeHistory)

+virtual replyData(Invoke)

#_Report_history(InvokeHistory)

11

N0

1

1

0

N

DSInvokeHistory

extends InvokeHistory

-system: DistributedSystem

+DSInvokeHistory(DistributedSystem)

-process: DistributedProcess

-weight: double

+DSInvokeHistory(

DistributedSystem,

DistributedProcess,

Invoke, double)

+construct(XML)

+toXML() -> XML

#_Complete_history(InvokeHistory)

+construct(XML)

#_Normalize_performance()

InvokeHistory

extends Entity

-uid: number

+constructor()

-start_time_: Date

-end_time_: Date

-listener: string

+constructor(Invoke)

+construct(XML)

+complete()

+TAG() := "history"

+toXML() -> XML

+toInvoke() -> Invoke

ExternalSystemRole

extends Entity

+constructor(ExternalSystem)

+TAG() -> string := "role"

#system: ExternalSystem

+sendData(Invoke)

#name: string

+replyData(Invoke)

11

N0

DistributedSystem also can have Role

M

0

N

0

M:N Relationship

Derived Classes

DistributedSystemArrayMediator

DistributedServerArrayMediator

DistributedClientArrayMediator

DistributedServerClientArrayMediator

DistributedSystemArray

DistributedServerArray

DisttributedClientArray

DistributedServerClientArray

DistributedSystem

IDistributedServer

DistributedServer

DSInvokeHistory A reported InvokeHistory in framework of a

master of parallel processing system. The

master of a parallel processing system

estimates performance index of a slave

system by those reports.

Master distributes quantity of handing

process of slave systems from the estimated

performance index which is calculated from

those reports.

+constructor

(DSystemArray, IClientDriver)

DistributedSystemArrayMediator

extends DistributedSystemArray

-mediator_: MediatorSystem

+using super::super

#createMediator() -> Mediator

#startMediator()

#_Complete_history(InvokeHistory)

MediatorSystem

extends SlaveSystem

-system_array_: ExternalSystemArray

+constructor(ExternalSystemArray)

+replyData(Invoke)

+start()

-complete_history(number)

-_Reply_data(Invoke)

11

11

<<Mediator to real master>>ParallelSystem::replyData()

--->> ParallelSystemArrayMediator::replyData()

--->> Mediator::sendData()

Page 12: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

2. System Templates

- Do it yourself

• 여러분, 혹은여러분의회사가자주사용하는

• 특정네트워크시스템구조가존재한다면,

• 그또한, System Template 으로만들어

• 재사용성과이식성을극대화하십시오.

12

Page 13: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

2. System Templates

- Share your template

• 그리고여러분이만든 System Template 을

• 오픈소스로공유하십시오.

• 많은개발자들이비즈니스로직, 그자체에

• 더더욱집중할수있을것입니다.

13

Page 14: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

3. TypeScript-STL

• 두가지언어를지원

• C++

• TypeScript (JavaScript)

• Web-Browser

• NodeJS

14

Page 15: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

3. TypeScript-STL

• C++ 의 Container 와 Algorithm 일체를

• TypeScript 로마이그레이션한

• Samchon Framework 의 Sub-Project

15

Page 16: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

3. TypeScript-STL

• Linear

• Vector, List, Deque

• Associative

• TreeSet, TreeMultiSet

• TreeMap, TreeMultiMap

• HashSet, HashMultiSet

• HashMap, HashMultiMap

• Adaptor

• Queue, Stack, PriorityQueue

16

Page 17: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

3. TypeScript-STL

• 이종의언어가 ~를공유하면통합에수월

• 자료구조

• 알고리즘

• 아키텍처 (디자인)

• 마이그레이션을할때도

• Ctrl+C & Ctrl+V

• 이후소소한편집만해주면됨

17

Page 18: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

3. TypeScript-STL

- Strategy

• 빠른런칭

• TypeScript 와 HTML 로클라우드어플리케이션 (UI)

• TypeScript 와 NodeJS 로클라우드서버제작

• 퍼포먼스개선

• 무거운작업을 C++ 에분산하여처리

• 혹은클라우드서버를 C++ 로마이그레이션

18

Page 19: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

3. TypeScript-STL

35%

34%

31%

Line of Codes

C++

TypeScript

T-STL

19

Page 20: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

Specifications

1. Basic Components

2. System Templates

3. Examples

20

Page 21: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

1. Basic Components

Basic Components of Protocol

Communicators

Derived Communicators

IProtocolIProtocol is an interface for Invoke message,

standard message of network I/O in Samchon

Framework, chain.

IProtocol is used in network drivers

(ICommunicator) or some classes which are in

a relationship of chain of responsibility of

those network drivers (ICommunicator objects)

and handling Invoke messages.

You can see that all classes with related

network I/O and handling Invoke message are

implementing the IProtocol interface with

IServer and communicator classes.

<<Interface>>

IProtocol

+sendData(Invoke)

+replyData(Invoke)

<<Interface>>

ICommunicator

extends IProtocol

#listener: IProtocol

+sendData(Invoke)

+replyData(Invoke)

<<Interface>>

IServerConnector

extends Communicator

+onConnect: Function

+constructor(IProtocol)

+connect(ip: string, port: number)

<<Interface>>

IClientDriver

extends Communicator

+listen(IProtocol)

<<Interface>>

IServer

+open(port: number)

#addClient(IClientDriver)

creates whenever client connected

CommunicatorsServer

ServerBase

ClientDriver

ServerConnector

Web CommunicatorsWebServer

WebServerBase

WebClientDriver

WebServerConnector

Shared WorkerSharedWorkerServer

SharedWorkerServerBase

SharedWorkerClientDriver

SharedWorkerConnector

+onClose: Function

<<Interface>>

IServerBase

extends IServer

-target: IServer

#addClient(IClientDrive)

+constructor(IServer)+close()

+constructor(Socket)#socket: Socket

IServer The easiest way to defining a server class is to

extending one of them, who are derived from

the IServer.

· Server

· WebServer

· SharedWorkerServer

Whenever a client has newly connected, then

addClient() will be called with a IClientDriver

object, who takes responsibility of network

communication with the client.

IServerBase However, it is impossible (that is, if the class is

already extending another class), you can

instead implement the IServer interface, create

an IServerBase member, and write simple

hooks to route calls into the aggregated

IServerBase.

ICommunicator ICommunicator takes full charge of network

comunication with external system without

reference to whether the external system is a

server or a client.

Whenever a replied message has arrived, the

message will be converted to an Invoke class

and will be shifted to the listener's replyData() .

IServerConnector IServerConnector is a server connector who

can connect to an external server system as a

client.

IServerConnector is extended from the

ICommunicator, thus, it also takes full charge

of network communication and delivers replied

message to listener's replyData().

Basic Components of Protocol You can construct any type of network

system, even how the system is

enormously scaled and complicated, by

just combinating the basic components.

All the system templates in this

framework are also being implemented by

extending and combination of the basic

components.

21

Page 22: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

1. Basic Components

• 네트워크통신을담당하는모듈

• OON 을구성하는기본구성요소

• 모든종료의네트워크시스템은이들 Basic

Components 의조합으로만들수있다.

22

Page 23: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

1. Basic Components

• Q. 혹시이렇게생각하셨나요?

• OON 을구현하여편리하게개발할수있으되,

• 특정프로토콜이나메시지구조가강제될것이다.

• A. 아닙니다.

• 프로토콜도템플릿화되어 있기에,

• 자신이원하는프로토콜을사용할수있습니다.

23

Page 24: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

1. Basic Components

• 기본제공되는 Protocol 리스트

• 고유프로토콜

• Web Socket Protocol

• Worker

• 자신만의 Protocol 을사용하여 OON 구성가능

• 제공되는가이드문서를보고

• 타깃프로토콜을따르는 Basic Components 를만든다.

24

Page 25: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

1. Basic Components

Worker Worker Worker

Task ½ N ~ ¾ N Task ¾ N ~ N

Web Browser

Worker

Task ¼ N ~ ½ NTask 0 ~ ¼ N

25

Page 26: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

2. System Templates - Cloud Service

Service

Serverextends WebServer

implements IProtocol

-session_map: HashMap<string, User>

+Server()

User extends HashMap<size_t, Client>

implements IProtocol

-server: Server

+constructor(Server)

Client

implements IProtocol

-user: User

+constructor(User, WebClientDriver)

Service

implements IProtocol

-client: Client

+constructor(Client, string)

-service: Service

-driver: WebClientDriver

#createService(string) -> Service

+replyData(Invoke)

+sendData(Invoke)

-path: string

+sendData(Invoke)

+repyData(Invoke)

-no: size_t

-account_map: HashMap<String, User>

#createUser() -> User

#addClient(WebClientDriver)

+sendData(Invoke)

+replyData(Invoke)

-session_id: string

-account_id: string

-authority: number

#createClient(WebClientDriver)

-> Client

+sendData(Invoke)

+replyData(Invoke)

+setAccount(string, number)

1

1

0

N

11

N1service::Server

Service-Server is very good for

development of cloud server. You can use

web or flex. I provide the libraries for

implementing the cloud in the client side.

The usage is very simple. In the class

Server, what you need to do is defining port

number and factory method

service::Client It deals the network communication with

client side. Just define the factory method

and network I/O chain.

service::User ServerUser does not have any network I/O

and its own special work something to do.

It's a container for groupping clients by their

ip and session id.

Thus, the service::User corresponds with a

User (Computer) and service::Client

corresponds with a Client (A browser

window)

service::Service Most of functinos are be done in here. This

Service is correspondent with a 'web browser

window'.

For a cloud server, there can be enormous

Service classes. Create Services for each

functions and Define the functions detail in

here

1

1

0

1

+destructor()

+destructor()

+destructor()

+close()

#changeService(string)

#changeService(Service)

26

Page 27: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

2. System Templates - Cloud Service

• 클라우드서버를만들수있는템플릿

• 각클래스를상속하여사용하면된다.

27

Page 28: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

2. System Templates - Cloud Service

• Server

• 문자그대로의서버

• 서버를열어클라이언트를받는다

• User

• 세션을관리하는객체

• 여럿의클라이언트를가짐

• 사용자: User

• 한사용자가킨브라우저들: Client(s)

28

Page 29: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

2. System Templates - Cloud Service

• Client

• 클라이언트(브라우저)와의통신을담당

• 하나의 Client는하나의 Service를가짐

• Service

• 유저(User)가브라우저(Client)를열면서

• 열은웹페이지 (다른서비스)

• 클라우드서비스에서목표했던

• 실질적인기능을수행함

Service A

Service B

29

Page 30: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

2. System Templates - Parallel

• 병렬처리시스템을만들수있는템플릿

ParallelSystemArray

ParallelSystem ParallelSystem ParallelSystem ParallelSytem

Task ¼ N ~ ½ N Task ½ N ~ ¾ N Task ¾ N ~ NTask 0 ~ ¼ N

ExternalSystemArray

ExternalSystem ExternalSystem ExternalSystem ExternalSystem

Task A Task B Task C Task D

External Systems, They're all exclusive Parallel Systems, They process all together

30

Page 31: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

2. System Templates - Parallel

ParallelSystem ParallelSystem ParallelSystem

ParallelSystemArray

Task ¼ N ~ ½ N Task ½ N ~ ¾ N Task ¾ N ~ NTask 0 ~ ¼ N

ParallelSystem ParallelSystem ParallelSystem

Task ½ N ~ ¾ N Task ¾ N ~ N

ParallelSystemArrayMediator

ParallelSystem

Task ¼ N ~ ½ NTask 0 ~ ¼ N

Parallel System Module

Parallel System Histories

InvokeHistory

extends Entity

-uid: number

+constructor()

-start_time_: Date

-end_time_: Date

-listener: string

+constructor(Invoke)

+construct(XML)

+complete()

+TAG() := "history"

+toXML() -> XML

+toInvoke() -> Invoke

PRInvokeHistory

extends InvokeHistory

-first: number

+constructor()

-last: number

+constructor(Invoke)

InvokeHistory is Designed to report a history log of an

Invoke message with elapsed time

consumed for handling the Invoke

message. The report is directed by a

mster from its slaves.

The reported elapsed time is used to

estimating performance of a slave

system.

PRInvokeHistory A reported InvokeHistory in

framework of a master of parallel

processing system. The master of a

parallel processing system estimates

performance index of a slave system

by those reports.

Master distributes quantity of

handing process of slave systems from

the estimated performance index

which is calculated from those reports.

1

1

0

N

AU

TO

_IN

CR

EM

EN

TS

ParallelSystemArray

extends ExternalSystemArray

-history_sequence_: number

+constructor()

+sendSegmentData(Invoke, number)

+sendPieceData

(Invoke, number, number)

#_Complete_history(InvokeHistory)

#_Normalize_performance()

ParallelSystem

extends ExternalSystem

+constructor(ParallelSystemArray)

-progress_list_, history_list_:

HashMap<number, InvokeHistory>

-performance: number

-_Send_piece_data

(Invoke, number, number)

#_Report_history(XML)

-enforced_: boolean

+destructor()

-_Reply_data(Invoke)

#_Send_back_history

(Invoke, InvokeHistory)

ParallelSystemArrayMediator

extends ParallelSystemArray

-mediator_: MediatorSystem

+using super::super

#createMediator() -> Mediator

#startMediator()

#_Complete_history(InvokeHistory)

11

N0

11

N0

ParallelSystem also can have Role

ExternalSystemRoleextends Entitiy

mplements IProtocol

+constructor(ExternalSystem)

+TAG() -> string := "role"

#system: ExternalSystem

+sendData(Invoke)

#name: string

+replyData(Invoke)

MediatorSystem

extends SlaveSystem

-system_array_: ExternalSystemArray

+constructor(ExternalSystemArray)

+replyData(Invoke)

+start()

-complete_history(number)

-_Reply_data(Invoke)

11

11

<<Mediator to real master>>ParallelSystem::replyData()

--->> ParallelSystemArrayMediator::replyData()

--->> Mediator::sendData()

+constructor

(PSystemArray, IClientDriver)

Derived Classes

ParallelSystemArrayMediator

ParallelServerArrayMediator

ParallelClientArrayMediator

ParallelServerClientArrayMediator

ParallelSystemArray

ParallelServerArray

ParallelClientArray

ParallelServerClientArray

ParallelSystem

IParallelServer

ParallelServer

31

Page 32: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

2. System Templates - Parallel

• 병렬처리프로세스명령이주어지면,

• Slave들의 Performance index 를측정한다.

• 이후, 위 index 에따라알맞은양의작업을분배

• Slave 가프로세스수행중 Drop 되면

• Master 는이를회수하여

• 다른 Slave 들에게프로세스를재분배

32

Page 33: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

2. System Templates - Distributed

• 분산처리시스템구축에쓰이는 Template.

• Parallel System Template 을상속하여제작됨

• 병렬처리작업또한수행가능하다.

• 트리구조의분산처리시스템또한제작가능

DistributedSystem Slave Slave

SlaveDistributedSystem

DistributedSystemArrayMediator

Slave

DistributedSystemArray

33

Page 34: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

2. System Templates - Distributed

• 분산처리프로세스명령어주어지면,

• The most idle Slave 에게명령을하달

• 프로세스수행후

• Slave 의 performance index 를측정

• Process 의 resource index 를측정

• Slave 가프로세스수행중 Drop 되면,

• Process 를회수후위작업을반복

34

Page 35: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

2. System Templates - Distributed

• 이것은 Hadoop 이아닙니다.

• 그냥 OON 을사용해서, 객체지향적인관점에서

• 분산처리시스템을만들고

• 평가모형을정립했을뿐

• 네트워크시스템이

• 복잡하던,

• 혹은거대하던

• That’s not a problem.

Distributed Processing System Module

System and related Classes Histories

DistributedSystemArray

extends ParallelSystemArray

-process_map: HashMap

<string, DistributedProcess>

+constructor()

#createProcess(XML) ->

DistributedProcess

+toXML() -> XML

DistributedSystem

extends ParallelSystem

+constructor(DistributedSystemArray)

DistributedProcess

extends Entity

-systemArray: DistributedSystemArray

+constructor(DistributedSystemArray)

-progress_list, history_list:

HashMap<number, DSInvokeHistory>

-resource: double

-name: string

+construct(XML)

+replyData(Invoke)

+sendData(Invoke)

+sendData(Invoke, double)

+TAG() -> string := "process"

+toXML() -> XML

#_Send_back_history

(Invoke, InvokeHistory)

+virtual replyData(Invoke)

#_Report_history(InvokeHistory)

11

N0

1

1

0

N

DSInvokeHistory

extends InvokeHistory

-system: DistributedSystem

+DSInvokeHistory(DistributedSystem)

-process: DistributedProcess

-weight: double

+DSInvokeHistory(

DistributedSystem,

DistributedProcess,

Invoke, double)

+construct(XML)

+toXML() -> XML

#_Complete_history(InvokeHistory)

+construct(XML)

#_Normalize_performance()

InvokeHistory

extends Entity

-uid: number

+constructor()

-start_time_: Date

-end_time_: Date

-listener: string

+constructor(Invoke)

+construct(XML)

+complete()

+TAG() := "history"

+toXML() -> XML

+toInvoke() -> Invoke

ExternalSystemRole

extends Entity

+constructor(ExternalSystem)

+TAG() -> string := "role"

#system: ExternalSystem

+sendData(Invoke)

#name: string

+replyData(Invoke)

11

N0

DistributedSystem also can have Role

M

0

N

0

M:N Relationship

Derived Classes

DistributedSystemArrayMediator

DistributedServerArrayMediator

DistributedClientArrayMediator

DistributedServerClientArrayMediator

DistributedSystemArray

DistributedServerArray

DisttributedClientArray

DistributedServerClientArray

DistributedSystem

IDistributedServer

DistributedServer

DSInvokeHistory A reported InvokeHistory in framework of a

master of parallel processing system. The

master of a parallel processing system

estimates performance index of a slave

system by those reports.

Master distributes quantity of handing

process of slave systems from the estimated

performance index which is calculated from

those reports.

+constructor

(DSystemArray, IClientDriver)

DistributedSystemArrayMediator

extends DistributedSystemArray

-mediator_: MediatorSystem

+using super::super

#createMediator() -> Mediator

#startMediator()

#_Complete_history(InvokeHistory)

MediatorSystem

extends SlaveSystem

-system_array_: ExternalSystemArray

+constructor(ExternalSystemArray)

+replyData(Invoke)

+start()

-complete_history(number)

-_Reply_data(Invoke)

11

11

<<Mediator to real master>>ParallelSystem::replyData()

--->> ParallelSystemArrayMediator::replyData()

--->> Mediator::sendData()

35

Page 36: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

3. Example

• 시연

• 3D Bin Packing

• Interaction

• Chatting

• Samchon Simulation

36

Page 37: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

Appendix

1. Documentation

2. New Features

37

Page 38: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

1. Documentation

• Architecture Designs

• C++

• TypeScript

• API Documents

• C++

• TypeScript

• Guide Documents

• C++

• TypeScript

38

Page 39: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

2. New Features

Language Specifics

• TypeScript 지원

• TypeScript-STL

• Flex is deprecated

• C++ 헤더온리화

• 별도컴파일불필요

공통사항

• Basic Components

• 다양한프로토콜을사용할수있게변경

• System Templates

• Distributed System 추가

• 성능평가모형개선

39

Page 40: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

2. New Features

Examples

• Chatting 추가

• Interaction Lv.2 추가

• 3D Bin Packing 추가

문서화

• 가이드문서제공

• GitHub Wiki

40

Page 41: Samchon Frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. OON •Samchon Framework 는, •Object Oriented Network; 객체지향네트워크 •네트워크시스템을객체지향적인관점에서,

Q&A

Samchon Framework v2

2016-11-11

41