KR101745808B1 - 서버측 로직의 모듈화를 위한 모듈 처리 방법 및 시스템 - Google Patents

서버측 로직의 모듈화를 위한 모듈 처리 방법 및 시스템 Download PDF

Info

Publication number
KR101745808B1
KR101745808B1 KR1020150191311A KR20150191311A KR101745808B1 KR 101745808 B1 KR101745808 B1 KR 101745808B1 KR 1020150191311 A KR1020150191311 A KR 1020150191311A KR 20150191311 A KR20150191311 A KR 20150191311A KR 101745808 B1 KR101745808 B1 KR 101745808B1
Authority
KR
South Korea
Prior art keywords
server
module
service
program
file
Prior art date
Application number
KR1020150191311A
Other languages
English (en)
Inventor
임철재
Original Assignee
엔에이치엔엔터테인먼트 주식회사
엔에이치엔스튜디오629 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엔에이치엔엔터테인먼트 주식회사, 엔에이치엔스튜디오629 주식회사 filed Critical 엔에이치엔엔터테인먼트 주식회사
Priority to KR1020150191311A priority Critical patent/KR101745808B1/ko
Priority to JP2016248575A priority patent/JP2017120637A/ja
Priority to US15/392,670 priority patent/US20170189805A1/en
Application granted granted Critical
Publication of KR101745808B1 publication Critical patent/KR101745808B1/ko

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/77Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • G06F9/4428
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1087Peer-to-peer [P2P] networks using cross-functional networking aspects
    • H04L67/1091Interfacing with client-server systems or between P2P systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services

Abstract

서버측 로직의 모듈화를 위한 모듈 처리 방법 및 시스템이 개시된다. 서버 개발의 분업화를 위해 서버 측 개발자와 클라이언트 측 개발자에 의해 각각 개발되는 서버측 모듈들을 서버가 관리 및 처리하여 클라이언트로 서비스를 제공할 수 있다.

Description

서버측 로직의 모듈화를 위한 모듈 처리 방법 및 시스템{METHOD AND SYSTEM FOR PROCESSING MODULE MODULIZATION OF SERVER-SIDE LOGIC}
아래의 설명은 서버측 로직의 모듈화를 위한 모듈 처리 방법 및 시스템에 관한 것이다.
최근의 종래기술에 따른 서버-클라이언트 환경에서는 대부분 서비스를 개발하는 주체와 서버를 운영하는 주체가 분리되어 있다. 예를 들어, 서비스를 제공하는 서버는 서버를 운영하는 주체에서 개발된 소스(프로그램 코드)를 통해 동작하며, 이러한 소스가 하나의 모듈 파일로 작성되어 있었다. 서버를 운영하는 주체의 서버 프로그램 개발자들은 서버를 위한 모듈들을 하나의 모듈 파일로 개발하고, 서비스를 개발하는 주체로서의 개발자들은 클라이언트에 설치되어 구동되는 클라이언트 프로그램을 개발하여 클라이언트들에게 배포한다. 이때, 클라이언트들은 클라이언트 프로그램을 이용하여 서버에 접속할 수 있고, 서버는 서버를 위해 개발된 모듈을 이용하여 접속한 클라이언트들에게 서비스를 제공할 수 있다.
도 1은 종래기술에 있어서 서버 모듈 파일의 예를 도시한 도면이다.
종래기술에서 서버(100)는 "서버 프로그램. exe"(110)와 같이 DB 접근 소스(111), 서비스 로직 소스(112), 접속 관리 소스(113) 및 외부 모듈 관리 소스(114)와 같은 프로그램 코드들이 포함된 하나의 파일을 통해 동작하였다. 다시 말해 종래기술의 서버(100)는 이러한 하나의 파일에 포함된 프로그램 코드의 제어에 따라 클라이언트 프로그램(121)이 설치 및 구동된 클라이언트(120)로 서비스를 제공한다. 여기서, DB 접근 소스(111)는 서비스와 관련된 데이터베이스에 데이터를 쓰거나 읽어오기 위한 처리 코드를 포함할 수 있고, 서비스 로직 소스(112)는 게임 로직과 같이 제공되어야 할 서비스 로직에 대한 처리 코드를 포함할 수 있다. 또한, 접속 관리 소스(113)는 클라이언트(120)의 접속을 관리하기 위한 처리 코드를 포함할 수 있고, 외부 모듈 관리 소스(114)는 다양한 외부 모듈들을 관리하기 위한 처리 코드를 포함할 수 있다.
서비스에 따라 다양한 외부 모듈들(일례로, DLL(Dynamic Linking Library) 파일)이 이용될 수 있으나, 이는 일반적인 기능들을 가져다 사용하기 위한 것일 뿐, 서비스의 제공을 위해 개발되어야 할 서버측 기능들은 하나의 모듈 파일로 제작되어 이용되고 있다.
이에, 개발되어야 할 모듈 파일이 포함하는 코드의 복잡도가 증가하고, 코드의 수정이 어려우며, 코드에 변화가 있을 때마다 모듈 파일을 모두 다시 빌드(build)해야 한다는 문제점이 있다.
뿐만 아니라, 모듈 파일에 서버측의 서비스 로직이 포함되기 때문에 서버 프로그램 개발자가 클라이언트 프로그램 개발자에 의해 제공될 서비스에 대한 지식을 충분히 익혀야 할 필요성이 증가한다는 문제점이 있다. 예를 들어, 카드 게임 서비스를 제공하는 경우, 서버를 운영하는 서버 프로그램 개발자 역시 해당 카드 게임 서비스의 룰을 파악하고 있어야 하며 카드 게임 서비스에 대한 서버측의 서비스 로직을 모듈 파일에 포함시켜서 개발해야 한다는 문제점이 있다.
서로 다른 개발자들이 동일한 오브젝트를 프로그램 상에서 각각 개발하는 경우, 동일한 오브젝트에 대한 개념의 이해가 서로 다를 수 밖에 없기 때문에 동일한 오브젝트가 다른 방식으로 개발되거나 또는 아예 다르게 동작하도록 개발될 수 있다. 따라서 동일한 서비스에 대한 서비스 개발자의 이해와 서버측 개발자의 이해가 서로 다른 경우가 많기 때문에 이러한 차이점을 조율하기 위한 시간과 비용이 많이 소모된다. 서로 동일한 기능(인증, 해킹 방지 로직 등)을 각각 개발함에 따라 비용이 추가되는 문제점도 발생하며, 서로 호환되지 않는 문제점도 발생한다.
도 2는 종래기술에 있어서 카드 게임에서의 카드를 서로 다른 방식으로 작성한 프로그램 코드의 예들을 나타내고 있다. 첫 번째 프로그램 코드(210)와 두 번째 프로그램 코드(220)는 모두 트럼프 카드 게임의 카드를 구현하기 위한 프로그램 코드를 나타내고 있다. 그러나, 첫 번째 프로그램 코드(210)에서 카드 넘버는 '1'부터 시작되지만, 두 번째 프로그램 코드(220)의 카드 넘버는 '0'으로부터 시작되기 때문에 두 개의 프로그램 코드들(210 및 220)은 서로 호환되지 않는다.
만약, 서버측 프로그램 코드와 클라이언트측 프로그램 코드가 도 2의 두 개의 프로그램 코드들(210 및 220)과 같이 서로 다르다면, 서버측과 클라이언트측이 관련된 데이터를 주고 받을 때, 1을 더하거나 빼줘야 하며, 이에 따라 프로그램 코드 상의 오류나 로직 오류가 발생할 가능성이 증가하게 된다는 문제점이 있다.
서버측 프로그램 코드들 중 서버측 서비스 로직과 같이 서비스에 밀접한 프로그램 코드의 개발을 클라이언트 프로그램 개발자에 의해 개발하도록 하여, 모듈화된 서버측 프로그램 코드들을 통해 서비스를 제공할 수 있는 서버의 모듈 처리 방법 및 시스템을 제공한다.
서버-클라이언트 환경에서 서비스를 제공하는 서버의 모듈 처리 방법에 있어서, 상기 서버에서 서버 프로그램 개발자에 의해 개발된 제1 서버 모듈 파일을 입력받아 저장 및 관리하는 단계; 상기 서버에서 클라이언트 프로그램 개발자에 의해 개발된 제2 서버 모듈 파일을 입력받아 저장 및 관리하는 단계; 및 상기 서버에서 상기 제1 서버 모듈 파일에 포함된 프로그램 코드를 이용하여 상기 서비스를 위한 서버 기능을 구동하되, 상기 서버 기능을 통해 접속하는 클라이언트에게 상기 서비스를 제공하기 위한 서비스 로직을 상기 제2 서버 모듈 파일에 포함된 프로그램 코드를 이용하여 처리하는 단계를 포함하는 것을 특징으로 하는 모듈 처리 방법을 제공한다.
일측에 따르면, 상기 제1 서버 모듈 파일은, 상기 서비스를 위해 구축된 데이터베이스로의 접근을 관리하기 위한 모듈 및 상기 클라이언트의 접속을 관리하기 위한 모듈을 포함하고, 상기 제2 서버 모듈 파일은, 상기 서버에서 상기 클라이언트로 상기 서비스를 제공하기 위한 서비스 로직을 처리하기 위해 상기 서버를 제어하기 위한 모듈을 포함하는 것을 특징으로 할 수 있다.
다른 측면에 따르면, 상기 서비스는 게임 서비스를 포함하고, 상기 서비스 로직은 상기 게임 서비스를 통해 제공되는 게임의 룰에 따라 상기 클라이언트에서 상기 게임이 진행되도록 제어하기 위한 로직으로 상기 제2 서버 모듈 파일에 포함된 프로그램 코드에 따라 상기 서버에 의해 제어되는 것을 특징으로 할 수 있다.
또 다른 측면에 따르면, 상기 서비스를 위해 객체 지향 프로그램밍(objective-oriented programming) 언어로 미리 생성된 기본 공통 오브젝트 모듈이 상기 서버 프로그램 개발자 및 상기 클라이언트 프로그램 개발자에게 각각 제공되고, 상기 제1 서버 모듈 파일 및 상기 제2 서버 모듈 파일은 상기 기본 공통 오브젝트 모듈에 대한 객체 상속(object inheritance)에 기반하여 개발된 프로그램 코드를 포함하는 것을 특징으로 할 수 있다.
또 다른 측면에 따르면, 상기 클라이언트는 상기 클라이언트 프로그램 개발자에 의해 생성된 클라이언트 프로그램이 설치 및 구동되는 전자 기기를 포함하고, 상기 클라이언트 프로그램의 제어에 따라 네트워크를 통해 상기 서버에 접속하는 것을 특징으로 할 수 있다.
또 다른 측면에 따르면, 상기 모듈 처리 방법은 상기 서버에서 상기 제1 서버 모듈 파일에 포함된 프로그램 코드 및 상기 제2 서버 모듈 파일에 포함된 프로그램 코드를 작성하는데 이용된 프로그래밍 언어간의 차이를 제거하기 위해 상기 제1 서버 모듈 파일에 포함된 프로그램 코드 또는 상기 제2 서버 모듈 파일에 포함된 프로그램 코드를 수정하는 단계를 더 포함하는 것을 특징으로 할 수 있다.
서버-클라이언트 환경에서 서비스를 제공하는 서버의 모듈 처리 시스템에 있어서, 컴퓨터에서 판독 가능한 명령을 실행하도록 구현되는 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 서버 프로그램 개발자에 의해 개발된 제1 서버 모듈 파일을 입력받아 저장 및 관리하도록 상기 서버를 제어하고, 클라이언트 프로그램 개발자에 의해 개발된 제2 서버 모듈 파일을 입력받아 저장 및 관리하도록 상기 서버를 제어하는 파일 관리 제어부; 및 상기 제1 서버 모듈 파일에 포함된 프로그램 코드를 이용하여 상기 서비스를 위한 서버 기능을 구동하되, 상기 서버 기능을 통해 접속하는 클라이언트에게 상기 서비스를 제공하기 위한 서비스 로직을 상기 제2 서버 모듈 파일에 포함된 프로그램 코드를 이용하여 처리하는 로직 처리부를 포함하는 것을 특징으로 하는 모듈 처리 시스템을 제공한다.
서버측 프로그램 코드들 중 서버측 서비스 로직과 같이 서비스에 밀접한 프로그램 코드의 개발을 클라이언트 프로그램 개발자에 의해 개발하도록 함으로써 서버에서 모듈화된 서버측 프로그램 코드들을 통해 서비스를 제공할 수 있다.
서버측 프로그램 코드들의 모듈화를 통해 서버측 프로그램 코드들에 대한 분업화가 가능해지고, 프로그램 코드의 복잡도를 줄일 수 있으며, 모듈의 교체를 용이하게 할 수 있다.
서버측 모듈을 서로 다른 서비스를 제공하는 서버들에서 공용하는 것이 가능해지고, 서버 개발 인원을 최소화할 수 있다.
서비스 개발자의 측면에서는 서버측 개발자들과의 커뮤니케이션 시간과 비용이 감소함에 따라 서비스 컨텐츠의 개발에만 집중할 수 있다.
도 1은 종래기술에 있어서 서버 모듈 파일의 예를 도시한 도면이다.
도 2는 종래기술에 있어서 카드 게임에서의 카드를 서로 다른 방식으로 작성한 프로그램 코드의 예들을 나타내고 있다.
도 3은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다.
도 4는 본 발명의 일실시예에 있어서, 전자 기기 및 서버의 내부 구성을 설명하기 위한 블록도이다.
도 5는 본 발명의 일실시예에 따른 서버의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 도면이다.
도 6은 본 발명의 일실시예에 따른 서버가 수행할 수 있는 모듈 처리 방법의 예를 도시한 흐름도이다.
도 7은 본 발명의 일실시예에 있어서, 서버측 모듈들의 예를 도시한 도면이다.
도 8은 본 발명의 일실시예에 있어서, 객체 상속을 설명하기 위한 도면이다.
이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.
도 3은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다. 도 3의 네트워크 환경은 복수의 전자 기기들(310, 320, 330, 340), 복수의 서버들(350, 360) 및 네트워크(370)를 포함하는 예를 나타내고 있다. 이러한 도 3은 발명의 설명을 위한 일례로 전자 기기의 수나 서버의 수가 도 3과 같이 한정되는 것은 아니다.
복수의 전자 기기들(310, 320, 330, 340)은 컴퓨터 장치로 구현되는 고정형 단말이거나 이동형 단말일 수 있다. 복수의 전자 기기들(310, 320, 330, 340)의 예를 들면, 스마트폰(smart phone), 휴대폰, 네비게이션, 컴퓨터, 노트북, 디지털방송용 단말, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 태블릿 PC 등이 있다. 일례로 전자 기기 1(310)은 무선 또는 유선 통신 방식을 이용하여 네트워크(370)를 통해 다른 전자 기기들(320, 330, 340) 및/또는 서버(350, 360)와 통신할 수 있다.
통신 방식은 제한되지 않으며, 네트워크(370)가 포함할 수 있는 통신망(일례로, 이동통신망, 유선 인터넷, 무선 인터넷, 방송망)을 활용하는 통신 방식뿐만 아니라 기기들간의 근거리 무선 통신 역시 포함될 수 있다. 예를 들어, 네트워크(170)는, PAN(personal area network), LAN(local area network), CAN(campus area network), MAN(metropolitan area network), WAN(wide area network), BBN(broadband network), 인터넷 등의 네트워크 중 하나 이상의 임의의 네트워크를 포함할 수 있다. 또한, 네트워크(370)는 버스 네트워크, 스타 네트워크, 링 네트워크, 메쉬 네트워크, 스타-버스 네트워크, 트리 또는 계층적(hierarchical) 네트워크 등을 포함하는 네트워크 토폴로지 중 임의의 하나 이상을 포함할 수 있으나, 이에 제한되지 않는다.
서버(350, 360) 각각은 복수의 전자 기기들(310, 320, 330, 340)과 네트워크(370)를 통해 통신하여 명령, 코드, 파일, 컨텐츠, 서비스 등을 제공하는 컴퓨터 장치 또는 복수의 컴퓨터 장치들로 구현될 수 있다.
일례로, 서버(360)는 네트워크(370)를 통해 접속한 전자 기기 1(310)로 어플리케이션의 설치를 위한 파일을 제공할 수 있다. 이 경우 전자 기기 1(310)은 서버(360)로부터 제공된 파일을 이용하여 어플리케이션을 설치할 수 있다. 또한 전자 기기 1(310)이 포함하는 운영체제(Operating System, OS) 및 적어도 하나의 프로그램(일례로 브라우저나 상기 설치된 어플리케이션)의 제어에 따라 서버(350)에 접속하여 서버(350)가 제공하는 서비스나 컨텐츠를 제공받을 수 있다. 예를 들어, 전자 기기 1(310)이 어플리케이션의 제어에 따라 네트워크(370)를 통해 서비스 요청 메시지를 서버(350)로 전송하면, 서버(350)는 서비스 요청 메시지에 대응하는 코드를 전자 기기 1(310)로 전송할 수 있고, 전자 기기 1(310)은 어플리케이션의 제어에 따라 코드에 따른 화면을 구성하여 표시함으로써 사용자에게 컨텐츠를 제공할 수 있다. 다른 예로, 서버(350)는 메시징 서비스를 위한 통신 세션을 설정하고, 설정된 통신 세션을 통해 복수의 전자 기기들(310, 320, 330, 340)간의 메시지 송수신을 라우팅할 수도 있다. 또 다른 예로, 서버(350)는 복수의 전자 기기들(310, 320, 330, 340)간의 영상 통화를 중계할 수도 있다. 또 다른 예로, 서버(350)는 복수의 전자 기기들(310, 320, 330, 340)로 게임 서비스를 제공할 수도 있다.
도 4는 본 발명의 일실시예에 있어서, 전자 기기 및 서버의 내부 구성을 설명하기 위한 블록도이다. 도 4에서는 하나의 전자 기기에 대한 예로서 전자 기기 1(310), 그리고 하나의 서버에 대한 예로서 서버(350)의 내부 구성을 설명한다. 다른 전자 기기들(320, 330, 340)이나 서버(360) 역시 동일한 또는 유사한 내부 구성을 가질 수 있다.
전자 기기 1(310)과 서버(350)는 메모리(411, 421), 프로세서(412, 422), 통신 모듈(413, 423) 그리고 입출력 인터페이스(414, 424)를 포함할 수 있다. 메모리(411, 421)는 컴퓨터에서 판독 가능한 기록 매체로서, RAM(random access memory), ROM(read only memory) 및 디스크 드라이브와 같은 비소멸성 대용량 기록장치(permanent mass storage device)를 포함할 수 있다. 또한, 메모리(411, 421)에는 운영체제와 적어도 하나의 프로그램 코드(일례로 전자 기기 1(310)에 설치되어 구동되는 브라우저나 영상 통화를 위한 어플리케이션 등을 위한 코드)가 저장될 수 있다. 이러한 소프트웨어 구성요소들은 드라이브 메커니즘(drive mechanism)을 이용하여 메모리(411, 421)와는 별도의 컴퓨터에서 판독 가능한 기록 매체로부터 로딩될 수 있다. 이러한 별도의 컴퓨터에서 판독 가능한 기록 매체는 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등의 컴퓨터에서 판독 가능한 기록 매체를 포함할 수 있다. 다른 실시예에서 소프트웨어 구성요소들은 컴퓨터에서 판독 가능한 기록 매체가 아닌 통신 모듈(413, 423)을 통해 메모리(411, 421)에 로딩될 수도 있다. 예를 들어, 적어도 하나의 프로그램은 개발자들 또는 어플리케이션의 설치 파일을 배포하는 파일 배포 시스템(일례로 상술한 서버(360))이 네트워크(370)를 통해 제공하는 파일들에 의해 설치되는 프로그램(일례로 상술한 어플리케이션)에 기반하여 메모리(411, 421)에 로딩될 수 있다.
프로세서(412, 422)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(411, 421) 또는 통신 모듈(413, 423)에 의해 프로세서(412, 422)로 제공될 수 있다. 예를 들어 프로세서(412, 422)는 메모리(411, 421)와 같은 기록 장치에 저장된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다.
통신 모듈(413, 423)은 네트워크(370)를 통해 전자 기기 1(310)과 서버(350)가 서로 통신하기 위한 기능을 제공할 수 있으며, 다른 전자 기기(일례로 전자 기기 2(320)) 또는 다른 서버(일례로 서버(360))와 통신하기 위한 기능을 제공할 수 있다. 일례로, 전자 기기 1(310)의 프로세서(412)가 메모리(411)와 같은 기록 장치에 저장된 프로그램 코드에 따라 생성한 요청(일례로 영상 통화 서비스를 위한 요청)이 통신 모듈(413)의 제어에 따라 네트워크(370)를 통해 서버(350)로 전달될 수 있다. 역으로, 서버(350)의 프로세서(422)의 제어에 따라 제공되는 제어 신호나 명령, 컨텐츠, 파일 등이 통신 모듈(423)과 네트워크(370)를 거쳐 전자 기기 1(310)의 통신 모듈(413)을 통해 전자 기기 1(310)로 수신될 수 있다. 예를 들어 통신 모듈(413)을 통해 수신된 서버(350)의 제어 신호나 명령 등은 프로세서(412)나 메모리(411)로 전달될 수 있고, 컨텐츠나 파일 등은 전자 기기 1(310)가 더 포함할 수 있는 저장 매체로 저장될 수 있다.
입출력 인터페이스(414, 424)는 입출력 장치(415)와의 인터페이스를 위한 수단일 수 있다. 예를 들어, 입력 장치는 키보드 또는 마우스 등의 장치를, 그리고 출력 장치는 어플리케이션의 통신 세션을 표시하기 위한 디스플레이와 같은 장치를 포함할 수 있다. 다른 예로 입출력 인터페이스(414)는 터치스크린과 같이 입력과 출력을 위한 기능이 하나로 통합된 장치와의 인터페이스를 위한 수단일 수도 있다. 보다 구체적인 예로, 전자 기기 1(310)의 프로세서(412)는 메모리(411)에 로딩된 컴퓨터 프로그램의 명령을 처리함에 있어서 서버(350)나 전자 기기 2(320)가 제공하는 데이터를 이용하여 구성되는 서비스 화면이나 컨텐츠가 입출력 인터페이스(414)를 통해 디스플레이에 표시될 수 있다.
또한, 다른 실시예들에서 전자 기기 1(310) 및 서버(350)는 도 4의 구성요소들보다 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 전자 기기 1(310)은 상술한 입출력 장치(415) 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), GPS(Global Positioning System) 모듈, 카메라, 각종 센서, 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다. 보다 구체적인 예로, 전자 기기 1(310)이 스마트폰인 경우, 일반적으로 스마트폰이 포함하고 있는 가속도 센서나 자이로 센서, 카메라, 각종 물리적인 버튼이나 터치패널을 이용한 버튼, 입출력 포트 등의 다양한 구성요소들이 전자 기기 1(310)에 더 포함되도록 구현될 수 있음을 알 수 있다.
본 실시예들에서 서버(350)는 네트워크(370)를 통해 접속한 통신 단말들(일례로, 전자 기기 1(310) 및 전자 기기 2(320))에게 서비스를 제공하는 시스템 장치일 수 있다.
도 5는 본 발명의 일실시예에 따른 서버의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 도면이고, 도 6은 본 발명의 일실시예에 따른 서버가 수행할 수 있는 모듈 처리 방법의 예를 도시한 흐름도이다.
서버(350)는 게임 서비스를 제공하는 게임 서버와 특정 서비스를 제공하는 시스템 장치일 수 있으며, 도 5에 도시된 바와 같이 서버(350)의 프로세서(422)는 구성요소들로서 파일 관리 제어부(510), 로직 처리부(520) 및 코드 수정부(530)를 포함할 수 있다. 이때, 코드 수정부(530)는 필요에 따라 선택적으로 프로세서(422)에 포함되어 이용될 수 있다. 이러한 프로세서(422) 및 프로세서(422)의 구성요소들은 도 6의 모듈 처리 방법이 포함하는 단계들(410 내지 460)을 수행하도록 서버(350)를 제어할 수 있다. 이때, 프로세서(422) 및 프로세서(422)의 구성요소들은 메모리(421)가 포함하는 운영체제의 코드와 적어도 하나의 프로그램 코드에 따른 명령(instruction)을 실행하도록 구현될 수 있다. 여기서, 프로세서(422)의 구성요소들은 프로세서(422)에 의해 수행되는 서로 다른 기능들(different functions)의 표현들일 수 있다. 예를 들어, 프로세서(422)가 상술한 명령에 따라 서비스 로직을 처리하기 위해 동작하는 기능적 표현으로서 로직 처리부(520)가 사용될 수 있다.
단계(610)에서 프로세서(422)는 모듈 처리 방법을 위한 프로그램의 파일에 저장된 프로그램 코드를 메모리(421)에 로딩할 수 있다. 예를 들어, 프로그램은 서비스의 제공을 위해 필요한 파일들을 관리하고, 해당 파일들에 포함된 프로그램 코드들을 또한 메모리(421)에 로딩하기 위해 서버(350)에 기설치된 프로그램일 수 있다. 서버(350)에 기설치된 프로그램이 실행되는 경우, 프로세서(422)는 프로그램의 파일로부터 프로그램 코드를 메모리(421)에 로딩할 수 있다.
단계(620)에서 파일 관리 제어부(510)는 서버 프로그램 개발자에 의해 개발된 제1 서버 모듈 파일을 입력받아 저장 및 관리하도록 서버(350)를 제어할 수 있다. 이때, 제1 서버 모듈 파일은, 서비스를 위해 구축된 데이터베이스로의 접근을 관리하기 위한 모듈 및 클라이언트의 접속을 관리하기 위한 모듈을 적어도 포함할 수 있다. 또한, 필요에 따라 외부 모듈을 관리하기 위한 모듈과 같이 추가적인 모듈을 더 포함할 수도 있다. 다시 말해, 서버 프로그램 개발자는 일반적인 서버측 기능들을 개발하여 제공할 수 있다.
단계(630)에서 파일 관리 제어부(510)는 클라이언트 프로그램 개발자에 의해 개발된 제2 서버 모듈 파일을 입력받아 저장 및 관리하도록 서버(350)를 제어할 수 있다. 제2 서버 모듈 파일은, 서버(350)에서 클라이언트로 서비스를 제공하기 위한 서비스 로직을 처리하기 위해 서버(350)를 제어하기 위한 모듈을 포함할 수 있다. 다시 말해, 서비스 로직과 같이 제공하고자 하는 서비스에 특정적인 기능들을 처리하기 위해 서버(350)를 제어하기 위한 프로그램 코드는 클라이언트 프로그램 개발자에 의해 개발되어 제공될 수 있다.
각각의 서버 모듈 파일의 개발을 위해 객체 지향 프로그램밍(objective-oriented programming) 언어로 미리 생성된 기본 공통 오브젝트 모듈이 서버 프로그램 개발자 및 클라이언트 프로그램 개발자에게 각각 제공될 수 있다. 이때, 제1 서버 모듈 파일 및 제2 서버 모듈 파일은 기본 공통 오브젝트 모듈에 대한 객체 상속(object inheritance)에 기반하여 개발된 프로그램 코드를 포함할 수 있다. 따라서 공통된 부분을 서버 프로그램 개발자 및 클라이언트 프로그램 개발자가 각각 따로 구현할 필요가 없어지며, 오해나 소통 오류를 원천적으로 차단할 수 있다. 또한, 공통된 부분의 구현이 없어지기 때문에 전체 코드량을 줄일 수 있다.
단계(640)에서 프로세서(422)는 제1 서버 모듈 파일에 포함된 프로그램 코드 및 제2 서버 모듈 파일에 포함된 프로그램 코드를 메모리(221)에 로딩할 수 있다.
단계(650)에서 코드 수정부(530)는 제1 서버 모듈 파일에 포함된 프로그램 코드 및 제2 서버 모듈 파일에 포함된 프로그램 코드를 작성하는데 이용된 프로그래밍 언어간의 차이를 제거하기 위해 제1 서버 모듈 파일에 포함된 프로그램 코드 또는 제2 서버 모듈 파일에 포함된 프로그램 코드를 수정할 수 있다. 제1 서버 모듈 파일에 포함된 프로그램 코드와 제2 서버 모듈 파일에 포함된 프로그램 코드는 서로 다른 프로그래밍 언어를 통해 작성될 수도 있다. 예를 들어, 제1 서버 모듈 파일에 포함된 프로그램 코드는 서버(350)의 성능을 위해 C++이나 C와 같은 프로그램밍 언어로 작성될 수 있으며, 제2 서버 모듈 파일에 포함된 프로그램 코드는 제작 편의를 위해 유니티(Unity)의 C#과 같은 프로그래밍 언어로 작성될 수 있다. 일례로, C#에서 사용되는 "List"와 C++에서 사용되는 "list"는 서로 다른 의미를 갖는다. 프로그래밍 언어에 따른 차이점의 예는 아래와 같다.
- List(C#) = vecter(C++)
- ArrayList(C#) = Array(C++)
- LinkedList(C#) = list(C++)
C#에서 사용되는 "List"는 C++에서 사용되는 "vecter"의 개념이고, C#에서 사용되는 "ArrayList"는 C++에서 사용되는 "Array"의 개념이며, C#에서 사용되는 "LinkedList"가 C++에서 사용되는 "list"의 개념이다. 이처럼 사용하는 프로그래밍 언어에 따라 서버와 클라이언트간에 주고 받는 데이터에 대해 오류가 발생할 여지가 존재한다. 따라서, 코드 수정부(530)는 서로 다른 프로그래밍 언어에 따라 나타나는 차이를 제거하기 위해 제1 서버 모듈 파일에 포함된 프로그램 코드 또는 제2 서버 모듈 파일에 포함된 프로그램 코드를 수정할 수 있다. 이러한 단계(650)는 필요에 따라 선택적으로 모듈 처리 방법에 포함될 수 있다.
단계(660)에서 로직 처리부(520)는 제1 서버 모듈 파일에 포함된 프로그램 코드를 이용하여 서비스를 위한 서버 기능을 구동하되, 서버 기능을 통해 접속하는 클라이언트에게 서비스를 제공하기 위한 서비스 로직을 제2 서버 모듈 파일에 포함된 프로그램 코드를 이용하여 처리할 수 있다. 예를 들어, 서비스는 게임 서비스를 포함할 수 있다. 이때, 서비스 로직은 게임 서비스를 통해 제공되는 게임의 룰에 따라 클라이언트에서 게임이 진행되도록 제어하기 위한 로직으로 제2 서버 모듈 파일에 포함된 프로그램 코드에 따라 서버(350)에 의해 제어될 수 있다.
클라이언트는 클라이언트 프로그램 개발자에 의해 생성된 클라이언트 프로그램이 설치 및 구동되는 전자 기기(일례로, 전자 기기 1(310))를 포함하고, 클라이언트 프로그램의 제어에 따라 네트워크를 통해 서버(350)에 접속할 수 있다.
도 7은 본 발명의 일실시예에 있어서, 서버측 모듈들의 예를 도시한 도면이다. 서버측(710)에는 서버 프로그램 개발자에 의해 DB 접근 관리 모듈(711) 및 외부 모듈 관리 모듈(712)과 같이 서버(350)의 일반적인 기능을 위한 모듈들이 개발되어 구현될 수 있다. 이러한 서버측(710)에는 클라이언트의 접근을 관리하기 위한 접근 관리 모듈 등이 더 포함될 수 있다.
이때, 종래기술에서는 하나의 모듈 파일에 구현되었던 서비스 로직이, 본 발명의 실시예들에서는 별도의 서비스 로직 모듈(721)로서 서비스 개발자측(720)에 의해 개발되어 서버측(710)에 포함될 수 있다. 이미 설명한 바와 같이 클라이언트 프로그램 개발자에 의해 개발된 제2 서버 모듈 파일을 통해 서비스 로직을 위한 프로그램 코드가 별도의 모듈로 수신될 수 있음을 설명한 바 있다. 클라이언트 모듈(722)은 클라이언트를 구현하는 전자 기기에 설치 및 구동되는 어플리케이션을 포함할 수 있다.
예를 들어, 전자 기기 1(110)에서 클라이언트 모듈(722)을 통해 서버(350)에 접속하면, 서버(350)는 서비스 로직 모듈(721)을 통해 전자 기기 1(110)로 서비스를 제공할 수 있다.
이때, DB 접근 관리 모듈(711)은 서비스의 제공에 필요한 데이터를 DB 게이트웨이 또는 DB(730)로 쓰거나 읽어드릴 수 있다. 외부 모듈 관리 모듈(712)은 외부 모듈들(740)을 관리하는데 이용될 수 있다. 서비스 로직 모듈(721) 역시 하나의 외부 모듈로서 외부 모듈 관리 모듈(712)에 의해 관리될 수도 있다.
도 8은 본 발명의 일실시예에 있어서, 객체 상속을 설명하기 위한 도면이다. 기본 공통 오브젝트 모듈(810)은 앞서 설명한 바와 같이 객체 지향 프로그램밍(objective-oriented programming) 언어로 미리 생성될 수 있다. 이러한 기본 공통 오브젝트 모듈은 서버 프로그램 개발자와 클라이언트 프로그램 개발자에게 각각 제공될 수 있으며, 서버 프로그램 개발자와 클라이언트 프로그램 개발자는 제공된 기본 공통 오브젝트 모듈에 대한 객체 상속에 기반하여 각각의 프로그램 코드를 개발할 수 있다.
서버측 모듈(820)에서 작성된 클래스들은 대부분 공통적으로 사용될 수 있으며, "RoomPlayer" 객체를 상속한 "Dealer" 객체와 같이 기본 공통 오브젝트 모듈(810)의 클래스를 상속할 수 있다.
이와 유사하게 클라이언트측 모듈(830) 역시 "BetMoney" 객체를 상속한 "Betting" 객체나 "RoomPlayer" 객체를 상속한 "GamePlayer" 객체와 같이 기본 공통 오브젝트 모듈(810)의 클래스를 상속할 수 있다.
다시 말해, 공통된 부분을 기본 공통 오브젝트 모듈(810)을 통해 제공하고, 필요한 객체를 상속하여 사용함으로써 서버 프로그램 개발자와 클라이언트 프로그램 개발자가 공통된 부분을 따로 구현할 필요가 없게 된다.
이처럼 본 발명의 실시예들에 따르면, 서버측 프로그램 코드들 중 서버측 서비스 로직과 같이 서비스에 밀접한 프로그램 코드의 개발을 클라이언트 프로그램 개발자에 의해 개발하도록 함으로써 서버에서 모듈화된 서버측 프로그램 코드들을 통해 서비스를 제공할 수 있다. 또한, 서버측 프로그램 코드들의 모듈화를 통해 서버측 프로그램 코드들에 대한 분업화가 가능해지고, 프로그램 코드의 복잡도를 줄일 수 있으며, 모듈의 교체를 용이하게 할 수 있다. 또한, 서버측 모듈을 서로 다른 서비스를 제공하는 서버들에서 공용하는 것이 가능해지고, 서버 개발 인원을 최소화할 수 있고, 서비스 개발자의 측면에서는 서버측 개발자들과의 커뮤니케이션 시간과 비용이 감소함에 따라 서비스 컨텐츠의 개발에만 집중할 수 있다.
이상에서 설명된 시스템 또는 장치는 하드웨어 구성요소, 소프트웨어 구성요소 또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (13)

  1. 서버-클라이언트 환경에서 서비스를 제공하는 서버의 모듈 처리 방법에 있어서,
    상기 서버가, 상기 서비스를 위한 서버 프로그램의 제1 모듈을 포함하는 제1 서버 모듈 파일을 입력받아 저장 및 관리하는 단계;
    상기 서버가, 상기 서비스를 위한 클라이언트 프로그램을 개발하는 개발자측으로부터, 상기 서비스를 위한 서버 프로그램의 제2 모듈을 포함하는 제2 서버 모듈 파일을 수신하여 저장 및 관리하는 단계; 및
    상기 서버가, 상기 제1 서버 모듈 파일에 포함된 서버 프로그램의 상기 제1 모듈을 이용하여 상기 서비스를 위한 서버 기능을 구동하고, 상기 클라이언트 프로그램이 설치 및 구동된 클라이언트 단말의 접속을 상기 서버 기능을 통해 관리하되, 상기 접속된 클라이언트 단말로 상기 서비스를 제공하기 위한 서비스 로직을, 상기 제2 서버 모듈 파일에 포함된 서버 프로그램의 상기 제2 모듈을 이용하여 처리하는 단계
    를 포함하는 것을 특징으로 하는 모듈 처리 방법.
  2. 제1항에 있어서,
    상기 제1 서버 모듈 파일은, 상기 서비스를 위해 구축된 데이터베이스로의 접근을 관리하기 위한 모듈 및 상기 클라이언트 단말의 접속을 관리하기 위한 모듈을 상기 제1 모듈로서 포함하고,
    상기 제2 서버 모듈 파일은, 상기 서버에서 상기 클라이언트 단말로 상기 서비스를 제공하기 위한 서비스 로직을 처리하기 위해 상기 서버를 제어하기 위한 상기 제2 모듈을 포함하는 것을 특징으로 하는 모듈 처리 방법.
  3. 제1항에 있어서,
    상기 서비스는 게임 서비스를 포함하고,
    상기 서비스 로직은 상기 게임 서비스를 통해 제공되는 게임의 룰에 따라 상기 클라이언트 단말에서 상기 게임이 진행되도록 제어하기 위한 상기 서버의 로직으로 상기 제2 서버 모듈 파일에 포함된 제2 모듈에 따라 상기 서버에 의해 처리되는 것을 특징으로 하는 모듈 처리 방법.
  4. 제1항에 있어서,
    상기 서비스를 위해 객체 지향 프로그램밍(objective-oriented programming) 언어로 미리 생성된 기본 공통 오브젝트 모듈이 상기 서버 프로그램의 개발자 및 상기 클라이언트 프로그램의 개발자에게 각각 제공되고,
    상기 제1 서버 모듈 파일 및 상기 제2 서버 모듈 파일은 상기 기본 공통 오브젝트 모듈에 대한 객체 상속(object inheritance)에 기반하여 개발된 프로그램 코드를 포함하는 것을 특징으로 하는 모듈 처리 방법.
  5. 제1항에 있어서,
    상기 클라이언트 단말은 상기 클라이언트 프로그램의 개발자에 의해 생성된 상기 클라이언트 프로그램이 설치 및 구동되는 전자 기기를 포함하고, 상기 클라이언트 프로그램의 제어에 따라 네트워크를 통해 상기 서버에 접속하는 것을 특징으로 하는 모듈 처리 방법.
  6. 제1항에 있어서,
    상기 제1 서버 모듈 파일 및 상기 제2 서버 모듈 파일을 저장한 후에, 상기 서버에서 상기 제1 서버 모듈 파일에 포함된 제1 모듈의 프로그램 코드 및 상기 제2 서버 모듈 파일에 포함된 제2 모듈의 프로그램 코드를 작성하는데 이용된 프로그래밍 언어간의 차이를 제거하기 위해 상기 제1 서버 모듈 파일에 포함된 제1 모듈의 프로그램 코드 또는 상기 제2 서버 모듈 파일에 포함된 제2 모듈의 프로그램 코드를 수정하는 단계
    를 더 포함하고,
    상기 처리하는 단계는,
    상기 수정된 제1 모듈을 이용하여 상기 서버 기능을 구동하거나 또는 상기 수정된 제2 모듈을 이용하여 상기 서비스 로직을 처리하는 것을 특징으로 하는 모듈 처리 방법.
  7. 제1항 내지 제6항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
  8. 서버-클라이언트 환경에서 서비스를 제공하는 서버의 모듈 처리 시스템에 있어서,
    컴퓨터에서 판독 가능한 명령을 실행하도록 구현되는 적어도 하나의 프로세서
    를 포함하고,
    상기 적어도 하나의 프로세서는,
    상기 서비스를 위한 서버 프로그램의 제1 모듈을 포함하는 제1 서버 모듈 파일을 입력받아 저장 및 관리하도록 상기 서버를 제어하고, 상기 서비스를 위한 클라이언트 프로그램을 개발하는 개발자측으로부터, 상기 서비스를 위한 서버 프로그램의 제2 모듈을 포함하는 제2 서버 모듈 파일을 수신하여 저장 및 관리하도록 상기 서버를 제어하는 파일 관리 제어부; 및
    상기 제1 서버 모듈 파일에 포함된 서버 프로그램의 상기 제1 모듈을 이용하여 상기 서비스를 위한 서버 기능을 구동하고, 상기 클라이언트 프로그램이 설치 및 구동된 클라이언트 단말의 접속을 상기 서버 기능을 통해 관리하되, 상기 접속된 클라이언트 단말로 상기 서비스를 제공하기 위한 서비스 로직을, 상기 제2 서버 모듈 파일에 포함된 서버 프로그램의 상기 제2 모듈을 이용하여 처리하는 로직 처리부
    를 포함하는 것을 특징으로 하는 모듈 처리 시스템.
  9. 제8항에 있어서,
    상기 제1 서버 모듈 파일은, 상기 서비스를 위해 구축된 데이터베이스로의 접근을 관리하기 위한 모듈 및 상기 클라이언트 단말의 접속을 관리하기 위한 모듈을 상기 제1 모듈로서 포함하고,
    상기 제2 서버 모듈 파일은, 상기 서버에서 상기 클라이언트 단말로 상기 서비스를 제공하기 위한 서비스 로직을 처리하기 위해 상기 서버를 제어하기 위한 상기 제2 모듈을 포함하는 것을 특징으로 하는 모듈 처리 시스템.
  10. 제8항에 있어서,
    상기 서비스는 게임 서비스를 포함하고,
    상기 서비스 로직은 상기 게임 서비스를 통해 제공되는 게임의 룰에 따라 상기 클라이언트 단말에서 상기 게임이 진행되도록 제어하기 위한 상기 서버의 로직으로 상기 제2 서버 모듈 파일에 포함된 제2 모듈에 따라 상기 서버에 의해 처리되는 것을 특징으로 하는 모듈 처리 시스템.
  11. 제8항에 있어서,
    상기 서비스를 위해 객체 지향 프로그램밍(objective-oriented programming) 언어로 미리 생성된 기본 공통 오브젝트 모듈이 상기 서버 프로그램의 개발자 및 상기 클라이언트 프로그램의 개발자에게 각각 제공되고,
    상기 제1 서버 모듈 파일 및 상기 제2 서버 모듈 파일은 상기 기본 공통 오브젝트 모듈에 대한 객체 상속(object inheritance)에 기반하여 개발된 프로그램 코드를 포함하는 것을 특징으로 하는 모듈 처리 시스템.
  12. 제8항에 있어서,
    상기 클라이언트 단말은 상기 클라이언트 프로그램의 개발자에 의해 생성된 상기 클라이언트 프로그램이 설치 및 구동되는 전자 기기를 포함하고, 상기 클라이언트 프로그램의 제어에 따라 네트워크를 통해 상기 서버에 접속하는 것을 특징으로 하는 모듈 처리 시스템.
  13. 제8항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 제1 서버 모듈 파일에 포함된 제1 모듈의 프로그램 코드 및 상기 제2 서버 모듈 파일에 포함된 제2 모듈의 프로그램 코드를 작성하는데 이용된 프로그래밍 언어간의 차이를 제거하기 위해 상기 제1 서버 모듈 파일에 포함된 제1 모듈의 프로그램 코드 또는 상기 제2 서버 모듈 파일에 포함된 제2 모듈의 프로그램 코드를 수정하는 코드 수정부
    를 더 포함하는 것을 특징으로 하는 모듈 처리 시스템.
KR1020150191311A 2015-12-31 2015-12-31 서버측 로직의 모듈화를 위한 모듈 처리 방법 및 시스템 KR101745808B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020150191311A KR101745808B1 (ko) 2015-12-31 2015-12-31 서버측 로직의 모듈화를 위한 모듈 처리 방법 및 시스템
JP2016248575A JP2017120637A (ja) 2015-12-31 2016-12-22 モジュール処理方法およびシステム、並びに記録媒体
US15/392,670 US20170189805A1 (en) 2015-12-31 2016-12-28 Method and system for processing module modulization of server-side logic

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150191311A KR101745808B1 (ko) 2015-12-31 2015-12-31 서버측 로직의 모듈화를 위한 모듈 처리 방법 및 시스템

Publications (1)

Publication Number Publication Date
KR101745808B1 true KR101745808B1 (ko) 2017-06-28

Family

ID=59235253

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150191311A KR101745808B1 (ko) 2015-12-31 2015-12-31 서버측 로직의 모듈화를 위한 모듈 처리 방법 및 시스템

Country Status (3)

Country Link
US (1) US20170189805A1 (ko)
JP (1) JP2017120637A (ko)
KR (1) KR101745808B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200023049A (ko) * 2018-08-24 2020-03-04 네이버 주식회사 딥러닝 생성모델과 다중모달 분포를 이용하여 멀티턴 대화 응답을 생성하는 방법 및 시스템
KR20210108770A (ko) * 2020-02-26 2021-09-03 주식회사 에스원 다중 커스텀 사이트 배포 방법 및 그 장치
CN113419710A (zh) * 2021-06-25 2021-09-21 北京悟空出行科技有限公司 小程序的开发方法、装置、电子设备和介质

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112433953A (zh) * 2020-12-11 2021-03-02 杭州电魂网络科技股份有限公司 基于网络游戏客户端的嵌入式自动化测试方法、装置、设备及介质
CN112579085A (zh) * 2020-12-23 2021-03-30 成都完美天智游科技有限公司 一种逻辑结构数据处理方法、装置及存储介质
CN113750526A (zh) * 2021-09-08 2021-12-07 网易(杭州)网络有限公司 游戏逻辑处理方法、装置以及电子设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000207213A (ja) * 1999-01-14 2000-07-28 Nec Corp 分散オブジェクト実行環境の生成装置
JP2003015870A (ja) * 2001-06-28 2003-01-17 Hitachi Software Eng Co Ltd Webアプリケーション開発方法および開発支援装置
US9104962B2 (en) * 2007-03-06 2015-08-11 Trion Worlds, Inc. Distributed network architecture for introducing dynamic content into a synthetic environment
KR101029425B1 (ko) * 2008-11-20 2011-04-14 엔에이치엔(주) 멀티 유저 네트워크 게임의 제작 시스템 및 방법
CN102257477B (zh) * 2009-09-17 2015-04-15 株式会社三菱东京Ufj银行 应用开发支援装置
US8839197B2 (en) * 2010-10-11 2014-09-16 International Business Machines Corporation Automated analysis of composite applications
WO2015011762A1 (ja) * 2013-07-22 2015-01-29 株式会社fuzz 画像生成システムおよび画像生成用プログラム
JP6360691B2 (ja) * 2014-03-07 2018-07-18 株式会社スクウェア・エニックス ゲームシステム、情報処理装置、制御方法、及び記録媒体

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200023049A (ko) * 2018-08-24 2020-03-04 네이버 주식회사 딥러닝 생성모델과 다중모달 분포를 이용하여 멀티턴 대화 응답을 생성하는 방법 및 시스템
KR102204979B1 (ko) 2018-08-24 2021-01-19 네이버 주식회사 딥러닝 생성모델과 다중모달 분포를 이용하여 멀티턴 대화 응답을 생성하는 방법 및 시스템
KR20210108770A (ko) * 2020-02-26 2021-09-03 주식회사 에스원 다중 커스텀 사이트 배포 방법 및 그 장치
KR102344770B1 (ko) 2020-02-26 2021-12-28 주식회사 에스원 다중 커스텀 사이트 배포 방법 및 그 장치
CN113419710A (zh) * 2021-06-25 2021-09-21 北京悟空出行科技有限公司 小程序的开发方法、装置、电子设备和介质
CN113419710B (zh) * 2021-06-25 2024-03-15 北京悟空出行科技有限公司 小程序的开发方法、装置、电子设备和介质

Also Published As

Publication number Publication date
US20170189805A1 (en) 2017-07-06
JP2017120637A (ja) 2017-07-06

Similar Documents

Publication Publication Date Title
KR101745808B1 (ko) 서버측 로직의 모듈화를 위한 모듈 처리 방법 및 시스템
US9307342B2 (en) Dynamic rendering for software applications
US11157270B2 (en) Multi-platform pattern-based user interfaces
JP7231681B2 (ja) パッケージファイルに対する機能拡張方法およびシステム
CN110199271A (zh) 现场可编程门阵列虚拟化
CN109843404B (zh) 共享用户活动信息的方法及系统
US20130167112A1 (en) Cross-platform virtual machine and method
JP7231347B2 (ja) イベント基盤パッケージモジュールの呼び出し方法およびシステム
CN117296038A (zh) 将软件库交叉发布到模块存储库
KR101814897B1 (ko) 파일 보호 방법 및 시스템
JP6228691B1 (ja) コンテナイメージ配信システム、コンテナイメージ配信方法及びプログラム
US10303462B2 (en) Windows support of a pluggable ecosystem for universal windows application stores
US20180088930A1 (en) Updating code within an application
JP2017220236A (ja) クライアント改ざん判断システムおよび方法
KR20180004065A (ko) 파일 보호 방법 및 시스템
KR101845155B1 (ko) 어플리케이션 패키지를 제공하는 방법 및 시스템, 그리고 어플리케이션을 실행하는 방법 및 시스템
US10603583B1 (en) Entity-component architecture with components having multiple configurations
US11748117B2 (en) Operating system partitioning of different users for single-user applications
KR20190009880A (ko) 이벤트 기반 패키지 모듈 호출 방법 및 시스템
KR101810321B1 (ko) 소셜 기반 디지털 컨텐츠를 제공하는 방법 및 시스템
US20240078101A1 (en) Automated application deployment
KR20230077152A (ko) 모듈화 방식의 게임 제작 방법 및 시스템
KR20180048518A (ko) 패키지 파일에 대한 기능 확장 방법 및 시스템
KR20190009878A (ko) 이벤트 기반 패키지 모듈 호출 방법 및 시스템
CN115934123A (zh) 一种客户端逻辑更新方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant