Skip to content

NeoDEEX Overview

NeoDEEX는 .NET 환경에서 빠르고 손쉽게 어플리케이션을 개발할 수 있도록 해주는 어플리케이션 프레임워크(Application Framework) 입니다. NeoDEEX는 광범위한 시나리오의 Web App, Desktop App 개발을 지원하기 위해 구성 설정, 로깅, 데이터 액세스, 트랜잭션 관리, Web API 통신, WinForm 클라이언트 지원 등 다양한 기능을 제공합니다. NeoDEEX 를 통해 높은 생산성 하에 우수한 품질의 어플리케이션을 낮은 비용하에 구축이 가능합니다.

Why NeoDEEX?

NeoDEEX 는 범용 어플리케이션 프레임워크이지만 특히, 기업용 LOB(Line Of Business) 어플리케이션을 작성하는데 최적화 되어 있습니다. 소위 말하는 SI 프로젝트에서 개발자들은 일정 수준이상의 품질로 높은 성능을 발휘하는 어플리케이션을 높은 생산성하에 개발이 가능합니다.

High Productivity

NeoDEEX 의 설계 및 개발 중 가장 중요하게 고려된 것은 개발 생산성 향상 입니다. 한국의 SI 프로젝트 환경에서 가장 중요한 부분이 개발 생산성이기 때문입니다. 많은 SI 프로젝트들은 짧은 설계 기간과 부실한 설계 문서, 그리고 충분하지 못한 개발 기간으로 인해 개발에 많은 어려움을 겪습니다. 이러한 프로젝트들에서 정형적인 개발 패턴과 코딩 방식을 제공하는 NeoDEEX 는 개발 생산성 향상에 큰 도움을 줍니다. NeoDEEX 가 트랜잭션, 클라이언트/서버 통신, UI 화면 메뉴 제어 등을 처리해 주기 때문에 개발자들은 이러한 기술적인 사항들 대신 비즈니스 로직, SQL 문장 구사에 집중할 수 있습니다.

1
2
3
4
5
6
7
8
9
[FoxTransaction(FoxTransactionOption.Required)]
public int Insert(int pk, ...)
{
    var query = "INSERT INTO ...";
    var parameterss = this.DbAccess.CreateParamCollection();
    parameters.AddWithValue("id", pk);
    ...
    return this.DbAccess.ExecuteSqlNonQuery(query, parameters);
}

High Performance

NeoDEEX 에서 제공하는 라이브러리 코드들은 다수의 프로젝트의 경험으로부터 성능이 고려되어 작성되었습니다. 예를 들어, Web API 호출과 응답에 사용되는 JSON 직렬화에는 성능이 가장 우수한 System.Text.Json 네임스페이스의 직렬화 라이브러리를 사용합니다. 또한 모든 DTO 객체들에 대해 모두 커스텀 JsonConverter 를 사용하여 높은 성능하에서 JSON 직렬화를 수행합니다.

Web API 뿐만 아니라 어플리케이션 성능에 큰 영향을 주는 데이터 액세스와 트랜잭션 처리도 성능 저하를 막기위해 가장 권장되는 코딩 패턴이 사용되었습니다. 예를 들어, 선언적인 자동 트랜잭션(declarative automatic transaction) 처리는 특성을 사용하여 트랜잭션 사용 여부, 격리 수준 등을 지정합니다. 이러한 트랜잭션 자동 처리를 위해서 최소 오버헤드를 갖도록 호출 가로채기 기법을 적용하였고 클래스/메서드에 명시된 트랜잭션 속성들을 반복적으로 읽지 않도록 캐시가 적용되었습니다. NeoDEEX 의 트랜잭션 처리 오버헤드는 최대 2 마이크로초(2 μsec; 0.000002 sec)를 넘지 않습니다.

High Quality

어플리케이션 개발 팀원들은 다양한 기술 이해도, 경력, 코딩 실력을 가질 수 있습니다. 개발자들의 수준이 다르기 때문에 따라서 어플리케이션의 품질 역시 고르지 않을 수 있습니다. NeoDEEX 와 같은 개발 프레임워크를 사용하고 일련의 코딩 패턴을 따른다면 어플리케이션 품질 역시 고르게 나타날 수 있습니다.

이는 곧 NeoDEEX가 개발자의 수준을 (상향 혹은 하향) 평준화시키게 되고 이로써 일정 수준의 성능을 내게 된다는 말도 됩니다. 일반적으로 개발 프로젝트에서는 고급 개발자의 숫자가 절대적으로 부족하기 때문에 평균적인 코드 품질은 높지 않습니다. 하지만 NeoDEEX가 제공하는 개발 패턴(클래스 라이브러리, 코딩 패턴)을 적용함으로써 초급 개발자도 일정 수준의 품질을 가진 코드를 작성할 수 있게 됩니다. 비록 NeoDEEX가 고급 개발자의 코드를 하향 평준화 시킬 수 있지만 전체적으로 어플리케이션의 품질을 향상시키는 것입니다.

개발자들의 평균 코드 품질과 NeoDEEX의 코드 품질

Features

NeoDEEX 프레임워크의 핵심 모듈로서 다른 기능들에 대한 기반을 제공합니다. Configuration, Logging, 기본 예외 클래스 등의 기능들은 Data Access, Fox Query, Fox Biz/Data Service 등 모든 기능들에서 사용되는 기본 인프라를 제공합니다.

SQL Server, Oracle, PostgreSQL, MySQL 등 다양한 데이터베이스에 대한 단일 API를 제공합니다. Fox Data Access를 통해 수행되는 쿼리는 누가, 언제, 어떤 쿼리를 몇 밀리초 동안 수행했는지 기록으로 남기는 것도 가능합니다(Fox DbProfile).

Fox Query는 MyBatis와 유사한 SQL 매퍼 기능으로 외부 XML 파일(.foxml 파일)에 기록된 SQL 문장들을 수행할 수 있습니다. Fox Query는 C# 스크립트를 통해 동적 쿼리를 구성할 수 있으며, 쿼리 XML 파일의 변경 사항을 감지하고 SQL 문장을 다시 로드하기 때문에 어플리케이션의 중단 없이 쿼리 변경이 가능합니다.

Fox Transaction은 특성(attribute)을 사용하여 선언적인 트랜잭션 환경을 프레임워크 입니다. 개발자는 트랜잭션의 Commit/Rollback에 대해 고민할 필요 없이 손쉽게 트랜잭션 기반 비즈니르 로직을 작성할 수 있습니다. 특히, Fox Transaction은 COM+에 대한 매우 높은 호환성을 가지기 때문에 레거시 COM+ 기반 어플리케이션을 손쉽게 마이그레이션 할 수 있습니다.

  • Fox Biz/Data Service

Fox Biz Service는 비즈니스 로직 모듈을 작성하고 클라이언트가 Web API 호출을 통해 손쉽게 호출이 가능하도록 해주는 인프라를 제공합니다. 한편, Fox Data Service는 Fox Query를 사용하여 비즈니스 로직을 사용할 필요가 없는 데이터 액세스를 클라이언트가 호출할 수 있도록 해줍니다. Fox Bix/Data Service는 로깅, 성능 측정 등 다양한 진단 기능을 제공하기 때문에 높은 성능을 가진 서버/클라이언트 환경 구축을 간단하게 구현할 수 있습니다.

  • Fox UI Model

Fox UI Model은 클라이언트가 메뉴들을 관리하고 표시하며, 메뉴가 선택되었을 때 화면을 로드하고 표시할 수 있는 프레임워크를 제공합니다. Fox UI Model을 통해 간단하고 빠른 시간 내에 메뉴 환경을 구축하고 메뉴가 선택되었을 때 특정 화면을 불러오는 작업이 자동을 수행됩니다.

  • Fox WinForm

Fox WinForm은 Windows Form 환경에서 클라이언트 어플리케이션을 구축하는데 필요한 전반적인 인프라를 제공합니다. 비동기 호출과 더불어 진행 상황 표시를 자동으로 처리해 주거나, 전역 예외 처리 핸들러, 화면 간의 통신 등의 다양한 기능을 통해 풍부한 기능을 갖춘 클라이언트 어플리케이션 구축이 가능합니다.