31. 살짝 아쉬움
• 몇 가지 기능이 살짝 아쉬움
• 대표적으로 미디어 공유 기능
• 기존에는 링크에 의존
• 트위터도 GIF, MP4 공유가 되는 시대…
• “움짤(GIF) 기능 넣어도 돼요?”
• “네, 잉여짓 맘대로 해 보세요“
• 마침 교육기간이라 OK!
끼얏호
Reaction Guys
32. Chat Control
• 동적인 콘텐츠가 들어갈 부분.
• 여기만 바꾸면 되지 않을…까?
• C#
• RichTextBox의 마개조 커스터마이징 버전.
• 새 기능 추가가 어려움.
Chat Control
일단, 리서치
41. CEF* 라이브러리 비교 (for C#)
CefGlue1
• CEF1 기반
• 개발 정체
• 커뮤니티 작음
• 메모리릭 버그
• 크롬 구버전
CefGlue3
• CEF3 기반
• 개발 정체
• 커뮤니티 작음
CefSharp3
• CEF3 기반
• 개발 활발
• NuGet 지원
• 커뮤니티 활발
*Chromium Embedded Framework
CefSharp vs CefGlue
(Google Trends)
☺
44. CefSharp 특징
C#
CEF의 C# Wrapper
Nuget
PM> Install-Package CefSharp.WinForms
Nuget Package 지원
45. public class BoundObject
{
public string MyProperty { get; set; }
public void MyMethod()
{
// Do something.
}
}
browser.RegisterJsObject("bound", new BoundObject());
C#
bound.myProperty;
bound.myMethod();
JS
JS Binding
65. 페이지 이동 문제 해결책
• 선별된 링크만 허용
• A Tag의 MouseDown, Click 이벤트를 오버라이드
• 웹 링크일 경우, 외부 브라우저를 통해 실행
• 의도하지 않은 이동을 거부
• window.onDragOver, onDrop 이벤트를 오버라이드 해서 블럭
• BeforeUnload 이벤트를 적용.
CefSharp의 JSDialogHandler를 재 정의 해서 블럭
78. 아쉬운 점들
• 브라우저는 브라우저
• 일반 컨트롤이 아님.
• 링크 예외 처리 등… 깔끔하지 못한 부분이 있다.
• CefSharp의 완성도
• 윈도우 메시지를 전부 잘 처리해 주지 못 한다.
• C# Winform 하고 매끄럽게 연동되지 못 한다.
제일 아쉬웠던 부분
81. 웹으로 앱을 만들기?
• 찾아보니 역시 같은 생각을 한 사람들이 있다.
• Chromium + io.js(node.js) 를 이용해서 Hybrid app을 만들려는 시도가 있다.
NW.JS Electron
(Atom-Shell)
Brackets-Shell 이거다!
82. 셋 다 개념은 비슷.
File I/O
Local API
HTML
CSS
JavaScript
86. NW.JS vs Electron vs Brackets-shell
NW.JS
• (node-webkit)
• Intel 지원 ☺
• 멀티 플렛폼 ☺
• Chromium message
loop를 수정해서 연동 ☹
• index.html이 앱 메인 ☹
Electron
• (Atom-shell)
• Github 지원 ☺
• 멀티 플렛폼 ☺
• Atom을 만들기 위해 시작
• Chromium과 IPC 통신으로
연동 ☺
• main.js가 앱 메인 ☺
Brackets-shell
• Adobe 지원
• 멀티 플렛폼 ☺
• 오직 Brackets만을 위한 ☹
* https://github.com/nwjs/nw.js/wiki/How-node.js-is-integrated-with-chromium
* https://github.com/atom/electron/blob/master/docs/development/atom-shell-vs-node-webkit.md
* https://github.com/adobe/brackets-shell
☺
87. ..그런데 그러면 다 새로 짜는 게 아닌가요?
• 기존의 코드는 C# 이고…
• 저건 Node.js 인데?
88. • C#, Node.js 간 상호 호출 가능
• 멀티 플렛폼
EDGE.JS
* http://tjanczuk.github.io/edge
C# Node.js
93. • 단일 페이지 기반 앱 방식으로 웹 기술을 성공적으로 도입.
• CefSharp
• 웹앱 기반도 시도.
• Electron
• Edge.js
94. 장점
• Frontend 쪽 생산성을 높일 수 있다.
• HTML5, AngularJS, React, … 등 최신 웹 기술을 바로 도입 해 볼 수 있다.
• Electron
• 멀티 플렛폼
• Win API등을 몰라도 웹 기술 만으로 데스크톱 앱 작성 가능
• 기존 C# 코드의 재활용 가능
• 단일 페이지 방식을 써서 일반 컨트롤 처럼. ( CefSharp )
• 웹앱 기반에 Edge.js를 활용.
95. 단점
• 앞에서 소개한 것들이 만능은 아님
• 기존 코드를 많이 재사용 한다고는 하지만, 배울 것도…
• node.js
• 웹 개발 기술
96. 결론
• 기존 프로그램에도 충분히 웹 기술을 도입할 수 있습니다.
• 웹 기반 앱을 만들어 볼 수도 있고요.
• 웹을 한 번 써 보시는 것은 어떨까요?