델파이/C++빌더 3tier 프레임워크 기반 업무 개발

Slides:



Advertisements
Similar presentations
Web Based Data Warehouse Query Tool 이화여자대학교 2002 년 컴퓨터학과 졸업프로젝트 14 조.
Advertisements

BUILDING A SMARTER PLANET 공모전 개요 참가 자격 국내외 대학생/대학원생 개인 또는 5인 이하 팀 (멘토 지도교수님 또는 조교님 포함) 공모 내용 똑똑한 지구 테마로 개발 제안서 제출 후 애플리케이션 작성 개발 환경 학생 PC 또는 IBM 클라우드.
㈜유니윌취업연수프로그램. 신성장동력훈련 4 회사소개 1 청년취업아카데미 2 SW 융합 채용연수 사업 3 취업현황 5 Contents.
프로젝트 구성. 프로젝트 델파이 프로그램의 기본 단위 즉, 델파이로 만드는 프로그램을 구성하 는 모든 파일들의 집합 구성파일 확인 –View 메뉴 -> Project Manager 메뉴 – 프로젝트 파일 (DPR 확장자 ) – 폼 관련 파일 (FRM 확장자 ) – 소스.
TE628 : Internet Server Context for Wireless. 2 Preliminary GSM ( Global System for Mobile Communications )  유럽의 주도하에 표준화된 디지털 셀룰러 이동 통신 시스템  음성통화를.
더존다스 경영전략과 비젼 1 ERP 개발부문
2 주 실습강의 학기, 소프트웨어 설계 및 실험 ( Ⅰ ). Artificial Intelligence Laboratory Preview  웹 2.0  RIA  웹과 실버라이트의 실행 구조  Silverlight with VS 2008  설치 프로그램.
시스템 개요 진화 과정 RIA & X-Internet Web Client/Server Main FRame
루틴스(EVA-EDMS)제품소개서 EVA(Enterprise Value Approach_기업자산 가치로서의 접근)
프랜차이즈 본사 인트라넷 구축 제안서 제출처 : ㈜마세다린 제출사 : ㈜데이타캠프 제출일 :
기술 표준 6대 필수 기술 요소에 대해 지정한 그룹 IT 기술 표준에 따라 DBMS는 MS SQL과 Oracle에 대해 검토 함 구분 OS DBMS WAS Web Sever 검토대상 종합의견 x86 기반 OS(64bit 권장) 성능, 안정성 및 HW의 확장성 향상으로.
제1장 C#의 기초 1.1 .NET Framwork 1.2 .NET Environment 1.3 C# 소개.
APPEON SOLUTION INTRODUCTION.
Web Service XML Security
사업 목적 사업 개요 세부 내용 운영 시스템 사업 전망 추진 일정 수익 모델 옵션 사항 협력 회사 2p 3p 8p 14p 20p 23p 26p 27p 28p.
개발자에게 SharePoint Services 란 무엇인가?
웹사이트 구축 제안서 (결혼정보 사이트구축) First Web Agency.
노무관리 교육 10분만 시간 내십시오 복잡하게 보이는 노무관리 완벽하게 이해시켜 드립니다. 1.
Web Programming 강의 소개
INI STEEL 성과관리시스템 구축을 위한 SAP 제안설명회
알기 쉽게 해설한 Java 8th edition
소프트웨어 공학 Project - 어플리케이션 만들기 ( CS App. )
Operating Systems Overview
윤 홍 란 MFC 기초 윤 홍 란
팀 명: Con Spirito 팀 원: 경주리 김다정 김소담 최은미
델파이7 웹서비스 클라이언트 델파이7에서 C#으로 작성한 웹서비스 함수를 사용하기 위한 간략한 방법을 정리해 보았습니다.
1장 Visual Basic 2010 시작 1.1 프로그램에 대한 기초 1.2 Visual Basic 버전
최 연식 ( ) EDMS를 활용한 EKP 구축 전략 2002년 09월 04일 성우시스템 주식회사 김 정훈 ( ) 최 연식 ( )
Visual Studio 2008 버전별비교 및 제품개요
인스톨쉴드9 데브스튜디오 사용 매뉴얼 (VB6에서 개발후 배포프로그램 만들기)
2장. UML 기본 개념.
NTAS 소개 (Network Transaction Application Server)
(Network Transaction Application Server)
MFC UI for TS Analyzer 서울시립대학교 컴퓨터통계학과 최 용 진.
DataScience Lab. 박사과정 김희찬 (월)
ASP.NET Mobile Controls
Visual Basic 기초 1 목표: 컴퓨터기반제어에 관련된 학습을 하기 전에 Visual Basic의 기초를 살펴본다.
Power Java 제1장 자바 소개.
SOAP 클라이언트 개발 Guide
HUCHEMS e-Procurement System
전자상거래 구축을 위한 EC/EDI Solution 제안서.
DataScience Lab. 박사과정 김희찬 (월)
웹 다이어리 완료보고서 이상제 정영석.
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
3. Spring 프레임워크의 IoC 컨테이너 개념
10. 소프트웨어 아키텍처 뷰 설계 명지대학교 융합소프트웨어학부 김정호 교수.
My WebBook 1 조 이규태,고석현,이진학 손효일,최용호.
AIMS 2016 설비.물류 통합 모니터링 솔루션 Advanced Integrated Monitoring Solution
NTAS 소개 (Network Transaction Application Server)
myfood.com 상명대 맛집 홈페이지 구축 제안서
프로젝트 포트폴리오 요약 프로젝트 종류 프로젝트 이력 역할 주요 기술 : Windows System Application
Chapter 4 변수 및 바인딩.
오토베이스 웹 서버.
비주얼 프로그래밍(2분반) 강의노트 2분반 = 월/목.
컴퓨터공학실험 (I) 년 1학기 실험계획 -.
권효중 iBATIS.NET & Spring.NET 권효중
1. 복리후생비 복리후생비란? ✔ 법인이 임원 또는 사용인(파견근로자 포함)을 위하여 지출한 비용
ASP 기초개념 ASP란? ActiveX 서버 컴포넌트.
05 ASP.NET 2.0 페이지 및 응용 프로그램 구조 웹 폼(Web Form) 웹 폼 이벤트
4주 실습강의 학기, 소프트웨어 설계 및 실험(Ⅰ).
1장 Visual Basic 2010 시작 1.1 프로그램에 대한 기초 1.2 Visual Basic 버전
안드로이드 앱 분석 팀 기반의 설계 프로젝트 박민재
2010년 업무지원 시스템 사 업 설 명 회
AJAX Technology for Web2.0
K PaaS-TA 앱 개발.
2 비주얼 베이직 시작하기 천리 길도 한 걸음부터! 기초부터 다지자..
Presentation transcript:

델파이/C++빌더 3tier 프레임워크 기반 업무 개발 볼랜드포럼 / 박지훈 델파이/C++빌더 3tier 프레임워크 기반 업무 개발 Case Study: 3tier framework based business project with Delphi/C++Builder 볼랜드포럼 / 박지훈 imp@borlandforum.com

이 세션의 목적 업무 프로젝트에서의 표준화->프레임워크 Delphi/C++Builder vs. Java/.NET 경쟁 볼랜드포럼 / 박지훈 이 세션의 목적 업무 프로젝트에서의 표준화->프레임워크 왜 프레임워크화를 해야 하는가 Delphi/C++Builder vs. Java/.NET 경쟁 웹 개발 방식들과 경쟁하여 살아남으려면 어떻게 할까 Multi-tier 방식의 유용성과 구현 사례 어떤 경우에 Multi-tier가 유리하며 어떻게 구현할 것인가

볼랜드포럼 / 박지훈 업무 개발

업무 개발의 특성 - 1 일반적인 업무 프로젝트의 2대 이슈 화면 단위 개발 PM/PL의 역할 실무자의 요구 파악 볼랜드포럼 / 박지훈 업무 개발의 특성 - 1 일반적인 업무 프로젝트의 2대 이슈 실무자의 요구 파악 업무 배분 / 일정 준수 화면 단위 개발 화면들간의 연계성 적음 기술적 요구 스펙이 높지 않음 - 요구된 업무 로직 구현이 중요 계약직, 초급 위주로 개발하는 경우도 잦음 PM/PL의 역할 일정 관리, 작업 배분에 치중 기술적 이슈, 표준, 통일성의 문제에는 소홀하기 쉬움

업무 개발의 특성 - 2 업무 개발 프로젝트의 진행 경향 더 나은 방법은 없을까? 단위 화면들 사이에 중복 코드가 많아짐 볼랜드포럼 / 박지훈 업무 개발의 특성 - 2 업무 개발 프로젝트의 진행 경향 단위 화면들 사이에 중복 코드가 많아짐 담당 개발자들 각각의 구현 방법이 다양할 수 있음 로직, 컴포넌트 선택, UI 디자인 백엔드 데이터베이스 구조와의 연계 방법 => 예상치 못한 버그/오동작의 가능성이 높아짐 => 크로스 테스트/디버깅의 어려움 실제 난이도에 비해 인수/인계 부하 증가 요구가 변경되었을 때의 유연성이 낮음 더 나은 방법은 없을까?

표준화 이슈 표준 수립의 효과 표준화의 주요 대상 테크니컬 아키텍트의 필요성 볼랜드포럼 / 박지훈 표준화 이슈 표준 수립의 효과 공통 코드 제거/최소화 ⇒ 코딩 및 코드 관리 시간이 줄어듦 공통 기술적 이슈 통합 관리 ⇒ 개발자들이 각각 시간을 소모하지 않도록 크로스 테스트, 인수인계 용이 표준화의 주요 대상 공통 루틴 라이브러리, 허용 라이브러리/컴포넌트 Naming Convention Hungarian? Prefix? Underscore? Camel Case? Pascal Case? 공통 Data Access 방법 메인 App <-> 화면 사이의 interface 코딩 기법의 제어 - 델파이/C++의 과도한 자유도는 생산성 저하 요인 테크니컬 아키텍트의 필요성 트러블슈팅 + 표준화 마스터 – 개발 표준 수립/유지보수 + Framework 개발, 유지보수

개발 표준의 프레임워크화 공통 루틴 라이브러리의 한계 프레임워크화 개별 개발자들에게 사용을 강제하기 어렵다 볼랜드포럼 / 박지훈 개발 표준의 프레임워크화 공통 루틴 라이브러리의 한계 개별 개발자들에게 사용을 강제하기 어렵다 무분별한 공통 루틴 양산 - 관리의 어려움 프레임워크화 공통 화면 클래스(들) 화면 객체의 표준 모듈화 exe(X) dll? bpl? 공통 Data Access 방법 공통 Main App 인터페이스 방법 화면 프로젝트와 기본 멤버들의 자동 생성

볼랜드포럼 / 박지훈 경쟁

업무 개발 - 경쟁 1 업무 개발 분야에서 언어/개발툴 동향 업무 개발과 Web 볼랜드포럼 / 박지훈 업무 개발 - 경쟁 1 업무 개발 분야에서 언어/개발툴 동향 Java(J2EE) - 압도적 다수 .NET - 중/소규모 ASP.NET, 소수 (확산이 느림) Delphi/C++Builder - 특화 분야 프로젝트 실시간성이 필요한 프로젝트 - HTS 등 하드웨어 인터페이스가 중요한 프로젝트 - ITS 등 역동적인 UI가 필요한 프로젝트 업무 개발과 Web Java와 Web은 동반 성장해옴 Java가 환영 받는 이유? Java는 방법론/프레임워크 표준화와 함께 발전해옴 통상적 업무 개발에 적합 - 시스템 접근성을 거세 => 일정 예측성 => Java/.NET에서도 웹의 부족한 UI에 문제의식 대두

업무 개발 – 경쟁 2 X Internet, RIA X Internet vs. Native 볼랜드포럼 / 박지훈 업무 개발 – 경쟁 2 X Internet, RIA 웹 기반 업무 개발의 부족한 UI를 보충하는 역할 Backend는 기존의 웹 방법론을 그대로 유지 사용자들의 불만/요구로 최근 급속하게 도입 확산 MiPlatform, Curl, Flex, MS SmartClient, Silverlight X Internet vs. Native 풍부한 UI와 실시간성은 Native 개발의 절대 강점 UI vs. UI의 대결 - Native의 장점 부각 가능 사용자도 더 이상 “웹!”을 외치지 않는다 => Native 개발에 부족한 알파 Framework - 표준화 및 개발 생산성 Multi-tier - 서비스의 안정성, 확장성, 신뢰성

볼랜드포럼 / 박지훈 X Internet 사례 – 1. 로그인

볼랜드포럼 / 박지훈 X Internet 사례 – 2. 실행화면

볼랜드포럼 / 박지훈 X Internet 사례 – 3. 개발툴

볼랜드포럼 / 박지훈 X Internet 사례 – 4. 스크립트

볼랜드포럼 / 박지훈 프레임워크 구현

프레임워크 구현 - 1 커스텀 폼 class (vs. TForm / TFrame) 볼랜드포럼 / 박지훈 프레임워크 구현 - 1 커스텀 폼 class (vs. TForm / TFrame) 업무 프로젝트에 맞게 property, event 추가 및 제거 기술적 이슈 디자인타임 Object Inspector에 property가 나타나지 않음 커스텀 폼을 IDE에 등록하여 해결 RegisterCustomModule()

(계속) 커스텀 폼 클래스 구현 IDE에 커스텀 폼 클래스 등록 메인 App에서 클래스 등록 볼랜드포럼 / 박지훈 (계속) 커스텀 폼 클래스 구현 TBizForm = class(TCustomForm) protected (기존 동작 override) public (메소드 추가) published (property 추가) (event 추가) end; IDE에 커스텀 폼 클래스 등록 RegisterCustomModule(TBizForm, TCustomModule); 메인 App에서 클래스 등록 RegisterClass (TCF5211);

프레임워크 구현 - 2 화면 프로젝트 - 패키지(bpl) (dynamic loading) 볼랜드포럼 / 박지훈 프레임워크 구현 - 2 화면 프로젝트 - 패키지(bpl) (dynamic loading) 메인 App과의 인터페이스 자유로움 IDE 자체와도 자유롭게 연동 (디자인타임에도 동작) 디자인타임 컴포넌트화도 가능 bpl 로드 - LoadPackage(Path); 커스텀 폼을 로드할 경우 클래스 타입을 인식하지 못한다 (무슨 폼 클래스).Create ? 화면 bpl 쪽 - RegisterClass() 호출로 클래스 등록 메인 App 쪽 - FindClass()로 클래스를 얻은 후 폼 생성

(계속) 화면 bpl 쪽 메인 App 쪽 initialization RegisterClass(TCF5211); 볼랜드포럼 / 박지훈 (계속) 화면 bpl 쪽 initialization RegisterClass(TCF5211); finalization UnregisterClass(TCF5211); 메인 App 쪽 type TBizFrameClass = class of TBizFrame; var AIndex: integer; AForm: TBizForm; FrameClass: TBizFormClass; begin ... LoadPackage(PackagePath); FrameClass := TBizFormClass(FindClass('TCF5211')); AForm := TBizForm(FrameClass.Create(AOwner)); Aform.Show;

프레임워크 구현 - 3 폼/프로젝트 Wizard IDE에서 자동으로 업무용 커스텀 폼/프로젝트를 생성 볼랜드포럼 / 박지훈 프레임워크 구현 - 3 폼/프로젝트 Wizard IDE에서 자동으로 업무용 커스텀 폼/프로젝트를 생성 개발자가 중요하지 않은 문제에 집중하지 않도록 한다 공통 함수, 공통 추가 컴포넌트, 공통 property 값 등 Uses ToolsAPI Wizard/Creator 인터페이스 구현 클래스 작성 Wizard IOTAFormWizard, IOTAProjectWizard, IOTARepositoryWizard Creator IOTAProjectCreator, IOTAModuleCreator 화면 프로젝트 기본 설정들 미리 적용 lib dir, output dir, run param, version info ...

프레임워크 구현 - 4 Core 인터페이싱 데이터모듈 bpl (static loading) 볼랜드포럼 / 박지훈 프레임워크 구현 - 4 Core 인터페이싱 데이터모듈 bpl (static loading) 메인 App (exe) -> 화면 bpl 인터페이스는 용이 화면 bpl -> 메인 App (exe) 인터페이스는 곤란 메인 App의 기능들 중 화면 bpl과 인터페이스가 필요한 기능은 중앙 bpl로 분리 DB connection, Access control ... bpl 폼 로딩 및 관리 루틴

볼랜드포럼 / 박지훈 Multi-tier

Why Multi-tier? 소규모 환경에서의 성능은 이슈가 아님 멀티티어의 장점 멀티티어의 단점 볼랜드포럼 / 박지훈 Why Multi-tier? 소규모 환경에서의 성능은 이슈가 아님 적은 유저, 적은 부하 환경에서는 2티어가 성능상 유리 데이터는 티어 개수만큼의 경로를 거침 고려사항 - DB 서버 부하 vs. 각 티어 데이터 전달 단계 멀티티어의 장점 보안성 - DB 서버 직접 액세스 차단, 암호화/보안 기능 추가 가능 미들 서버의 존재 - DB 연결 풀링, 데이터 캐싱 확장성 - 다수의 DB 서버, 다수의 미들 서버 안정성/신뢰성 - Load Balancing, Fail Over 멀티티어의 단점 아키텍처가 복잡, 코드량 증가 디버깅 난점

Delphi Multi-tier 방법의 선택 - 1 볼랜드포럼 / 박지훈 Delphi Multi-tier 방법의 선택 - 1 DataSnap(MIDAS) 기본 내장 컴포넌트, 추가 비용 없음 Delphi7+ / C++Builder6+ 간편하고 가벼우며 구조 간단 복잡한 업무 구현에는 기능 부족 ECO 기본 내장 프레임워크(Delphi8+), 추가 비용 없음 코드기어의 주력 모델링 기반 개발 방법론 (MDA) 기존 델파이 개발 방식과 다른 방식 .NET 필수! No Win32! No C++Builder 2007부터 VCL.NET 지원 But, way to go. (다음 세미나엔…? ^^)

Delphi Multi-tier 방법의 선택 - 2 볼랜드포럼 / 박지훈 Delphi Multi-tier 방법의 선택 - 2 TP Monitor 등 상용 미들웨어 제품 고비용 - per 서버! 패키지 판매 제품이므로 지원 기능 스펙에 제한 다양한 서버쪽 추가 기능 구현 불가 Delphi 구현은 클라이언트에 국한 금융기관, 대형병원 등에서 사용 상용 Delphi 미들웨어 컴포넌트 라이브러리 저비용 (수백 달러) DataSnap보다 강력한 기능 / 높은 성능 광범위한 기능 추가 가능 kbmMW, RemObjects, RealThinClient, MidWare, ASTA ...

Why kbmMW? kbmMW의 장점 kbmMW의 단점 기존 델파이 방식과 유사 볼랜드포럼 / 박지훈 Why kbmMW? kbmMW의 장점 기존 델파이 방식과 유사 높은 성능 (kbmMemTable, 패킷 압축 등) 무료 버전 존재, 소스 제공 (상용) 다양한 외부 데이터 액세스 / 통신 / 암호화 컴포넌트 등을 지원 Java, C#, PHP와도 연동 가능 다양한 부가 기능 load balancing, file service, messaging 등 kbmMW의 단점 기능이 너무 다양 -> 제대로 쓰려면 공부할 게 엄청 늘어난다 소소한 버그가 약간 있다 데이터 페이징이 안된다

kbmMW 서버 메인 서버 메인은 일반 모듈 형식 TkbmMWServer 컴포넌트 볼랜드포럼 / 박지훈 kbmMW 서버 메인 서버 메인은 일반 모듈 형식 TkbmMWServer 컴포넌트 TkbmMWTCPIPIndyServerTransport 컴포넌트 클라이언트와의 패킷 전송 담당 TkbmMWADOXConnectionPool 컴포넌트 DB 커넥션 풀링

kbmMW 서비스 객체 서버측 단위 모듈 – 서비스 (개별 화면과 대응) 볼랜드포럼 / 박지훈 kbmMW 서비스 객체 서버측 단위 모듈 – 서비스 (개별 화면과 대응) TkbmMWCustomService 일반 클래스 유닛(pas), 서버측 함수 호출 컨테이너 클래스 TkbmMWQueryService 커스텀 모듈(dfm+pas), Query/StoredProc 컨테이너 모듈

서비스측 컴포넌트 Resolver TkbmMWServerQuery TkbmMWServerStoredProc 볼랜드포럼 / 박지훈 서비스측 컴포넌트 Resolver TkbmMWServerQuery TkbmMWServerStoredProc

클라이언트 화면 컴포넌트 TkbmMWClientQuery TkbmMWClientStoredProc 볼랜드포럼 / 박지훈 클라이언트 화면 컴포넌트 TkbmMWClientQuery TkbmMWClientStoredProc TkbmMWClientTransactionResolver

Troubleshooting bpl은 바이너리 의존성이 대단히 높다 dll과 달리 클래스 인터페이스이기 때문 볼랜드포럼 / 박지훈 Troubleshooting bpl은 바이너리 의존성이 대단히 높다 dll과 달리 클래스 인터페이스이기 때문 특히 Core 모듈 bpl interface 섹션 (not implementation) 주의! 전체 재컴파일을 해야 할 경우가 잦을 수 있음 => Core 모듈 클래스에 무분별한 추가/변경 금지

정리 프레임워크화 Multi-Tier 표준화의 연장선상에서 진행 가능 보다 효율적인 개발 진행 볼랜드포럼 / 박지훈 정리 프레임워크화 표준화의 연장선상에서 진행 가능 보다 효율적인 개발 진행 업계의 트렌드 (C/S 툴이라고???) Multi-Tier 보안성, 확장성, 안정성 Java 등과 경쟁하려면 프레임워크화와 병행하면 추가 부하는 크지 않다