블로그 이미지
정홍주
Azure에 대한 내용뿐만 아니라 새로운 트렌드로 빅데이터, BI, SharePoint, 앱 등의 내용을 다룹니다.

calendar

    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 31    

Notice

2013.04.12 09:01 Microsft Azure

Windows Azure – Mobile Services (5)

HTML/JavaScript – 데이터, ID

 

Windows Azure의 모바일 서비스에 iOS, Android 에 대한 지원 외에 아래 그림과 같이HTML/JavaScript 에 해당하는 내용이 추가되어 있습니다.

 

HTML 응용 프로그램 만들기와 다운로드를 통해 localhost로 테스트할 수 있습니다.
 

 

다운로드하고 나서 압축을 풀고 파일을 한번 살펴보면 app.js 에서 jQuery로 많은 내용을 하고 있다는 것을 알 수 있습니다.

 

테스트를 위해 실행하는 방법은 Server 폴더로 이동하여 launch-windows 를 클릭하면 됩니다.

R 을 클릭하여 웹 서비스를 시작하여 테스트할 수 있습니다.

 

http://localhost:8000 으로 브라우저를 통해 테스트하시면 아래와 같은 화면을 확인 하실 수 있습니다. 다른 도메인으로 하려면 모바일 서비스의 구성에서 Cross-Origin Resource Sharing 에 추가할 수 있습니다.

 

정말 손쉽게 jQuery를 이용하여 백 엔드의 데이터 서비스를 처리하는 것을 확인 가능합니다. 또한 스케쥴러와 서버 로직 등에 대한 내용을 구성할 수 있습니다.

바로 이어서 인증에 대한 내용을 확인해보겠습니다. 인증에 대한 자세한 사항은 아래 링크를 확인하시면 자세한 정보를 확인 가능합니다.

http://www.windowsazure.com/en-us/develop/mobile/tutorials/get-started-with-users-html/?fb=ko-kr

 

위 링크 중에서 핵심은 아래 코드가 됩니다.

function logIn() {

        client.login("facebook").then(refreshAuthDisplay, function (error) {

            alert(error);

        });

    }

 

 

물론 미리 facebook 앱에서 등록하고 ID 부분에 ID 암호를 입력해두어야 합니다.

https://developers.facebook.com/apps/

 

최종 실행 결과를 확인해보겠습니다. Log In을 클릭하면 Facebook 관련 창이 뜨는 것을 확인할 수 있습니다.

신고
posted by 정홍주
2013.04.11 09:34 Microsft Azure

 

Windows Azure – Mobile Services (4)

 

Windows Azure Mobile Services가 많이 업데이트 되어 있습니다. 스케쥴러와 HTML에 대한 내용을 추가할 예정이며 본 글에서는 스케쥴러에 대한 내용을 다루도록 하겠습니다.

메뉴가 한글로 변경되고 업데이트되었지만 지난 글은 아래 링크를 통해 확인할 수 있습니다.

http://redju.tistory.com/tag/Mobile%20Services

 

스케쥴러는 로직을 주기적으로 실행되게 해주는 모바일 서비스의 기능입니다.

 

1.     모바일 서비스를 생성하고 나서 스케쥴러 메뉴에서 만들기 작업을 할 수 있습니다.

생성할 경우 이름만 입력하면 되고 수행되는 시간을 설정 가능합니다. 기본적으로 최소 시간은 15분 단위로 반복 작업이 실행되게 구성 가능합니다. 스케쥴러를 여러 개 추가도 가능하며 크기 조정 메뉴에서 예약으로 지정하면 가능 합니다  

 

2.     설정되어 구성되면 아래와 같이 마지막 실행 시간과 다음 실행 시간을 보여줍니다.

 

3.     반복적으로 수행될 작업에 대한 내용은 스케쥴러의 스크립트 메뉴를 통해서 가능합니다. 서버 로직을 구성하시면 됩니다. 데이터를 수집해서 모바일 서비스의 테이블에 추가하는 내용에 해당됩니다. 예를 들면 여러 데이터베이스에서 최신 정보를 뽑아 갱신 해준다거나 트위터 등의 데이터를 수집해서 15분 단위로 갱신해주는 경우로 들 수 있으며 갱신되고 나면 추가로 Push Notification을 보내게 설정할 수도 있습니다.

4.     여기서는 간략히 테이블에 샘플 데이터를 지속적으로 추가하는 내용으로 로직을 구성해보았습니다.

 

5.     작업이 주기적으로 실행되면 아래와 같이 잘 구성된 것을 확인할 수 있습니다.

 

6.     이상으로 간략히 Windows Azure의 모바일 서비스의 스케쥴러 기능에 대해 알아보았고 이를 통해 여러 장치(Windows 8, Windows Phone 8, iOS, Android, HTML )에서 손쉽게 반복적인 작업을 수행할 수 있다는 것을 확인할 수 있습니다.

 

 

 

신고
posted by 정홍주
2012.11.01 09:10 Microsft Azure

 

Mobile Services SDK for Windows Phone 8

 

Mobile Services SDK for Windows Phone 8 BUILD 를 통해 발표되었습니다.

아래 링크를 확인해보시기 바랍니다. 여러 관련 SDK가 나왔습니다.

http://blogs.msdn.com/b/writingdata_services/archive/2012/10/31/windows-phone-8-is-finally-here.aspx

 

물론 Azure 사이트에서도 아래 그림처럼 Windows Store, iOS 뿐만 아니라 Windows Phone 8 도 지원한다는 것을 확인 가능합니다.

 

 

신고
posted by 정홍주
2012.10.24 08:00 Microsft Azure

 

Windows Azure Mobile Services – Live ID Authentication

 

Push Notification 과 마찬가지로 Live ID 에 대한 인증도 저번주에 업데이트 되었습니다. Windows Store 개발자 계정이 있어야 되며 앞 글(http://redju.tistory.com/231 )에서 작업한 내용으로 응용 프로그램을 Windows Store에 연결을 통해 구성하고 Windows Azure Mobile Services 주소를 설정해야 합니다.

 

설정에 대한 내용은 앞 글(http://redju.tistory.com/231 )에서 응용 프로그램을 Windows Store에 연결을 통해 Live Connect 개발자 센터에서 생성된 정보를 이용하게 됩니다.

 

아래 그림과 같이 Live Connect 개발자 센터의 응용 프로그램으로 이동하여 설정 변경, API 설정을 클릭하면 리다이렉션 도메인에 값을 입력합니다.

그리고 Windows Azure Mobile Services로 이동하여 IDENTITY 메뉴에서 CLIENT ID 값을 입력하고 저장하면 됩니다. Push Notification을 설정했다면 CLIENT SECRET 값은 남아있습니다.

 

그 다음 부터 작업은 기존 업데이트와 동일하며 데이터 테이블에 PERMISSIONS를 설정하고 Client에서 로그인 인증을 진행하면 됩니다.

Mobile Services의 해당 테이블로 이동하여 PERMISSIONS 메뉴를 클릭 후 아래와 같이 권한을 설정합니다.


Windows 8 App을 시작하고 저장이나 새로고침을 해보면 아래와 같은 401 오류가 발생하는 것을 알 수 있습니다. 

Live SDK for Windows가 설치되어 있지 않다면 아래 URL을 통해 다운로드하여 설치합니다.

(http://msdn.microsoft.com/en-us/live/ff621310)

Windows 8 프로젝트의 솔루션 탐색기에서 참조 추가를 통해 Microsoft.Live.dll을 추가합니다.

C:\Program Files (x86)\Microsoft SDKs
\Live\v5.0\Metro XAML\References\CommonConfiguration\Neutral

 

개체 탐색기를 통해 Microsoft.Live.dll을 확인할 수 있습니다.

 

MainPage.xaml.cs 에 아래와 같은 using 구문을 추가합니다.

using Microsoft.Live;

using Windows.UI.Popups;

 

session 이라는 필드와 Authenticate 메서드를 MainPage 클래스에 아래와 같이 선언합니다.

private LiveConnectSession session;

 

 

private async System.Threading.Tasks.Task Authenticate()

{

LiveAuthClient liveIdClient = new LiveAuthClient("<<TODO Redirect URL here>>");

 

while (session == null)

{

if (liveIdClient.CanLogout)

liveIdClient.Logout();

 

 

      LiveLoginResult result = await liveIdClient.LoginAsync(new[] { "wl.basic" });

      if (result.Status == LiveConnectSessionStatus.Connected)

      {

          session = result.Session;

          LiveConnectClient client = new LiveConnectClient(result.Session);

          LiveOperationResult meResult = await client.GetAsync("me");

MobileServiceUser loginResult = await App.MobileService.LoginAsync(session.AuthenticationToken);

 

string title = string.Format("환영 {0} !", meResult.Result["first_name"]);

          var message = string.Format("로그인 ID - {0}", loginResult.UserId);

          var dialog = new MessageDialog(message, title);

                dialog.Commands.Add(new UICommand("OK"));

          await dialog.ShowAsync();

      }

      else

      {

          session = null;

          var dialog = new MessageDialog("로그인 필요");

          dialog.Commands.Add(new UICommand("OK"));

          await dialog.ShowAsync();

 

      }

 }

}

 

 

위 코드에서 <<TODO Redirect URL here>> Mobile Services site url을 입력합니다.

그리고 OnNavigtedTo 이벤트를 아래와 같이 수정합니다.

protected async override void OnNavigatedTo(NavigationEventArgs e)

        {

            await Authenticate();

            RefreshTodoItems();

        }

 

F5를 통해 App을 시작하면 아래와 같은 인증 창이 나타나는 것을 확인 가능합니다.

 

이상으로 저번주 업데이트로 Windows Store 개발자 계정을 통해 Live ID로 구성되는 것을 업데이트 했습니다.

 

 

신고
posted by 정홍주
2012.10.22 08:00 Microsft Azure

 

Windows Azure Mobile Services – Push Notification Update

 

저번 주 업데이트로 Push Notification을 구성하는 내용에 대한 부분도 변경되었습니다. 기존 처럼 작업하면 제대로 구성되지 않아 본글을 참조하시면 됩니다.

Windows Azure 뿐만 아니라 Windows Store 개발자 계정이 있어야 Push Notification을 구성해서 테스트 할 수 있습니다. Windows Azure Mobile Services Data 에 대한 내용은 변경이 없으므로 본 글은 Mobile Services를 구성한 후 진행하는 것으로 합니다.

 

Mobile Services를 통해 Push Notification 을 구성하기 위해서는 스토어 앱을 먼저 등록해야 합니다. Live Connect 개발자 센터(https://manage.dev.live.com/Applications/Index?d=1&wa=wsignin1.0) 사이트로 이동합니다. 해당 페이지에서 기존 업데이트에서는 응용 프로그램 만들기를 했지만 업데이트 이후로는 Windows Store 대시 보드 페이지 링크를 클릭하여 Windows Store 앱을 먼저 생성합니다. Windows Store 개발자 계정이 없다면 미리 등록해야 합니다.

 

Windows Store 개발자 계정이 있다면 대시 보드 메뉴를 클릭하여 왼쪽 앱 등록 메뉴를 클릭합니다.

 

앱 이름을 클릭하여 Mobile Services의 이름을 입력하고 앱 이름 예약을 클릭하고 저장을 클릭합니다.

 

Mobile Services Visual Studio 2012 프로젝트로 돌아와서 솔루션 탐색기의 프로젝트를 오른쪽 클릭하여 스토어 메뉴의 응용 프로그램을 저장소에 연결메뉴를 아래 그림처럼 클릭합니다.

 

응용 프로그램을 Windows 스토어에 연결에서는 위에서 앱을 생성한 계정으로 로그인합니다.

 

앱 이름 선택에서 위에서 생성한 앱 이름을 선택하고 다음을 클릭합니다.

  

결과를 확인하고 연결을 선택합니다.

 

위의 내용으로 프로젝트의 패키지 속성에 대한 이름과 게시자가 설정됩니다. 또한 Live Connect 개발자 센터의 응용 프로그램 정보가 아래와 같이 변경됩니다.

 

이제 설정되었으모로 Client Server 로직을 작성하면 됩니다. 이제부터는 기존 업데이트와 동일합니다. 먼저  Client 로직을 작성해봅니다.

App.xaml.cs 로 이동하여 아래처럼 Channel 클래스를 추가하고 Push Notification 을 구성하겠습니다.

 

public class Channel

    {

        public int Id { get; set; }

        public string Uri { get; set; }

    }

 

Push Notification을 위해 아래와 같은 using 구문을 추가합니다.

using Windows.Networking.PushNotifications;

 

onLaunched 메서드는 async로 아래와 같이 변경합니다.

protected async override void OnLaunched(LaunchActivatedEventArgs args)

 

Push Notification 을 구성하기 위해 아래와 같은 코드를 onLaunched 메서드의 맨 아래에 추가합니다.

var ch = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();

 

await MobileService.GetTable<Channel>().InsertAsync(new Channel() { Uri = ch.Uri });

 

Client 로직 구성은 끝났으며 앱이 구동될때 Mobile Services Channel 테이블에 Uri를 등록하게 됩니다.

 

Windows Azure Mobile Services로 이동하여 이미 생성한 Mobile Services 를 클릭하여 상단의 PUSH 메뉴를 클릭합니다. CLIENT SECRET PACKAGE SID Live Connect 사이트의 앱 이름을 클릭하여 설정 변경에서 API 설정을 클릭하면 결과를 확인할 수 있습니다. 값을 입력하고 저장을 클릭합니다.

 

Data 테이블에 값이 추가될 때 마다  Push Notification 을 전송하기 위해 Channel 테이블을 Mobile Services에 생성하도록 하겠습니다. DATA 메뉴를 클릭하고 하단의 CREATE 메뉴를 클릭합니다. 테이블 이름은 Channel로 지정합니다.

 

생성된 테이블은 아래와 같으며 컬럼이 id 만 생성되어 있는 것을 확인가능하며 코드와 Script를 통해 구성할 것입니다.

 

위 그림의 Script 메뉴를 클릭합니다. Script를 통해 추가적인 작업이 가능하며 여기서는 동일한  Uri 일 경우 Notification을 하지 않도록 스크립트를 아래와 같이 추가하고 Save 버튼을 클릭합니다.

 

스크립트의 실제 내용은 아래와 같습니다.

function insert(item, user, request) {

    var channelTable = tables.getTable('Channel');

    channelTable.where({ uri: item.Uri })

        .read({ success: insertChannelIfNotFound});    

 

    function insertChannelIfNotFound(existingChannels) {

        if(existingChannels.length > 0) {

                                          request.respond(200, existingChannels[0]);

        } else {

                                          request.execute();

        }

    }

}

 

마찬가지로 TodoItem 테이블을 클릭하여 마찬가지로 Script를 통해 Insert 동작에서 Channel 테이블에 등록된 Uri ToastNotification을 전송하는 스크립트를 작성합니다.

 

실제 스크립트는 아래와 같습니다.

function insert(item, user, request) {

    request.execute({

        success: function(){

                                          request.respond();

                                          sendNotifications(item);

        },

        error: function(err){

                                          request.respond(500, "Error");

        }

    });

}

 

function sendNotifications(item){              

    var channelTable = tables.getTable('Channel');

        channelTable.read({

            success: function(channels){

                channels.forEach(function(channel){

                    push.wns.sendToastText04(channel.Uri, {

                        text1: item.name,

                        text2: "text line 2",

                        text3:  "text line 3"

                    }, {

                        success: function(response){                                              

                            console.log(response);

                        },                                  

                        error: function(err){                                              

                            console.error(err);                      

                        }                    

                    });

                });

            }       

    });   

}

 

 

이제 Visual Studio 2012에서 로컬 컴퓨터로 실행하여 TodoItem에 값을 입력하면 ToastNotification이 발생됩니다.

 

 

이상으로 Push Notification의 업데이트 내용을 정리했습니다.

 

 

신고
posted by 정홍주
2012.10.18 08:00 Microsft Azure

 

Windows Azure Mobile Services – Facebook Authentication

 

Windows Lie ID 뿐 아니라 Twitter, Google, Facebook 에 대한 인증을 이번 업데이트에서 Windows Azure Mobile Services 에서 제공하고 있습니다.

간단하게 Facebook 인증을 통해 Windows Store App 을 이용하는 내용을 아래를 통해서 살펴보도록 하겠습니다.

먼저 아래와 같이 Mobile Services 를 생성합니다.
 

생성한 Mobile Services 를 클릭해보면 대시보드 페이지에서 Windows뿐만 아니라 iOS까지 추가되어 있는것을 살펴 볼 수 있습니다
 

Windows Store App을 순서대로 생성합니다.
 

 

프로젝트를 다운로드 하고 실행하여 프로젝트를 원하는 대로 수정하고 실행하여 결과를 아래와 같이 확인합니다.
 

https://developers.facebook.com/apps 사이트로 이동하여 새 앱 만들기를 클릭하여 아래와 같이 App Name을 입력합니다.
 

 

앱 정보 페이지에서 App ID App Secret 를 확인하고 Web Sites with Facebook Login 메뉴를 클릭하여 위에서 생성한 Windows Azure Mobile Services URL을 입력합니다.
 

Windows Azure Management Portal로 이동하여 위에서 Windows Azure Mobile Services를 클릭하고 IDENTITY 메뉴를 클릭합니다. 그리고 Facebook 앱 정보 페이지에서 App ID App Secret 를 각각 입력합니다.
 

DATA 메뉴를 클릭하여 todoitem PERMISSIONS 메뉴로 이동하여 아래 그림처럼 인증된 사용자만 액세스 하도록 수정합니다.
 

이제 Visual Studio 2010으로 이동하여 OnNavigatedTo 메뉴에서 아래와 소스 코드를 수정합니다.

protected async override void OnNavigatedTo(NavigationEventArgs e)

        {

 

            var user = await App.MobileService

                .LoginAsync(MobileServiceAuthenticationProvider.Facebook);

 

           

            RefreshTodoItems();

        }

 

이제 프로젝트를 실행하여 결과를 확인합니다. 아래처럼 Facebook 인증이 나타나는 것을 확인합니다.

 

로그인하면 Windows Azure Mobile Services의 이름에 대한 내용을 확인하고 로그인하여 데이터를 핸들링할 수 있습니다.

 

 

정말 간단하게 구성되는 것을 확인할 수 있습니다. 간략히 Windows Azure Mobile Services 에서의 Facebook 인증에 대한 내용을 알아보았습니다.

 

신고
posted by 정홍주
2012.10.17 08:51 Microsft Azure

 

Windows Azure Mobile Services Update -2012 10

 

Windows Azure Mobile Services가 다시 업데이트 되었습니다. 10 16일부로 업데이트되었네요. 자고 일어나면 새롭게 변경되어 정말 관심 기울이지 않으면 안되겠습니다.

 

Windows Azure Mobile Services의 메뉴가 모바일 아이콘이라 Windows 8 에만 국한되지 않을 것 다는 개인 의견을 말한 적이 있는데 iOS Facebook 인증까지 지원이 됩니다.

 

자세한 링크는 아래 부분을 참고하십시오.

http://weblogs.asp.net/scottgu/archive/2012/10/16/windows-azure-mobile-services-new-support-for-ios-apps-facebook-twitter-google-identity-emails-sms-blobs-service-bus-and-more.aspx

 

주요 내용은 아래와 같습니다.,

iOS support – enabling you to connect iPhone and iPad apps to Mobile Services

Facebook, Twitter, and Google authentication support with Mobile Services

Blob, Table, Queue, and Service Bus support from within your Mobile Service

Sending emails from your Mobile Service (in partnership with SendGrid)

Sending SMS messages from your Mobile Service (in partnership with Twilio)

Ability to deploy mobile services in the West US region

 

Facebook 에 대한 인증과 저장소는 바로 구성을 해서 요번 토요일 Azure Camp 에서 데모를 해야 하겠습니다.

신고
posted by 정홍주
2012.10.05 09:04 Microsft Azure

 

 

Windows Azure - Mobile Services (4)

 

포럼에 질문이 올라와서 Mobile Services 데이터 페이징에 대한 내용을 정리합니다. Windows 8 App을 개발하실때 참조하실수 있습니다.

관련 내용은 아래 링크의 NOTE 부분을 참고하시기 바랍니다.

http://www.windowsazure.com/en-us/develop/mobile/tutorials/add-paging-to-data-dotnet/

To prevent data overflow in mobile device clients, Mobile Services implements an automatic page limit, which defaults to a maximum of 50 items in a response. By specifying the page size, you can explicitly request up to 1,000 items in the response.

 

Windows Azure Mobile Services는 기본적으로 50건의 데이터를 가져오도록 되어 있습니다. Take 메서드를 쓰면 1,000개까지 지원이 가능하며 페이징으로 구현할수 있습니다.

 

Mobile Services의 경우 실제 데이터는 아래 그림처럼 50건 이상이 있습니다.

 

기본적인 아래 쿼리 구문으로 데이터를 조회하면 해당 데이터는 50건만 나타나게 됩니다.

private void RefreshTodoItems()

        {

            // This code refreshes the entries in the list view be querying the TodoItems table.

            // The query excludes completed TodoItems

            items = todoTable

                .Where(todoItem => todoItem.Complete == false)

                .ToCollectionView();

            ListItems.ItemsSource = items;

        }

 

페이징에 대한 내용은 SKIP, TAKE 메서드를 통해 구현이 가능합니다. 51 건 이후의 2 페이지를 검색해보겠습니다.

private void RefreshTodoItems()

        {

            // This code refreshes the entries in the list view be querying the TodoItems table.

            // The query excludes completed TodoItems

            items = todoTable

                .Where(todoItem => todoItem.Complete == false).Skip(50).Take(50)

                .ToCollectionView();

            ListItems.ItemsSource = items;

        } 

1,000 건을 들고와 보겠습니다. 잘 동작합니다.

items = todoTable

                .Where(todoItem => todoItem.Complete == false).Take(1000)

                .ToCollectionView();

            ListItems.ItemsSource = items;

10,000 건을 들고오면 아래와 같이 Exception이 발생하게 됩니다. 1,001 을 조회하려고 해도 마찬가지로 오류가 발생합니다.

items = todoTable

                .Where(todoItem => todoItem.Complete == false).Take(10000)

                .ToCollectionView();

            ListItems.ItemsSource = items;

 

한꺼번에 1,000건 이상의 데이터를 다 들고 와서 App에서 사용하려고 한다면 WebAPI, REST 서비스를 별도로 만들어야 할 것으로 보입니다.

간략하게 Windows Azure Mobile Services 에 대한 데이터 페이징을 알아보았습니다.

신고
posted by 정홍주
prev 1 next

티스토리 툴바