https://github.com/aspnet/Home/wiki/Roadmap



Beta 6 릴리즈  2015/07/27

Beta 7 릴리즈  2015/08/24

Beta 8 릴리즈  2015/09/21

RC     릴리즈  2015/11

1.0.0   릴리즈  2016년 Q1



Beta 6에서는 현지화, 서비스화, DNX에서 .NET Framewrk 4.6대응, HTTP.SYS 사용 및 SQL Server 분산 캐시 사용에 의한 고속화가 목표.

Beta 7에서는 클래스 플랫폼, .NET Core의 Mac, Linux에 대한 출시가 목표.

Beta 8에서는 기능 완성이 목표.

RC에서는 안정성 향상이 목표.

1.0.0 이후의 목표는 VB지원, SignalR 3, Web Pages 4.

저작자 표시
신고
by 흥배 2015.07.23 08:00

ASP.NET의 차기 버전에 관한 좋은 글을 보아서 번역해서 공유합니다~










저작자 표시
신고
by 흥배 2014.08.07 08:00

오픈소스인 Glimpse을 사용하면 ASP.NET MVC의 트레이스나 루트 정보를 쉽게 확인할 수 있다.

설치도 간단하다.

확장을 통해서 redis나 mongoDB 등의 다른 라이브러리의 상태도 확인해 볼 수 있다.

 

공식 사이트 http://getglimpse.com/

 

설치는 NuGet을 사용하여 설치할 수 있다.

 

예) 컨트롤러에 using System.Diagnostics을 추가하고 Index()에 Trace를 추가한다.

public ActionResult Index()

{

   ViewBag.Message = "Welcome to ASP.NET MVC!";

   Trace.Write("Glimpse Demo");

   Trace.TraceWarning("Glimpse Warning Demo");

   return View();

}

 

Ctrl+F5로 실행한다.

 

http://localhost:포트번호/Glimpse.axd에 이동한다.

 

Turn Glimpse On을 클릭한다(원래 페이지로 돌아간 후 오른쪽 하단에 있는 아이콘을 클릭한다(만약 표시되지 않으면 리로드한다).

아래와 같이 다양한 정보가 표시된다.

 

Trace를 클릭하면 소스에 기록한 트레이스가 출력된다.

 

 

web.config 설정을 통해 Azure에 설치된 앱을 원격으로 볼 수도 있다.

 

 

 

참고

http://getglimpse.com/

http://www.hanselman.com/blog/IfYoureNotUsingGlimpseWithASPNETForDebuggingAndProfilingYoureMissingOut.aspx

(일어) http://blogs.msdn.com/b/chack/archive/2013/05/21/glimpse-aspnet-diagnostics-framework.aspx

(일어) http://troushoo.blog.fc2.com/blog-entry-19.html

신고
by 흥배 2014.03.03 08:00

SignalR 이란?

  • 최신 ASP.NET에 추가된 라이브러리.

이것을 사용하면 리얼타임, 비동기, 쌍방향 통신(Push나 RPC) 기능을 Web 애플리케이션에 쉽게 사용할 수 있다.

  • NuGet을 통해서 입수할 수 있다. Open Source
  • 클라이언트/서버 간에 영속적 연결. 일반 웹은 비 영속적 연결
  • 트랜스포트를 자동으로 네고에이션.

웹 서버나 클라이언트에서 따라서 WebSocket, Server-Send Events, Forever Frames, Long Polling 사용

  • 하나의 서버 당 수천의 접속을 비동기로 처리한다.
  • 비슷한 기술로 Node.js가 있다.
  • ASP.NET 개발팀의 David Fowler, Damian Edwards가 개인 프로젝트로 시작했다가 정식으로 ASP.NET에 들어갔음.

 

 

Sample

  • ASP.NET SignalR Stock Ticker Sample

http://chackr.azurewebsites.net/SignalR.Sample/StockTicker.html

  • SignalR

ShootR https://github.com/NTaylorMullen/ShootR

 

RPC 통신

  • WebSocket, HTTP 위에서 동작하는 RPC(리모트 프로시져 콜)을 구현.
  • 클라이언트에서 서버에 만들어진 함수를 호출하는 느낌으로 서버측 API를 실행할 수 있다.
  • SignalR은 클라이너트에서 호출 가능한 함수 집합을 Hub라고 부른다.

클라이언트에서는 허브의 프록시 오브젝트를 만들어서 함수를 호출하는 형식이다.

  • 물론 함수의 반환 값도 얻을 수 있다. 다만 통신은 비동기 이므로 반환 값은 JQuery로 만들어진 Deferred 오브젝트를 사용하여 얻는다.

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

<script type="text/javascript">

   $(function() {

      var connection = $.hubConnection();

      var sample = connection.createHubProxy("sample");

   

      connection.start(function () {

        sample.invoke("Say", "Hello, world");

      });

   })

</script>

   

<script type="text/javascript">

    $(function() {

        var connection = $.hubConnection();

        var sample = connection.createHubProxy("sample");

   

        connection.start(function () {

            sample.invoke("Say", "Hello, world").done(function(result) {

                alert(result);

            });

        });

    })

</script>

 

]PersistentConnection Hub

  • PersistentConnection Hub 개의 API 있다.
  • PersistentConnection 이름대로 서버와 클라이언트 간의 '지속적인 접속' 제공하면서 클라이언트를 관리하는 기능을 가지고 있다. 통신 기능면에서는 하나의 메시지를 송수신하는 기능 밖에 없는 레벨 API 이다.
  • Hub PersistentConnection 위에 구현된 것으로 레벨 API이다.

클라이언트/서버 간의 함수 호출이라는 기본적인 기능을 제공한다. HubPiprline 이용하여 클라이언트 인증을 구현. 물론 자체 확장도 가능하다.

  • 보통 PersistentConnection 보다 Hub API 사용한다.
  • Hub RPC 사용하기 때문에 PersistentConnection 비교하면 리퀘스트 해석이나 리플렉션을 사용하기 때문에 오버헤드가 크다.
  • 성능을 원한다면 PersistentConnection, 빠른 개발을 원한다면 Hub 사용한다.
    Hub에 정의한 RPC는 비동기로 호출되므로 공유 리소스는 스레드 세이프 하지 않다

Hub

  • 구현

  • Hub 클래스에 구현되어 있는 프로퍼티
    • Context

현재 요청 정보를 유지

  •  
  • Groups

그룹을 관리하는 클래스

  •  
  • Clients

SignalR에서 관리하고 있는 모든 클라이언트를 뜻한다

  •  
  • Caller

리퀘스트를 요청한 클라이언트를 뜻한다.

 

서버와 클라이언트 접속 흐름

  • SignalR 클라이언트 관리

클라이언트 마다 유일한 커넥션 ID 발행 

  • 서버에 준비된 함수를 호출한다

클라이언트는 반환 값을 얻을 있다 

  • 클라이언트에 등록된 함수를 호출한다.

서버는 반환 값을 얻을 없다. 

  • 클라이언트를 그룹화 하여 관리

  • 그룹에 접속을 추가하는 것을 구현

  • 그룹에 함수 호출

 

다양한 클라이언트 지원

  • SignalR JavaScript 이외의 클라이언트에서도 사용할 있다.
  • Windows 8 RT, .NET Framework, iOS, Mac

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

class Program

{

    static void Main(string[] args)

    {

        Start();

    }

   

    private static async void Start()

    {

        var connection = new HubConnection("http://example.com/signalr");

        var sample = connection.CreateHubProxy("sample");

   

        await connection.Start();

   

        var result = await sample.Invoke<string>("Say", "Hello, world");

   

        Console.WriteLine(result);

    }

}

 

 

개발 환경

  • Visual Studio 사용한다.
  • Visual Studio 2012 IIS Express WebSocket 대응.
  • SignalR IIS 아닌 일반 .NET 애플리케이션에서 서버로 사용 가능.
  • 물론 무료용 Visual Studio에서도 개발할 있다.
  • Windows Azure Web 사이트에 배포 가능
  • WebSocket 사용하기 위해서는 Window Server 2012(Windows 8) 이상에서 지원하는 최신 IIS + .NET Framework 4.5 이상을 사용해야 한다.

 

Scale Out

  • 영속적인 연결을 인스턴스 마다 생성
    • 단순하게 수를 늘리는 것만으로 대응할 없다

  • 인스턴스간에 접속을 공유해야 한다
    • 메시징을 이용한다

  • SignalR Scale Out 하기 위한 방법으로 Redis, ServiceBus (Azure), SQL Server 사용한다.

모두 NuGet 통해 입수 있다.

 

Scale Out - Pub/Sub 메시징

  • Windows Azure 서비스 버스
    • 메시지 흐름

 

 

SignalR vs Node.js

  • 기능적으로 비슷하다.
  • Node.js JavaScript 사용하고, SignalR C# Visual Basic.NET 사용.
  • Windows 플랫폼 프로그래머, 한국의 게임 프로그래머에게는 SignalR 사용이 쉬움.
  • JavaScript 알고 있거나 혹은 앞으로 자주 사용한다면 Node.js 좋은 선택이 되지만 그렇지 않다면 (게임 프로그래머의 경우) C# Windows 플랫폼 사용이 훨씬 쉽기 때문에 SignalR 선택하는 것이 좋음.
  • Windows 라이센스 문제는 로직 부분에만 사용하면 문제가 안되고, 특히 클라우드 플랫폼을 사용한다면 크게 문제 되지 않음. Linux 그냥 사용할 있는 쉬운 OS 아님.
  • Node.js npm 통해 풍부한 외부 라이브러리를 사용할 있고, SignalR NuGet 통해 풍부한 외부 라이브러리를 사용할 있다.
  • SignalR Mono 사용하여 Linux에서 사용할 있다.

 

SignalR Node.js 비교표

 

SignalR async/await

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

[HubName("web")]

public class WebHub : Hub

{

    public string GetTitle(string url)

    {

        var client = new WebClient();

   

        var contents = client.DownloadString(url);

   

        var match = Regex.Match(contents, @"<title>(.*)<\/title>");

   

        return match.Success ? match.Groups[1].Value : "";

    }

}

   

   

[HubName("web")]

public class WebHub : Hub

{

    public async Task<string> GetTitle(string url)

    {

        var httpClient = new HttpClient();

   

        var contents = await httpClient.GetStringAsync(url);

   

        var match = Regex.Match(contents, @"<title>(.*)<\/title>");

   

        return match.Success ? match.Groups[1].Value : "";

    }

}

 

SignalR 장점

  • 간단한 클라이언트/서버 API
  • 비동기멀티 스레드로 동작
  • 최신최적의 통신 방법을 자동으로 선택
  • Scale Out 아주 쉬움
  • 클라이언트 그룹 관리 제공
  • 프로그래머는 로직 구현에만 집중할 있다

 

Signal 프로젝트 생성

기타

  • a.html 에서 연결을 b.html 이동하면 연결이 끊어진다.
    • SignalR 하나의 웹페이지에서 관련 작업을 해야 한다.
    • 다만 ASP.NET RAZOR 같은 것을 사용하면 하나의 html 페이지에서 복수의 html 페이지를 포함해서 파일에서 구현하는데 문제 없음

 

\

 

글은

http://www.atmarkit.co.jp/ait/articles/1303/19/news099.html 여기의 자료를 많이 참고했습니다.

 

 

참고

  • SignalR

https://github.com/SignalR/SignalR 
wiki https://github.com/SignalR/SignalR/wiki

  • MSDN

http://msdn.microsoft.com/ko-kr/library/jj943739(v=vs.111).aspx 
http://www.asp.net/signalr

  • Sample

https://github.com/SignalR/Samples

  • SignalR Online Counter Sample

http://www.codeproject.com/Articles/536514/SignalRplusOnlineplusCounterplusSample

  • SignalR - Simple Chat Application in C#

http://www.codeproject.com/Articles/524066/SignalR-Simple-Chat-Application-in-Csharp

  • ASP.NET SignalR 시작하기 (C#)

http://www.taeyo.pe.kr/Columns/View.aspx?SEQ=458&PSEQ=35

신고
by 흥배 2013.12.16 10:16
저작자 표시
신고
by 흥배 2013.12.06 08:00

닷넷 플랫폼에서 웹 프로그래밍을 하는 경우 대부분 ASP.NET Framework를 고르는 경우가 대부분이다. 요즘은 ASP.NET Form, MVC, Web API, SPA 등 너무 다양하게 있어서 좀 혼란스럽기도 gk다.

 

만약 작은 크기의 웹, 가볍게 시작하고 싶은 경우라면 Nancy 라는 오픈 소스 웹 프레임워크를 추천gks다.

 

NancyRuby Sinatra에서 아이디어를 얻어서 만든 것으로 Sinatra의 목적과 비슷하다. 참고로 Nancy는 실제 Sinatra씨의 딸의 이름이다.

 

Nancy 공식 사이트 http://nancyfx.org/#

 

NancyASP.NET 호스팅은 기본에 WCF, Self 호스팅 등도 지원한다.

 


프로젝트를 템플릿을 사용하여 만들기 위해 Nancy 템플릿을 받아서 설치한다




템플릿을 설치하면 아래와 같은 템플릿이 보인다


그런데 프로젝트를 만들면 이유를 잘 모르겠지만 Nancy 모듈이 제대로 등록이 안 되어 있다


그래서 NuGet에서 아래처럼 설치 되었다고 나온 것을 삭제하고 다시 설치한다




지금 만든 것은 Self 호스팀을 이용한 것으로 아래의 파일이 시작 진입점이다





저작자 표시
신고
by 흥배 2013.08.08 08:00
| 1 |

티스토리 툴바