KEMBAR78
Building a mobile application for dot netnuke | PPTX
BUILDING A MOBILE APPLICATION
FOR DOTNETNUKE
Bruce Chapman
Director, iFinity Software
7th November 2012



    DotNetNuke Corp. Confidential Š 2012 All rights reserved.
PRESENTATION AGENDA
• Brief Introduction to Mobile Applications + DotNetNuke
• Demonstrate how to build a Mobile Application that uses Service
  Layer of DotNetNuke to interact
   Âť   Understanding the Service Layer
   Âť   Authentication of Dnn Users
   Âť   Building Service Endpoints
• Example Application : “Dnn Dash” – allows access to the
  Dashboard of a DotNetNuke site
   Âť   Building Mobile Application




                            DotNetNuke Corp. Confidential Š 2011 All rights reserved.
                                                            2012                        2
MOBILE APPLICATIONS
• Purpose built (device specific) Mobile Applications are a superior
  way to deliver a mobile experience
• Html 5 can provide a rich experience, but cannot match purpose
  built at this point
• The theme of Mobile App vs Mobile Site is currently a hot topic
  of debate




                        DotNetNuke Corp. Confidential Š 2011 All rights reserved.
                                                        2012                        3
HTML 5 VS NATIVE APPS


  Html 5                                                    Native App


 • Write once – run anywhere               • App per platform
               Conclusion
 • Server-side code easily                 • May require lengthy
               •Choose according to requirements
   changed                                   release process
 • Sandboxed, •Services layer may be largely the same in either
               no access to                • Full access to device
   features   case                            features – camera, GPS
 • No App Store Presence                   • In-device discovery +
                                              purchase
 • Speed dependent on
   connection                              • Faster + more stable
 • Direct monetization more                                     • Monetization by app or in-
   difficult                                                      app purchase easy
                           DotNetNuke Corp. Confidential Š 2011 All rights reserved.           4
MOBILE APPLICATIONS AND DOTNETNUKE
• DotNetNuke 6.2 introduced the Services Layer, which
  exposes key DNN API features
• DotNetNuke 7.0 redefines the Services Layer, which is
  built on top of the WebAPI services
• DNN Services layer is easily extended for module
  specific purposes
• An entire new field of DotNetNuke application
  development has been created



                    DotNetNuke Corp. Confidential Š 2011 All rights reserved.
                                                    2012                        5
MOBILE APPLICATION TYPES
• Corporate development : customising apps for in-house
  use on mobile + tablet platforms
• Commercial development : new applications that
  provider web + mobile experience
• Open Source development : providing applications +
  back end processes




                   DotNetNuke Corp. Confidential Š 2011 All rights reserved.
                                                   2012                        6
A NATURAL FIT : MOBILE + CLOUD




                  DotNetNuke Corp. Confidential Š 2011 All rights reserved.
                                                  2012                        7
BUILDING A DOTNETNUKE MOBILE APPLICATION




                 DotNetNuke Corp. Confidential Š 2011 All rights reserved.
                                                 2012                        8
UNDERSTANDING THE SERVICE LAYER
• 6.2 – Used the MVC Service Layer
• 7.0 – Uses the Web API for the Services Layer
• Two aspects to layer:
   Âť   Built-in DNN API
   Âť   Extension for Third-party modules
• Provides authentication based on DotNetNuke user accounts and
  profiles
• Provides simple pattern to design service endpoints
• Flexibility in format (Json/Xml/others)




                            DotNetNuke Corp. Confidential Š 2011 All rights reserved.
                                                            2012                        9
EXTENDING THE SERVICE LAYER
• 2 Basic Components to API Extensions
   1.   Controller
        •   Definition of Methods and layer on top of business logic
        •   Inherits from DnnController


   2.   RouteMapper
        •   Defines what Urls map to which Controller methods
        •   Inherits from IServiceRouteMapper




                             DotNetNuke Corp. Confidential Š 2011 All rights reserved.
                                                             2012                        10
EXAMPLE SERVICE LAYER CALL




• Url to call:
http://example.com/DesktopModules/DnnDash/API/Dash/Ping

                     DotNetNuke Corp. Confidential Š 2011 All rights reserved.   11
DECONSTRUCTING SERVICES LAYER URL

http://example.com/DesktopModules/DnnDash/API/Dash/Ping
• http://example.com => domain name
•   /DesktopModules => fixed part of Url, denotes module Url
•   /DnnDash => specifies module
•   /API => fixed, denotes services layer
•   /Dash => specifies controller [ DashController ]
•   /Ping => method name [ Public string Ping() ]

• NOTE: /DesktopModules/DnnDash doesn’t
  necessarily have to exist

                        DotNetNuke Corp. Confidential Š 2011 All rights reserved.
                                                        2012                        12
ROUTEMAPPER REGISTERS URL ROUTES




• MapRoute configures what Urls will work:
    “DnnDash”  /DesktopModules/DnnDash
    “{controller}/{action}”  Class/Method
      • /API/Dash/Ping  DashController.Ping()


• No other configuration required
                         DotNetNuke Corp. Confidential Š 2011 All rights reserved.   13
SERVICES LAYER DEMONSTRATION




                 DotNetNuke Corp. Confidential Š 2011 All rights reserved.   14
SERVICES AUTHENTICATION
• Authentication:
   Âť   Identifying & Authorising User accounts
   Âť   Preventing Unauthorised Access
   Âť   Avoiding opening exploitable holes
   »   Providing ‘context’ for current user within service calls
• Web-browser based services call use cookie-based
  authentication (ie AJAX calls)
• Mobile devices use digest authentication to provide
  authentication
   Âť   Username/password pair provided with each call




                              DotNetNuke Corp. Confidential Š 2011 All rights reserved.
                                                              2012                        15
SERVICES AUTHENTICATION CONT.
• Services methods access level can be marked with:
   »   AllowAnonymous – no authentication
   »   RequiresHost – if true, must be SuperUser
   »   StaticRoles – named DotNetNuke roles
• All ‘regular’ DNN objects are available in context for service calls:
   Âť   Portal Settings (current portal, alias, settings)
   Âť   UserInfo (authenticated user)




                               DotNetNuke Corp. Confidential Š 2011 All rights reserved.
                                                               2012                        16
TIPS FOR WRITING SERVICES
• Use RESTful method / parameter naming principles
• Stick to common return format in project (Json/Xml/String –
  whatever)
• Plan for infrequent service calls in Application Design
• Be frugal with data going backwards and forwards – this may
  require custom serializing of objects




                       DotNetNuke Corp. Confidential Š 2011 All rights reserved.
                                                       2012                        17
INSTALLING SERVICES WITH YOUR MODULE

• A service-only module only has an Assembly
• Install with ordinary Module install package
• DotNetNuke manifest file used to specify
  configuration and safe uninstall




                    DotNetNuke Corp. Confidential Š 2011 All rights reserved.   18
WRITING A MOBILE APPLICATION - EXAMPLE
• ‘DnnDash’ application on Windows Phone
• Reads installed DotNetNuke dashboard components for display
  on mobile devices
• Uses DnnDash services layer to send back Xml of dashboard
  information
• Host-level access required to run
• DnnDash module/phone app available from dnndash.com
• http://dnndashservice.codeplex.com/ for source code




                      DotNetNuke Corp. Confidential Š 2011 All rights reserved.
                                                      2012                        19
ACCESSING SERVICES FROM WINDOWS PHONE
• Uses System.Net.HttpWebRequest
   Âť   Asynchronous method
   Âť   Check Http status code to monitor correct authentication (401 returned
       when not authenticated)
• Each call from the device provides user authentication
  username/password pair
• Uses Xml from Service call to create UI




                            DotNetNuke Corp. Confidential Š 2011 All rights reserved.
                                                            2012                        20
DNN DASH PHONE APP DEMO
• https://play.google.com/store/apps/details?id=com.rm.dnndash
  &feature=search_result
• Search ‘DnnDash’ on the Google store

• Windows Phone 7 version still in Approval, but should be on the
  Windows Store soon

• Connect to dnndash.com
• U : mobiledemo / P : dnn2012




                       DotNetNuke Corp. Confidential Š 2011 All rights reserved.
                                                       2012                        21
DNN DASH PHONE APP DEMO




               DotNetNuke Corp. Confidential Š 2011 All rights reserved.
                                               2012                        22
ANDROID VERSION SCREENSHOTS




                 DotNetNuke Corp. Confidential Š 2011 All rights reserved.   23
AUTHENTICATING PHONE USER

• Username/Password supplied with
  each call
• Defaults to Digest Authentication –
  Username/password not plaintext




                    DotNetNuke Corp. Confidential Š 2011 All rights reserved.   24
REQUESTING DATA FROM SERVICE
•   Mobile requests data using Asynchronous Web Request.
•   Response body is read from Response.GetResponseStream()
•   Once response is received, conversion to the response format
•   Example uses both Xml and Json responses




                         DotNetNuke Corp. Confidential Š 2011 All rights reserved.
                                                         2012                        25
POSTING DATA TO A SERVICE
•   Posting is much the same as retrieving data
•   Post generally means changing server state
•   Posts should be idempotent
•   Failure should allow for re-submit without losing client state




                          DotNetNuke Corp. Confidential Š 2011 All rights reserved.
                                                          2012                        26
CONSIDERATIONS FOR MOBILE APP DESIGN
• Store-posted apps can have lead-times for changes in design
• DotNetNuke modules can be changed + patched immediately
• Therefore, introduce flexibility into design that is data-driven,
  side-stepping requirements to re-release mobile clients




                         DotNetNuke Corp. Confidential Š 2011 All rights reserved.
                                                         2012                        27
CONCLUSIONS
• Mobile Internet usage will soon overtake fixed line internet, if it
  hasn’t already
• Hardware sales growth in mobile devices outstrips desktop
  computing
• DotNetNuke provides a perfect bridge between mobile devices
  and your data, especially if you want to put it in the cloud
• Building modules for the services layer is simple and fast
• Mobile Apps are the next big thing in DotNetNuke




                         DotNetNuke Corp. Confidential Š 2011 All rights reserved.
                                                         2012                        28
QUESTIONS
• Dnn Dash application source code available from
  http://dnndashservice.codeplex.com/
   Âť   Dnn Service Layer
   Âť   Dnn Dash Desktop App
   Âť   Dnn Dash Windows Phone App
   Âť   Android Phone App



• Slides available at http://www.slideshare.net/brchapman

• Follow me on twitter : @brucerchapman


                         DotNetNuke Corp. Confidential Š 2011 All rights reserved.
                                                         2012                        29

Building a mobile application for dot netnuke

  • 1.
    BUILDING A MOBILEAPPLICATION FOR DOTNETNUKE Bruce Chapman Director, iFinity Software 7th November 2012 DotNetNuke Corp. Confidential Š 2012 All rights reserved.
  • 2.
    PRESENTATION AGENDA • BriefIntroduction to Mobile Applications + DotNetNuke • Demonstrate how to build a Mobile Application that uses Service Layer of DotNetNuke to interact » Understanding the Service Layer » Authentication of Dnn Users » Building Service Endpoints • Example Application : “Dnn Dash” – allows access to the Dashboard of a DotNetNuke site » Building Mobile Application DotNetNuke Corp. Confidential © 2011 All rights reserved. 2012 2
  • 3.
    MOBILE APPLICATIONS • Purposebuilt (device specific) Mobile Applications are a superior way to deliver a mobile experience • Html 5 can provide a rich experience, but cannot match purpose built at this point • The theme of Mobile App vs Mobile Site is currently a hot topic of debate DotNetNuke Corp. Confidential © 2011 All rights reserved. 2012 3
  • 4.
    HTML 5 VSNATIVE APPS Html 5 Native App • Write once – run anywhere • App per platform Conclusion • Server-side code easily • May require lengthy •Choose according to requirements changed release process • Sandboxed, •Services layer may be largely the same in either no access to • Full access to device features case features – camera, GPS • No App Store Presence • In-device discovery + purchase • Speed dependent on connection • Faster + more stable • Direct monetization more • Monetization by app or in- difficult app purchase easy DotNetNuke Corp. Confidential © 2011 All rights reserved. 4
  • 5.
    MOBILE APPLICATIONS ANDDOTNETNUKE • DotNetNuke 6.2 introduced the Services Layer, which exposes key DNN API features • DotNetNuke 7.0 redefines the Services Layer, which is built on top of the WebAPI services • DNN Services layer is easily extended for module specific purposes • An entire new field of DotNetNuke application development has been created DotNetNuke Corp. Confidential © 2011 All rights reserved. 2012 5
  • 6.
    MOBILE APPLICATION TYPES •Corporate development : customising apps for in-house use on mobile + tablet platforms • Commercial development : new applications that provider web + mobile experience • Open Source development : providing applications + back end processes DotNetNuke Corp. Confidential © 2011 All rights reserved. 2012 6
  • 7.
    A NATURAL FIT: MOBILE + CLOUD DotNetNuke Corp. Confidential Š 2011 All rights reserved. 2012 7
  • 8.
    BUILDING A DOTNETNUKEMOBILE APPLICATION DotNetNuke Corp. Confidential Š 2011 All rights reserved. 2012 8
  • 9.
    UNDERSTANDING THE SERVICELAYER • 6.2 – Used the MVC Service Layer • 7.0 – Uses the Web API for the Services Layer • Two aspects to layer: » Built-in DNN API » Extension for Third-party modules • Provides authentication based on DotNetNuke user accounts and profiles • Provides simple pattern to design service endpoints • Flexibility in format (Json/Xml/others) DotNetNuke Corp. Confidential © 2011 All rights reserved. 2012 9
  • 10.
    EXTENDING THE SERVICELAYER • 2 Basic Components to API Extensions 1. Controller • Definition of Methods and layer on top of business logic • Inherits from DnnController 2. RouteMapper • Defines what Urls map to which Controller methods • Inherits from IServiceRouteMapper DotNetNuke Corp. Confidential © 2011 All rights reserved. 2012 10
  • 11.
    EXAMPLE SERVICE LAYERCALL • Url to call: http://example.com/DesktopModules/DnnDash/API/Dash/Ping DotNetNuke Corp. Confidential © 2011 All rights reserved. 11
  • 12.
    DECONSTRUCTING SERVICES LAYERURL http://example.com/DesktopModules/DnnDash/API/Dash/Ping • http://example.com => domain name • /DesktopModules => fixed part of Url, denotes module Url • /DnnDash => specifies module • /API => fixed, denotes services layer • /Dash => specifies controller [ DashController ] • /Ping => method name [ Public string Ping() ] • NOTE: /DesktopModules/DnnDash doesn’t necessarily have to exist DotNetNuke Corp. Confidential © 2011 All rights reserved. 2012 12
  • 13.
    ROUTEMAPPER REGISTERS URLROUTES • MapRoute configures what Urls will work:  “DnnDash”  /DesktopModules/DnnDash  “{controller}/{action}”  Class/Method • /API/Dash/Ping  DashController.Ping() • No other configuration required DotNetNuke Corp. Confidential © 2011 All rights reserved. 13
  • 14.
    SERVICES LAYER DEMONSTRATION DotNetNuke Corp. Confidential Š 2011 All rights reserved. 14
  • 15.
    SERVICES AUTHENTICATION • Authentication: » Identifying & Authorising User accounts » Preventing Unauthorised Access » Avoiding opening exploitable holes » Providing ‘context’ for current user within service calls • Web-browser based services call use cookie-based authentication (ie AJAX calls) • Mobile devices use digest authentication to provide authentication » Username/password pair provided with each call DotNetNuke Corp. Confidential © 2011 All rights reserved. 2012 15
  • 16.
    SERVICES AUTHENTICATION CONT. •Services methods access level can be marked with: » AllowAnonymous – no authentication » RequiresHost – if true, must be SuperUser » StaticRoles – named DotNetNuke roles • All ‘regular’ DNN objects are available in context for service calls: » Portal Settings (current portal, alias, settings) » UserInfo (authenticated user) DotNetNuke Corp. Confidential © 2011 All rights reserved. 2012 16
  • 17.
    TIPS FOR WRITINGSERVICES • Use RESTful method / parameter naming principles • Stick to common return format in project (Json/Xml/String – whatever) • Plan for infrequent service calls in Application Design • Be frugal with data going backwards and forwards – this may require custom serializing of objects DotNetNuke Corp. Confidential © 2011 All rights reserved. 2012 17
  • 18.
    INSTALLING SERVICES WITHYOUR MODULE • A service-only module only has an Assembly • Install with ordinary Module install package • DotNetNuke manifest file used to specify configuration and safe uninstall DotNetNuke Corp. Confidential © 2011 All rights reserved. 18
  • 19.
    WRITING A MOBILEAPPLICATION - EXAMPLE • ‘DnnDash’ application on Windows Phone • Reads installed DotNetNuke dashboard components for display on mobile devices • Uses DnnDash services layer to send back Xml of dashboard information • Host-level access required to run • DnnDash module/phone app available from dnndash.com • http://dnndashservice.codeplex.com/ for source code DotNetNuke Corp. Confidential © 2011 All rights reserved. 2012 19
  • 20.
    ACCESSING SERVICES FROMWINDOWS PHONE • Uses System.Net.HttpWebRequest » Asynchronous method » Check Http status code to monitor correct authentication (401 returned when not authenticated) • Each call from the device provides user authentication username/password pair • Uses Xml from Service call to create UI DotNetNuke Corp. Confidential © 2011 All rights reserved. 2012 20
  • 21.
    DNN DASH PHONEAPP DEMO • https://play.google.com/store/apps/details?id=com.rm.dnndash &feature=search_result • Search ‘DnnDash’ on the Google store • Windows Phone 7 version still in Approval, but should be on the Windows Store soon • Connect to dnndash.com • U : mobiledemo / P : dnn2012 DotNetNuke Corp. Confidential © 2011 All rights reserved. 2012 21
  • 22.
    DNN DASH PHONEAPP DEMO DotNetNuke Corp. Confidential Š 2011 All rights reserved. 2012 22
  • 23.
    ANDROID VERSION SCREENSHOTS DotNetNuke Corp. Confidential Š 2011 All rights reserved. 23
  • 24.
    AUTHENTICATING PHONE USER •Username/Password supplied with each call • Defaults to Digest Authentication – Username/password not plaintext DotNetNuke Corp. Confidential © 2011 All rights reserved. 24
  • 25.
    REQUESTING DATA FROMSERVICE • Mobile requests data using Asynchronous Web Request. • Response body is read from Response.GetResponseStream() • Once response is received, conversion to the response format • Example uses both Xml and Json responses DotNetNuke Corp. Confidential © 2011 All rights reserved. 2012 25
  • 26.
    POSTING DATA TOA SERVICE • Posting is much the same as retrieving data • Post generally means changing server state • Posts should be idempotent • Failure should allow for re-submit without losing client state DotNetNuke Corp. Confidential © 2011 All rights reserved. 2012 26
  • 27.
    CONSIDERATIONS FOR MOBILEAPP DESIGN • Store-posted apps can have lead-times for changes in design • DotNetNuke modules can be changed + patched immediately • Therefore, introduce flexibility into design that is data-driven, side-stepping requirements to re-release mobile clients DotNetNuke Corp. Confidential © 2011 All rights reserved. 2012 27
  • 28.
    CONCLUSIONS • Mobile Internetusage will soon overtake fixed line internet, if it hasn’t already • Hardware sales growth in mobile devices outstrips desktop computing • DotNetNuke provides a perfect bridge between mobile devices and your data, especially if you want to put it in the cloud • Building modules for the services layer is simple and fast • Mobile Apps are the next big thing in DotNetNuke DotNetNuke Corp. Confidential © 2011 All rights reserved. 2012 28
  • 29.
    QUESTIONS • Dnn Dashapplication source code available from http://dnndashservice.codeplex.com/ » Dnn Service Layer » Dnn Dash Desktop App » Dnn Dash Windows Phone App » Android Phone App • Slides available at http://www.slideshare.net/brchapman • Follow me on twitter : @brucerchapman DotNetNuke Corp. Confidential © 2011 All rights reserved. 2012 29