samchon frameworksamchon.org/portfolio/framework/ppt.pdf · 2018-03-07 · 1. oon •samchon...
Post on 03-Jun-2020
1 Views
Preview:
TRANSCRIPT
Samchon Framework
https://github.com/samchon/framework
https://github.com/samchon/typescript-stl
Index
Outline
• OON
• System Templates
• TypeScript-STL
Specification
• Basic Components
• System Templates
• Examples
Appendix
• Documents
• New Features
2
Outline
1. OON
2. System Templates
3. TypeScript-STL
3
1. OON
• Samchon Framework 는,
• Object Oriented Network; 객체지향네트워크
• 네트워크시스템을객체지향적인관점에서,
• S/W 오브젝트를다루듯이구축할수있다.
• 네트워크시스템의각노드는객체다.
4
1. OON
• 노드 = 오브젝트
• 노드간네트워크메시지전송
• = 오브젝트간에
• 함수 (메소드)를부르고
• 파라미터를전달함
Node
Object
+method1(number)+method2(string, numbe)
Equals
5
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
1. OON
• 구성하려는네트워크시스템이
• 얼마나복잡하던, 혹은얼마나거대하던
• 단순히객체지향적인관점에서바라보며
• 오브젝트에서오브젝트로
• 함수를부르고파라미터를전달하면됨
7
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
2. System Templates
• Samchon Framework 는
• 객체지향네트워크프레임워크
• Q. 객체지향?? 그럼모듈화도가능하지않을까?
• A. 가능하다. This is System Templates
9
2. System Templates
• 네트워크시스템구조를모듈화하여
• 재사용성, 이식성을극대화
• This is OON
• 삼촌프레임워크의궁극적인목표
10
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()
2. System Templates
- Do it yourself
• 여러분, 혹은여러분의회사가자주사용하는
• 특정네트워크시스템구조가존재한다면,
• 그또한, System Template 으로만들어
• 재사용성과이식성을극대화하십시오.
12
2. System Templates
- Share your template
• 그리고여러분이만든 System Template 을
• 오픈소스로공유하십시오.
• 많은개발자들이비즈니스로직, 그자체에
• 더더욱집중할수있을것입니다.
13
3. TypeScript-STL
• 두가지언어를지원
• C++
• TypeScript (JavaScript)
• Web-Browser
• NodeJS
14
3. TypeScript-STL
• C++ 의 Container 와 Algorithm 일체를
• TypeScript 로마이그레이션한
• Samchon Framework 의 Sub-Project
15
3. TypeScript-STL
• Linear
• Vector, List, Deque
• Associative
• TreeSet, TreeMultiSet
• TreeMap, TreeMultiMap
• HashSet, HashMultiSet
• HashMap, HashMultiMap
• Adaptor
• Queue, Stack, PriorityQueue
16
3. TypeScript-STL
• 이종의언어가 ~를공유하면통합에수월
• 자료구조
• 알고리즘
• 아키텍처 (디자인)
• 마이그레이션을할때도
• Ctrl+C & Ctrl+V
• 이후소소한편집만해주면됨
17
3. TypeScript-STL
- Strategy
• 빠른런칭
• TypeScript 와 HTML 로클라우드어플리케이션 (UI)
• TypeScript 와 NodeJS 로클라우드서버제작
• 퍼포먼스개선
• 무거운작업을 C++ 에분산하여처리
• 혹은클라우드서버를 C++ 로마이그레이션
18
3. TypeScript-STL
35%
34%
31%
Line of Codes
C++
TypeScript
T-STL
19
Specifications
1. Basic Components
2. System Templates
3. Examples
20
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
1. Basic Components
• 네트워크통신을담당하는모듈
• OON 을구성하는기본구성요소
• 모든종료의네트워크시스템은이들 Basic
Components 의조합으로만들수있다.
22
1. Basic Components
• Q. 혹시이렇게생각하셨나요?
• OON 을구현하여편리하게개발할수있으되,
• 특정프로토콜이나메시지구조가강제될것이다.
• A. 아닙니다.
• 프로토콜도템플릿화되어 있기에,
• 자신이원하는프로토콜을사용할수있습니다.
23
1. Basic Components
• 기본제공되는 Protocol 리스트
• 고유프로토콜
• Web Socket Protocol
• Worker
• 자신만의 Protocol 을사용하여 OON 구성가능
• 제공되는가이드문서를보고
• 타깃프로토콜을따르는 Basic Components 를만든다.
24
1. Basic Components
Worker Worker Worker
Task ½ N ~ ¾ N Task ¾ N ~ N
Web Browser
Worker
Task ¼ N ~ ½ NTask 0 ~ ¼ N
25
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
2. System Templates - Cloud Service
• 클라우드서버를만들수있는템플릿
• 각클래스를상속하여사용하면된다.
27
2. System Templates - Cloud Service
• Server
• 문자그대로의서버
• 서버를열어클라이언트를받는다
• User
• 세션을관리하는객체
• 여럿의클라이언트를가짐
• 사용자: User
• 한사용자가킨브라우저들: Client(s)
28
2. System Templates - Cloud Service
• Client
• 클라이언트(브라우저)와의통신을담당
• 하나의 Client는하나의 Service를가짐
• Service
• 유저(User)가브라우저(Client)를열면서
• 열은웹페이지 (다른서비스)
• 클라우드서비스에서목표했던
• 실질적인기능을수행함
Service A
Service B
29
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
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
2. System Templates - Parallel
• 병렬처리프로세스명령이주어지면,
• Slave들의 Performance index 를측정한다.
• 이후, 위 index 에따라알맞은양의작업을분배
• Slave 가프로세스수행중 Drop 되면
• Master 는이를회수하여
• 다른 Slave 들에게프로세스를재분배
32
2. System Templates - Distributed
• 분산처리시스템구축에쓰이는 Template.
• Parallel System Template 을상속하여제작됨
• 병렬처리작업또한수행가능하다.
• 트리구조의분산처리시스템또한제작가능
DistributedSystem Slave Slave
SlaveDistributedSystem
DistributedSystemArrayMediator
Slave
DistributedSystemArray
33
2. System Templates - Distributed
• 분산처리프로세스명령어주어지면,
• The most idle Slave 에게명령을하달
• 프로세스수행후
• Slave 의 performance index 를측정
• Process 의 resource index 를측정
• Slave 가프로세스수행중 Drop 되면,
• Process 를회수후위작업을반복
34
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
3. Example
• 시연
• 3D Bin Packing
• Interaction
• Chatting
• Samchon Simulation
36
Appendix
1. Documentation
2. New Features
37
1. Documentation
• Architecture Designs
• C++
• TypeScript
• API Documents
• C++
• TypeScript
• Guide Documents
• C++
• TypeScript
38
2. New Features
Language Specifics
• TypeScript 지원
• TypeScript-STL
• Flex is deprecated
• C++ 헤더온리화
• 별도컴파일불필요
공통사항
• Basic Components
• 다양한프로토콜을사용할수있게변경
• System Templates
• Distributed System 추가
• 성능평가모형개선
39
2. New Features
Examples
• Chatting 추가
• Interaction Lv.2 추가
• 3D Bin Packing 추가
문서화
• 가이드문서제공
• GitHub Wiki
40
Q&A
Samchon Framework v2
2016-11-11
41
top related