SlideShare una empresa de Scribd logo
1 de 29
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

Más contenido relacionado

La actualidad más candente

Cross platform mobile application development
Cross platform mobile application developmentCross platform mobile application development
Cross platform mobile application developmentwebprogr.com
 
Ember Conf 2016: Building Mobile Apps with Ember
Ember Conf 2016: Building Mobile Apps with EmberEmber Conf 2016: Building Mobile Apps with Ember
Ember Conf 2016: Building Mobile Apps with EmberAlex Blom
 
Cross platform Xamarin Apps With MVVM
Cross platform Xamarin Apps With MVVMCross platform Xamarin Apps With MVVM
Cross platform Xamarin Apps With MVVMJim Bennett
 
Phonegap/Cordova vs Native Application
Phonegap/Cordova vs Native ApplicationPhonegap/Cordova vs Native Application
Phonegap/Cordova vs Native ApplicationMuhammad Hakim A
 
Cross platform approach for mobile application development : a survey
Cross platform approach for mobile application development : a surveyCross platform approach for mobile application development : a survey
Cross platform approach for mobile application development : a surveyMounaim Latif
 
Cross-Platform Mobile Development - Technical Stuff
Cross-Platform Mobile Development - Technical StuffCross-Platform Mobile Development - Technical Stuff
Cross-Platform Mobile Development - Technical StuffAkash Kubavat
 
Cordova: APIs and instruments
Cordova: APIs and instrumentsCordova: APIs and instruments
Cordova: APIs and instrumentsIvano Malavolta
 
Xamarin.Forms Bootcamp
Xamarin.Forms BootcampXamarin.Forms Bootcamp
Xamarin.Forms BootcampMike Melusky
 
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Ryan Cuprak
 
Building Native “apps” with Visual Studio 2015
Building Native “apps” with Visual Studio 2015Building Native “apps” with Visual Studio 2015
Building Native “apps” with Visual Studio 2015Mike Melusky
 
The voicesignin.com authentication and identity platform
The voicesignin.com authentication and identity platform The voicesignin.com authentication and identity platform
The voicesignin.com authentication and identity platform Steven Bowden
 
Introduction to Phonegap
Introduction to PhonegapIntroduction to Phonegap
Introduction to PhonegapAndrei Firoiu
 

La actualidad más candente (20)

Cross platform mobile application development
Cross platform mobile application developmentCross platform mobile application development
Cross platform mobile application development
 
Firefox OS Weekend
Firefox OS WeekendFirefox OS Weekend
Firefox OS Weekend
 
Ember Conf 2016: Building Mobile Apps with Ember
Ember Conf 2016: Building Mobile Apps with EmberEmber Conf 2016: Building Mobile Apps with Ember
Ember Conf 2016: Building Mobile Apps with Ember
 
Workshop Ionic Framework - CC FE & UX
Workshop Ionic Framework - CC FE & UXWorkshop Ionic Framework - CC FE & UX
Workshop Ionic Framework - CC FE & UX
 
Cross platform Xamarin Apps With MVVM
Cross platform Xamarin Apps With MVVMCross platform Xamarin Apps With MVVM
Cross platform Xamarin Apps With MVVM
 
Phonegap/Cordova vs Native Application
Phonegap/Cordova vs Native ApplicationPhonegap/Cordova vs Native Application
Phonegap/Cordova vs Native Application
 
Cross platform approach for mobile application development : a survey
Cross platform approach for mobile application development : a surveyCross platform approach for mobile application development : a survey
Cross platform approach for mobile application development : a survey
 
Cross-Platform Mobile Development - Technical Stuff
Cross-Platform Mobile Development - Technical StuffCross-Platform Mobile Development - Technical Stuff
Cross-Platform Mobile Development - Technical Stuff
 
Cordova: APIs and instruments
Cordova: APIs and instrumentsCordova: APIs and instruments
Cordova: APIs and instruments
 
Xamarin.Forms Bootcamp
Xamarin.Forms BootcampXamarin.Forms Bootcamp
Xamarin.Forms Bootcamp
 
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
 
Building Native “apps” with Visual Studio 2015
Building Native “apps” with Visual Studio 2015Building Native “apps” with Visual Studio 2015
Building Native “apps” with Visual Studio 2015
 
Webapi
WebapiWebapi
Webapi
 
Widgets neil
Widgets neilWidgets neil
Widgets neil
 
The voicesignin.com authentication and identity platform
The voicesignin.com authentication and identity platform The voicesignin.com authentication and identity platform
The voicesignin.com authentication and identity platform
 
Xamarin v.Now
Xamarin v.NowXamarin v.Now
Xamarin v.Now
 
Building iOS app using meteor
Building iOS app using meteorBuilding iOS app using meteor
Building iOS app using meteor
 
Florin React Native Meetup
Florin React Native MeetupFlorin React Native Meetup
Florin React Native Meetup
 
Building mobile apps using meteorJS
Building mobile apps using meteorJSBuilding mobile apps using meteorJS
Building mobile apps using meteorJS
 
Introduction to Phonegap
Introduction to PhonegapIntroduction to Phonegap
Introduction to Phonegap
 

Similar a Building a mobile application for dot netnuke

Building a mobile application for dot netnuke v3
Building a mobile application for dot netnuke v3Building a mobile application for dot netnuke v3
Building a mobile application for dot netnuke v3brchapman
 
Mobile trends and impressions
Mobile trends and impressionsMobile trends and impressions
Mobile trends and impressionsShafaq Abdullah
 
AD114 -- Beyond the Mobile Browser? Building Rich Mobile Applications for IBM...
AD114 -- Beyond the Mobile Browser? Building Rich Mobile Applications for IBM...AD114 -- Beyond the Mobile Browser? Building Rich Mobile Applications for IBM...
AD114 -- Beyond the Mobile Browser? Building Rich Mobile Applications for IBM...ddrschiw
 
Citrix Receiver: the road ahead
Citrix Receiver: the road aheadCitrix Receiver: the road ahead
Citrix Receiver: the road aheadCitrix
 
Redefining Perspectives 4 - Metro ui Session 1
Redefining Perspectives 4 - Metro ui Session 1Redefining Perspectives 4 - Metro ui Session 1
Redefining Perspectives 4 - Metro ui Session 1sapientindia
 
Lotus Notes Mobile Application Development Using XPages
Lotus Notes Mobile Application Development Using XPagesLotus Notes Mobile Application Development Using XPages
Lotus Notes Mobile Application Development Using XPagesCognizant
 
Windows Server 2003 EOS : l'opportunité de repenser votre IT et mettre en pla...
Windows Server 2003 EOS : l'opportunité de repenser votre IT et mettre en pla...Windows Server 2003 EOS : l'opportunité de repenser votre IT et mettre en pla...
Windows Server 2003 EOS : l'opportunité de repenser votre IT et mettre en pla...Microsoft Décideurs IT
 
Windows Server 2003 EOS : l'opportunité de repenser votre IT et mettre en pla...
Windows Server 2003 EOS : l'opportunité de repenser votre IT et mettre en pla...Windows Server 2003 EOS : l'opportunité de repenser votre IT et mettre en pla...
Windows Server 2003 EOS : l'opportunité de repenser votre IT et mettre en pla...Microsoft Technet France
 
Windows Server 2003 EOS : l'opportunité de repenser votre IT et mettre en pla...
Windows Server 2003 EOS : l'opportunité de repenser votre IT et mettre en pla...Windows Server 2003 EOS : l'opportunité de repenser votre IT et mettre en pla...
Windows Server 2003 EOS : l'opportunité de repenser votre IT et mettre en pla...Microsoft Décideurs IT
 
Communication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/SubscribeCommunication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/SubscribeSumant Tambe
 
Communication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/SubscribeCommunication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/SubscribeReal-Time Innovations (RTI)
 
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...Heiko Voigt
 
Presentation build and connect apps, devices and data ibm worklight overview
Presentation   build and connect apps, devices and data ibm worklight overviewPresentation   build and connect apps, devices and data ibm worklight overview
Presentation build and connect apps, devices and data ibm worklight overviewxKinAnx
 
Citrix Day 2014: XenApp / XenDesktop 7.6
Citrix Day 2014: XenApp / XenDesktop 7.6Citrix Day 2014: XenApp / XenDesktop 7.6
Citrix Day 2014: XenApp / XenDesktop 7.6Digicomp Academy AG
 
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGap
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGapBuilding Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGap
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGapNick Landry
 
Building your Own Mobile Enterprise Application: It’s Not as Hard as You Migh...
Building your Own Mobile Enterprise Application: It’s Not as Hard as You Migh...Building your Own Mobile Enterprise Application: It’s Not as Hard as You Migh...
Building your Own Mobile Enterprise Application: It’s Not as Hard as You Migh...Jason Conger
 
Cloud Native Patterns with Bluemix Developer Console
Cloud Native Patterns with Bluemix Developer ConsoleCloud Native Patterns with Bluemix Developer Console
Cloud Native Patterns with Bluemix Developer ConsoleMatthew Perrins
 
.NET Cloud-Native Bootcamp
.NET Cloud-Native Bootcamp.NET Cloud-Native Bootcamp
.NET Cloud-Native BootcampVMware Tanzu
 
The Revolution in Licensing - Cloud-Based Licensing
The Revolution in Licensing - Cloud-Based LicensingThe Revolution in Licensing - Cloud-Based Licensing
The Revolution in Licensing - Cloud-Based LicensingLicensingLive! - SafeNet
 
Integrating Novell Collaboration Products with SugarCRM, Salesforce.com and S...
Integrating Novell Collaboration Products with SugarCRM, Salesforce.com and S...Integrating Novell Collaboration Products with SugarCRM, Salesforce.com and S...
Integrating Novell Collaboration Products with SugarCRM, Salesforce.com and S...Novell
 

Similar a Building a mobile application for dot netnuke (20)

Building a mobile application for dot netnuke v3
Building a mobile application for dot netnuke v3Building a mobile application for dot netnuke v3
Building a mobile application for dot netnuke v3
 
Mobile trends and impressions
Mobile trends and impressionsMobile trends and impressions
Mobile trends and impressions
 
AD114 -- Beyond the Mobile Browser? Building Rich Mobile Applications for IBM...
AD114 -- Beyond the Mobile Browser? Building Rich Mobile Applications for IBM...AD114 -- Beyond the Mobile Browser? Building Rich Mobile Applications for IBM...
AD114 -- Beyond the Mobile Browser? Building Rich Mobile Applications for IBM...
 
Citrix Receiver: the road ahead
Citrix Receiver: the road aheadCitrix Receiver: the road ahead
Citrix Receiver: the road ahead
 
Redefining Perspectives 4 - Metro ui Session 1
Redefining Perspectives 4 - Metro ui Session 1Redefining Perspectives 4 - Metro ui Session 1
Redefining Perspectives 4 - Metro ui Session 1
 
Lotus Notes Mobile Application Development Using XPages
Lotus Notes Mobile Application Development Using XPagesLotus Notes Mobile Application Development Using XPages
Lotus Notes Mobile Application Development Using XPages
 
Windows Server 2003 EOS : l'opportunité de repenser votre IT et mettre en pla...
Windows Server 2003 EOS : l'opportunité de repenser votre IT et mettre en pla...Windows Server 2003 EOS : l'opportunité de repenser votre IT et mettre en pla...
Windows Server 2003 EOS : l'opportunité de repenser votre IT et mettre en pla...
 
Windows Server 2003 EOS : l'opportunité de repenser votre IT et mettre en pla...
Windows Server 2003 EOS : l'opportunité de repenser votre IT et mettre en pla...Windows Server 2003 EOS : l'opportunité de repenser votre IT et mettre en pla...
Windows Server 2003 EOS : l'opportunité de repenser votre IT et mettre en pla...
 
Windows Server 2003 EOS : l'opportunité de repenser votre IT et mettre en pla...
Windows Server 2003 EOS : l'opportunité de repenser votre IT et mettre en pla...Windows Server 2003 EOS : l'opportunité de repenser votre IT et mettre en pla...
Windows Server 2003 EOS : l'opportunité de repenser votre IT et mettre en pla...
 
Communication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/SubscribeCommunication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/Subscribe
 
Communication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/SubscribeCommunication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/Subscribe
 
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
 
Presentation build and connect apps, devices and data ibm worklight overview
Presentation   build and connect apps, devices and data ibm worklight overviewPresentation   build and connect apps, devices and data ibm worklight overview
Presentation build and connect apps, devices and data ibm worklight overview
 
Citrix Day 2014: XenApp / XenDesktop 7.6
Citrix Day 2014: XenApp / XenDesktop 7.6Citrix Day 2014: XenApp / XenDesktop 7.6
Citrix Day 2014: XenApp / XenDesktop 7.6
 
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGap
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGapBuilding Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGap
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGap
 
Building your Own Mobile Enterprise Application: It’s Not as Hard as You Migh...
Building your Own Mobile Enterprise Application: It’s Not as Hard as You Migh...Building your Own Mobile Enterprise Application: It’s Not as Hard as You Migh...
Building your Own Mobile Enterprise Application: It’s Not as Hard as You Migh...
 
Cloud Native Patterns with Bluemix Developer Console
Cloud Native Patterns with Bluemix Developer ConsoleCloud Native Patterns with Bluemix Developer Console
Cloud Native Patterns with Bluemix Developer Console
 
.NET Cloud-Native Bootcamp
.NET Cloud-Native Bootcamp.NET Cloud-Native Bootcamp
.NET Cloud-Native Bootcamp
 
The Revolution in Licensing - Cloud-Based Licensing
The Revolution in Licensing - Cloud-Based LicensingThe Revolution in Licensing - Cloud-Based Licensing
The Revolution in Licensing - Cloud-Based Licensing
 
Integrating Novell Collaboration Products with SugarCRM, Salesforce.com and S...
Integrating Novell Collaboration Products with SugarCRM, Salesforce.com and S...Integrating Novell Collaboration Products with SugarCRM, Salesforce.com and S...
Integrating Novell Collaboration Products with SugarCRM, Salesforce.com and S...
 

Último

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 

Último (20)

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

Building a mobile application for dot netnuke

  • 1. BUILDING A MOBILE APPLICATION FOR DOTNETNUKE Bruce Chapman Director, iFinity Software 7th November 2012 DotNetNuke Corp. Confidential © 2012 All rights reserved.
  • 2. 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
  • 3. 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
  • 4. 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
  • 5. 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
  • 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 DOTNETNUKE MOBILE APPLICATION DotNetNuke Corp. Confidential © 2011 All rights reserved. 2012 8
  • 9. 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
  • 10. 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
  • 11. EXAMPLE SERVICE LAYER CALL • Url to call: http://example.com/DesktopModules/DnnDash/API/Dash/Ping DotNetNuke Corp. Confidential © 2011 All rights reserved. 11
  • 12. 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
  • 13. 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
  • 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 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
  • 18. 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
  • 19. 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
  • 20. 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
  • 21. 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
  • 22. DNN DASH PHONE APP 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 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
  • 26. 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
  • 27. 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
  • 28. 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
  • 29. 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