Page History
Tip | ||
---|---|---|
| ||
웹프레임워크는 각기 다른 진영에서 상호 영향을 주며 발전을 해왔으며 사용방법의 차이일뿐, 모던한 웹 프레임워크는 거의 공통 요소를 가지고 있습니다.
어느것이 더 우월하고 그럴것없이 하나만 잘 사용하면 나머지도 자연스레 잘 활용할수 있게됩니다. 다만 데이터 분석을위해 파이썬의 이점이 있다고 하면 django를 선택한다던지, 요즘 대세인 Spark 스칼라의 언어의 이점을 활용한다면 PlayFramework를 선택한다던지 웹소켓 브라우져호환이 중요하고 트랜스포터가 가장 잘지원되는 socket.io사용을 위해서 node.js 를 선택한다던지 특수한 목적을 위해서 어떠한 웹 프레임워크가 장점이 있을수 있습니다. 특수목적이 없고 공통요소의 스펙이 유사한 상태에서 웹프레임워크를 변환할 이유는 없습니다. 모던웹 프레임웍의 개발방법을 포함하여 공통 스펙은 거의 동일하기때문에 익숙한것을 잘 활용하면 되며 특수한 목적이 필요할경우 다른 방식으로 개발을 할수 있게 마이크로 웹서비스의 관점에서 다양한 웹 프레임워크를 정리하였습니다이 곳은 컨플루언스 내의 문서 공간의 홈페이지 입니다. 문서 공간은 최신의 기술 문서를 보관하고 관리하는데 최적입니다. |
Children Display | ||
---|---|---|
|
Spring Boot
- 주언어 : Java
- Link : https://spring.io/projects/spring-boot
- WebSocket : org.springframework.web.socket
- MVC : thymeleaf 를 포함하여 여러가지 뷰템플릿 선택가능
Routee 정의 방법
Code Block | ||||
---|---|---|---|---|
| ||||
@Controller @RequestMapping(path="/") //이 클래스의 루트 Router를 설정한다. public class UserSearchAPI { } |
Get Method 코드 샘플
Code Block | ||||
---|---|---|---|---|
| ||||
@GetMapping(path="/usersearch") //이 멤버함수의 하위 주소를 설정한다. public @ResponseBody List<User> userSearch( @RequestParam String name, @RequestParam int pagenum, @RequestParam int pagesize ){ PageRequest pageReq = new PageRequest(pagenum, pagesize); Page<User> userPage =userPageRepo.findByNameContaining(name,pageReq); return userPage.getContent(); } |
PlayFrameWork
- 주언어:Java/Scala
- Link : https://www.playframework.com/
- Websocket: AkkaStream or Atmosphere
- MVC : Twirl 포함됨 ( ASP.NET Razor 에서 고안됨)
- 사용한 사례:상용 게임 로비 API 서비스에서 이것을 이용하여 개발함 PokerGame
Routee 정의 방법
Code Block | ||||
---|---|---|---|---|
| ||||
GET /rest/GameInfo GameInfo() |
Get Method 코드 샘플
Code Block | ||||
---|---|---|---|---|
| ||||
def GameInfo = Action { Ok( Json.toJson( "할롱") ) } |
서비스 실행코드
Code Block | ||||
---|---|---|---|---|
| ||||
play run "9000" |
Microsoft.Owin.Hosting(ASP.net)
- 주언어:C# , Open소스이지만, Micorosoft의 네임스페이스에 포함된것으로 보아 IIS와는 별개로 MS에서 밀어주는듯
- 변경사항 : Asp.net 에 표준으로 입성함 (IIS가 없어도 서비스가 가능함 )
- Link : http://owin.org/
- Wesocket:WesocketSharp,SuperWebSocket , SignalR
- MVC : ASP.net 에 IIS.Hosting을 밀어내고 이미 통합되었으며 ASP.net의 Razor를 포함하여 여러가지 선택가능
Routee 정의 방법
Code Block | ||||
---|---|---|---|---|
| ||||
Get["/GameInfo/{tid}", runAsync: true] = async (_, token) => ....... |
Get Method 코드 샘플
Code Block | ||||
---|---|---|---|---|
| ||||
public async Task<Response> GameInfo(int tourId){...} |
서비스 실행코드
Code Block | ||||
---|---|---|---|---|
| ||||
var host = new NancyHost(new Uri("http://localhost:9000"); //Host 여러가지 선택가능,Nancy는 한가지 호스팅 방법임(IIS 종속을 없애기위해 NancyHost를 선택함) host.start() |
Node.js
- 주언어:Javascript
- Link : https://nodejs.org/ko/
- Wesocket:Socket.io
- MVC : Express, Jade를 포함하여 여러가지 View엔진을 선택할수 있음
Routee 정의 방법
Code Block | ||||
---|---|---|---|---|
| ||||
app.use('/', routes); |
Get Method 코드 샘플
Code Block | ||||
---|---|---|---|---|
| ||||
router.get('/GameInfo', function(req, res, next) { res.send('respond with a resource'); }); |
서비스 실행코드
Code Block | ||||
---|---|---|---|---|
| ||||
server.listen(80, function () { console.log('Example app listening on port 80!'); }); |
이 문서 검색
Livesearch | ||
---|---|---|
|
인기있는 주제
Popular Labels | ||||
---|---|---|---|---|
|
특별 페이지
Content by Label | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
최근에 변경된 페이지
Recently Updated | ||||||||
---|---|---|---|---|---|---|---|---|
|