SlideShare une entreprise Scribd logo
1  sur  49
Connecting Xamarin
Apps with
IBM Worklight
Chief Architect, IBM MobileFirst
gtruty@us.ibm.com
Greg Truty
Introducing IBM Worklight
With the Worklight SDK for Xamarin
developers Enterprise grade security,
integration and app management following
features of Worklight
Security and Trust
• Single sign-on mechanism
• SSL encryption
• Multi-factor authentication
• Secured offline access
• On device encryption of user data
Enterprise Integration
• Direct access to back-end systems
• Leverage existing SOA services
• Server-side caching
• Unified push and SMS notifications
Application Management
• App distribution
• App Version management
• Remote disabling apps
• Push Notification service management
• Analytics and Usage report
• Log collection for problem determination
IBM Worklight goes beyond mobile app UI creation to deliver
mobile optimized, standards-based, middleware and tools
for enterprise-grade mobile applications and services
creation
“Best Enterprise Mobility Application Development Platform"
by Compass Intelligence for 2014 Mobility Awards
Worklight CLI & Studio
Leading tools for native and
hybrid development that
maximize code reuse, accelerate
development, and promote team
work
Operational Console
UI for app deployment, management, and version
enforcement, real-time operational analytics, push
notifications
Worklight App Center
A non-MDM, cross-platform, private mobile app store tailored to the needs of development
team or as an enterprise store
IBM Worklight – Main Components
App Runtime
Client APIs available for native, hybrid, and web apps
Worklight Server
Gateway for mobile user engagement, security,
analytics, and application control
Run TimeDevelopment
The IBM Worklight SDK for Xamarin
Security
Authentication
Integration
Notifications
App Management
Analytics
Xamarin
Studio
Integrated
Services
Create rich native applications in C# in Xamarin Studio
leveraging enterprise grade app services that speed
development and enhance app capabilities and
performance
Speed development Add rich app services
Speed integration Ease troubleshootingSpeed integration
Leverage robust security
and authentication
Get control of
your applications
What does this do for mobile application
developers?
and More
IBM Bluemix
A rich set of mobile ready APIs that you can mix and match to power your App
Run Code
The developer can chose from multiple language runtimes or bring
their own. Just upload your code and go.
Store Data
The developer can store data in the cloud as a service easily without
needing to administer the databases.
Cloud Integration
Build hybrid environments. Connect to on-premises systems of record
plus other public and private clouds. Expose your own APIs to your
developers.
Built on IBM SoftLayer
Runs on top of IBM’s leading infrastructure as a service.
A catalog of developer friendly APIs (IBM & third party) with mobile
SDKs, that can be composed into new and existing mobile apps.
Configure and manage through the BlueMix portal.
API Catalog
Big Data &
Analytics
Categories Data
Inte-
gration
WebMobile
Enterprise Integration
Worklight
Mobile
Server
Firewall
Existing
Integration Hub
backend integration
HTTP(S)
Database
WebService
REST
JMS
MQ
File
FTP
SAP
Siebel
:
JDBC
Web Service
JMSJSONXamarin
Studio
C# App built with
Xamarin Studio
Worklight server provides a single secure point of integration into the Enterprise that speeds
integration and enables management of mobile solutions
Enterprise
Applications
IBM
MobileFirst
SDK
Bring Your Own Tools!
Developers have the flexibility to use the development tools of their choice
• Worklight Studio
• Command Line Interface (CLI) is provided to enable the use of other development tools
The CLI provides the following capabilities:
• Add Worklight SDKs to a native project
• Create Worklight hybrid projects
• Add environments to a Worklight hybrid project
• Create Worklight Adapters
• Test Worklight Adapters
• Deploy Worklight applications and adapters to the Worklight Server
• Start and stop the Worklight Server
• Launch the Worklight administrative console
Worklight SDK for Xamarin – Developer Workflow
9
• Create Worklight server side artifacts and
deploy using Command Line Interface
• Install IBM Worklight
component in Xamarin studio
• Use Worklight APIs in your application
• Extensive libraries and client APIs that expose
and interface with native device functionality
• Build Apps
• Deploy/Manage/Monitor Apps
Add the IBM MobileFirst SDK Component
Interact with IBM Worklight via the Xamarin
IDE
Worklight CLI and JDK configuration
$ wl create XTest
$ wl add api XTestiOS –environment ios
$ wl build
$ wl start
$ wl deploy
Create a Worklight application (to manage the
application)
Worklight Server: Adapters
Worklight Server
SQL / JDBC
ESB
SOAP / HTTP
JMS
CAST IRON
REST
Java Extension
Node*
For the server developer
• JS anywhere: Simple APIs for server-side JavaScript development
• Extensibility: Java API for custom adapters
For the client developer
• Easy-to-use, consistent client-side API to call any back-end system
Enterprise back-ends and cloud
services
Run time
• Lightweight server-side logic to expose data in a mobile-friendly way
• Automatic JSON transformation of enterprise data for quick transport and ease of
consumption by mobile developer
• Server-side service composition to reduce requests over slow mobile network
• XSLT to reduce fat SOAP responses
• Security
• Automatic enablement of server-side authentication control and audit
• Analytics
• Automatic collection of user actions and device and app properties
• Mobile user engagement
• Push notifications
public async Task<String> InvokeTransferFunds(string acctFrom, string acctTo, string amount
{
WorklightProcedureInvocationData invocationData =
new WorklightProcedureInvocationData("HttpMyBankAdapter",
"getTransferFunds",
new object[] {acctFrom, acctTo, amount});
WorklightResponse task = await client.InvokeProcedure(invocationData);
if (task.Success)
{
:
}
}
Invoke an Adapter method from Xamarin
function getTransferFunds (acctFrom, acctTo, amount) {
:
if ((1*amount) > 0) {
users[index].accts[f].balance = users[index].accts[f].balance - amount;
users[index].accts[t].balance = (1*users[index].accts[t].balance) + (1*amount);
result = true;
}
:
path = getPath(interest);
var input = {
method : 'get',
returnedContentType : 'xml',
path : path
};
return WL.Server.invokeHttp(input);
}
Implement Adapter methods to driver enterprise
integration and implement common server side
logic
Modify Adapter configuration
<displayName>MyBankAdapter</displayName>
<description>MyBankAdapter</description>
<connectivity>
<connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
<protocol>http</protocol>
<domain>rss.cnn.com</domain>
<port>80</port>
</connectionPolicy>
<loadConstraints maxConcurrentConnectionsPerNode="2" />
</connectivity>
<procedure name="getDriveLogin"/>
<procedure name="getAccounts"/>
<procedure name="getTransactions"/>
<procedure name="getTransferFunds"/>
$ wl add adapter MyBankAdapter –-type http
$ subl adapters/MyBankAdapter/MyBankAdapter-impl.js
$ wl build
$ wl deploy
Create and implement desired adapter procedures
Invoke the Adapter interactively
laptop:XTest gregtruty$
] Which adapter do you want to use? (Use arrow keys)
HTTP
HttpMyBankAdapter
❯ MyBankAdapter
SQLMyBankAdapter
[?] Which procedure do you want to invoke? (Use arrow keys)
getDriveLogin
❯ getAccounts
getTransactions
getTransferFunds
[?] Enter the comma-separated parameters:
Invoking MyBankAdapter:getAccounts...
Arguments:
[ "Greg” ]
Invocation result:
{
"isSuccessful": true,
"accts": [
{ "balance": 8247.22,
"number": "182729382",
"type": "Savings” },
{ "balance": 1452.23,
"number": "582729382",
"type": "Checking” } ]
}
wl invoke “Greg”
Invoke the Adapter directly
laptop:XTest gregtruty$ wl invoke MyBankAdapter:getAccounts '"Greg"'
{
"isSuccessful": true,
"accts": [
{
"balance": 8247.22,
"number": "182729382",
"type": "Savings"
},
{
"balance": 1452.23,
"number": "582729382",
"type": "Checking"
}
]
}
Automatic adapter generation for SOAP and
SAP NetWeaver
• Speed-up creation of mobile apps which interact with Enterprise back-
end system of records
• Reduce the amount to coding to zero or near-zero for invoking SOAP
based web services and services from the SAP NetWeaver Gateway
• Consume these services via the generated adapter from your web, hybrid,
or native app
Unified Push Notifications
Register for, notify, and receive a notification via Worklight APIs
Back-end
System
Back-end
System
Back-end
System
Back-end
System
Polling
Adapters
Message-
based
Adapters
Unified Push
API
Notification
State
Database
User-Device
Database
iOS
Dispatcher
Android
Dispatcher
Windows
Phone
Dispatcher
SMS
Dispatcher
Apple Push
Servers (APN)
Google Push
Servers (GCM)
Microsoft
Push Servers
SMS/MMS
Brokers
Administrative Console
Notification statistics, SMS subscription control
Worklight
Client-side Push
Services
iOS
Push API
Android
Push API
Windows
Push API
Broker API
Worklight
Client-side Push
Services
Worklight
Client-side
Push Services
Optional 2-way SMS
Recent Push notification enhancements in
Worklight Foundation
Group notifications based on tags
 Notifications are targeted to only a select set of users based on their topics of interest
 Tags allow message producers / senders to segment devices
 One or more tags can exist per application
 Defined in application-descriptor.xml – created during deployment
Broadcast, unicast and narrowcast notifications
 APIs available to send a notification to all the devices that installed the application
 Also provides for an option to opt out of receiving broadcast notifications
 Enhanced APIs to send a notification to specific user or device that installed the application
 Support for a notification targeted to devices of a particular platform that installed the application
 Server side REST APIs for device and subscription management
 Improved scalability of the push infrastructure to handle large volumes of push messages
Application Security
Security
Application Security
Protecting data on the device
Authentication
integration
framework
Data protection
realms
Using device id
as 2nd factor
Code
obfuscation
SSL with server
identity
verification
Proven platform
security
App authenticity
testing
Compatible with
Jailbreak /malware
detection
Secure challenge-
response on
startup
Encrypted offline
cache
Offline
authentication
Enforcing Security Updates
Remote disable Direct update
 Security for enterprise application is the biggest concern of CTO’s
 Rich Worklight security features can now be used
Worklight security – concepts
Security Tests
A security test defines a security configuration for a protected resource
Authentication realms
Resources are protected by authentication realms. Authentication processes can be
interactive or non-interactive.
Authenticators and login modules
An authenticator collects client credentials. A login module validates them.
Adapters can point to security tests
<displayName>MyBankAdapter</displayName>
<description>MyBankAdapter</description>
<connectivity>
<connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
<protocol>http</protocol>
<domain>rss.cnn.com</domain>
<port>80</port>
</connectionPolicy>
<loadConstraints maxConcurrentConnectionsPerNode="2" />
</connectivity>
<procedure name="getDriveLogin” securityTest="Adapter-securityTest” />
<procedure name="getAccounts” />
<procedure name="getTransactions” />
<procedure name="getTransferFunds” />
Security configuration is under the project
<securityTests>
<customSecurityTest name="Adapter-securityTest">
<test realm="SampleAppRealm" isInternalUserID="true"/>
</customSecurityTest>
</securityTests>
<realms>
<realm name="SampleAppRealm" loginModule="StrongDummy">
<className>com.worklight.core.auth.ext.FormBasedAuthenticator</className>
</realm>
</realms>
<loginModules>
<loginModule name="StrongDummy">
<className>com.worklight.core.auth.ext.NonValidatingLoginModule</className>
</loginModule>
</loginModules>
Code up the client-side challenge handler
public override void HandleChallenge(WorklightResponse challenge)
{
Console.WriteLine ("We were challenged.. so we are handling it");
Dictionary<String,String > parms = new Dictionary<String, String> ();
parms.Add ("j_username", "worklight");
parms.Add ("j_password", "password");
LoginFormParameters = new LoginFormInfo ("j_security_check", parms,
null, 30000, "post");
shouldSubmitLoginForm = true;
}
Configure on the connect to Worklight
public async void Connect(){
//lets send a message to the server
client.Analytics.Log("Trying to connect to server",metadata);
ChallengeHandler customCH = new CustomChallengeHandler (appRealm);
client.RegisterChallengeHandler(customCH);
WorklightResponse task = await client.Connect ();
//lets log to the local client (not server)
client.Logger("Xamarin").Trace ("connection");
//write to the server the connection status
client.Analytics.Log ("Connect response : " + task.Success);
//return task;
}
Device Single Sign-On (SSO)
• Enables a mobile user to authenticate once and gain access to all apps from the same
organization (technically, with the same developer certificate) without re-authenticating.
• Integration with DataPower, ISAM, and other gateways
App 1
secureMobileOSkey
store
Worklight
Server
App 2
ID
Session x
Session y
Duplicate
after
receiving ID
from App 2
Implementation
 Implemented using combination of
server-side capabilities (realms) and
unique device identification (device ID)
 On successful login the authentication
state is saved in the database and used
for validations in subsequent sessions
from the same device.
Manage the Worklight applications
Application Management
• Better control of your
application
• Active
• Active, Notifying
(useful for informing users
of scheduled outages or
future pending updates)
• Access Disabled
(useful for forcing upgrades
to new versions)
Disable or Notify the end user
Remote-controlled client-side log collection
• Worklight provides Native and JavaScript API for client-side logging
• Administrator defines log collection profiles on the server which are automatically retrieved by the Worklight client-side runtime
• By default sent on init, resume, and 75% full – can be customized
• Administrator can perform analysis and text search of client-side
logs via server-side analytics console
Unified Client and Server Analytics
Out-of-the-box analytics address the following:
• User adoption, device and app properties
• User actions and called adapter procedures
• Performance and data usage information
• Exceptions, crashes, logs, response time
Analytics component provided in a WAR for simple install and administration
Service integration analytics
Robust analytics for adapter usage including average response time, average data usage,
and server usage statistics
Server and Client log inspection made easy
Worklight Analytics Console enables easy searching of both client and server
logs
Worklight provides C# API documentation
Worklight
Cluster
Load
Balancer
Backend 1 Backend 2
Worklight
Database
Web SSO
Server
Corporate LAN
Corporate DMZ
IBM Worklight Foundation – Typical Topology
Seek community forum/support at Stack Overflow
http://stackoverflow.com/questions/tagged/worklight
Demo
Resources
Worklight Getting Started (documentation, CLI reference, sample adapters, etc…)
http://www.ibm.com/developerworks/mobile/worklight/getting-started.html
Worklight CLI Download
http://www.ibm.com/developerworks/mobile/worklight/download/cli.html
Xamarin and Worklight information
http://www.xamarin.com/ibm
Worklight Support
http://stackoverflow.com/questions/tagged/worklight
Thank You
Greg Truty
gtruty@us.ibm.com
http://www.ibm.com/developerworks/mobile/worklight
© Copyright IBM Corporation 2013. All rights reserved. The information contained in these materials is provided for informational purposes only, and is provided AS IS without warranty of any kind, express or
implied. IBM shall not be responsible for any damages arising out of the use of, or otherwise related to, these materials. Nothing contained in these materials is intended to, nor shall have the effect of, creating
any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software. References in these materials
to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. Product release dates and/or capabilities referenced in these materials may change at any
time at IBM’s sole discretion based on market opportunities or other factors, and are not intended to be a commitment to future product or feature availability in any way. IBM, the IBM logo, Rational, the
Rational logo, Telelogic, the Telelogic logo, and other IBM products and services are trademarks of the International Business Machines Corporation, in the United States, other countries or both. Other company,
product, or service names may be trademarks or service marks of others.
Invoke the Adapter interactively
laptop:XTest gregtruty$ wl invoke
] Which adapter do you want to use? (Use arrow keys)
HTTP
HttpMyBankAdapter
❯ MyBankAdapter
SQLMyBankAdapter
[?] Which procedure do you want to invoke? (Use arrow keys)
getDriveLogin
❯ getAccounts
getTransactions
getTransferFunds
[?] Enter the comma-separated parameters: "Greg"
Invoking MyBankAdapter:getAccounts...
Arguments:
[ "Greg” ]
Invocation result:
{
"isSuccessful": true,
"accts": [
{ "balance": 8247.22,
"number": "182729382",
"type": "Savings” },
{ "balance": 1452.23,
"number": "582729382",
"type": "Checking” } ]
}

Contenu connexe

Tendances

Software Architectures, Week 3 - Microservice-based Architectures
Software Architectures, Week 3 - Microservice-based ArchitecturesSoftware Architectures, Week 3 - Microservice-based Architectures
Software Architectures, Week 3 - Microservice-based Architectures
Angelos Kapsimanis
 
Microsoft private cloud
Microsoft private cloudMicrosoft private cloud
Microsoft private cloud
ebuc
 
Understanding the Windows Azure platform - june
Understanding the Windows Azure platform  - juneUnderstanding the Windows Azure platform  - june
Understanding the Windows Azure platform - june
DavidGristwood
 

Tendances (20)

Microsoft Azure For Solutions Architects
Microsoft Azure For Solutions ArchitectsMicrosoft Azure For Solutions Architects
Microsoft Azure For Solutions Architects
 
(MBL202) Mobile State of the Union: Mobile Apps Powered by AWS
(MBL202) Mobile State of the Union: Mobile Apps Powered by AWS(MBL202) Mobile State of the Union: Mobile Apps Powered by AWS
(MBL202) Mobile State of the Union: Mobile Apps Powered by AWS
 
Decomposing applications for deployability and scalability #springone2gx #s12gx
Decomposing applications for deployability and scalability #springone2gx #s12gxDecomposing applications for deployability and scalability #springone2gx #s12gx
Decomposing applications for deployability and scalability #springone2gx #s12gx
 
M meijer paas - tech-days 2015
M meijer   paas - tech-days 2015M meijer   paas - tech-days 2015
M meijer paas - tech-days 2015
 
API Strategy Austin - App-centric vs Job-centric Microservices
API Strategy Austin - App-centric vs Job-centric MicroservicesAPI Strategy Austin - App-centric vs Job-centric Microservices
API Strategy Austin - App-centric vs Job-centric Microservices
 
Creation of cloud application using microsoft azure by vaishali sahare [katkar]
Creation of cloud application using microsoft azure by vaishali sahare [katkar]Creation of cloud application using microsoft azure by vaishali sahare [katkar]
Creation of cloud application using microsoft azure by vaishali sahare [katkar]
 
An Overview of Windows Azure
An Overview of Windows AzureAn Overview of Windows Azure
An Overview of Windows Azure
 
Cloud native architeturecture
Cloud native architeturecture Cloud native architeturecture
Cloud native architeturecture
 
Windows Azure
Windows AzureWindows Azure
Windows Azure
 
Java on Your Terms with Azure
Java on Your Terms with AzureJava on Your Terms with Azure
Java on Your Terms with Azure
 
I servizi AWS per le applicazioni mobili: sviluppo, test e produzione
I servizi AWS per le applicazioni mobili: sviluppo, test e produzioneI servizi AWS per le applicazioni mobili: sviluppo, test e produzione
I servizi AWS per le applicazioni mobili: sviluppo, test e produzione
 
Introduction of Windows azure and overview
Introduction of Windows azure and overviewIntroduction of Windows azure and overview
Introduction of Windows azure and overview
 
Azure Overview
Azure Overview Azure Overview
Azure Overview
 
Software Architectures, Week 3 - Microservice-based Architectures
Software Architectures, Week 3 - Microservice-based ArchitecturesSoftware Architectures, Week 3 - Microservice-based Architectures
Software Architectures, Week 3 - Microservice-based Architectures
 
Microservices: Decomposing Applications for Deployability and Scalability (ja...
Microservices: Decomposing Applications for Deployability and Scalability (ja...Microservices: Decomposing Applications for Deployability and Scalability (ja...
Microservices: Decomposing Applications for Deployability and Scalability (ja...
 
Microsoft private cloud
Microsoft private cloudMicrosoft private cloud
Microsoft private cloud
 
Microsoft Azure Overview
Microsoft Azure OverviewMicrosoft Azure Overview
Microsoft Azure Overview
 
Interconnect Mobile Application Development on Bluemix!!
Interconnect Mobile Application Development on Bluemix!!Interconnect Mobile Application Development on Bluemix!!
Interconnect Mobile Application Development on Bluemix!!
 
Introduction to MicroServices (Oakjug)
Introduction to MicroServices (Oakjug)Introduction to MicroServices (Oakjug)
Introduction to MicroServices (Oakjug)
 
Understanding the Windows Azure platform - june
Understanding the Windows Azure platform  - juneUnderstanding the Windows Azure platform  - june
Understanding the Windows Azure platform - june
 

Similaire à Ibm xamarin gtruty

Similaire à Ibm xamarin gtruty (20)

Connecting Xamarin Apps with IBM Worklight in Bluemix
Connecting Xamarin Apps with IBM Worklight in BluemixConnecting Xamarin Apps with IBM Worklight in Bluemix
Connecting Xamarin Apps with IBM Worklight in Bluemix
 
Build & Deploy Scalable Cloud Applications in Record Time
Build & Deploy Scalable Cloud Applications in Record TimeBuild & Deploy Scalable Cloud Applications in Record Time
Build & Deploy Scalable Cloud Applications in Record Time
 
Worklight mobile v6
Worklight mobile v6 Worklight mobile v6
Worklight mobile v6
 
Accelerate Digital Transformation with IBM Cloud Private
Accelerate Digital Transformation with IBM Cloud PrivateAccelerate Digital Transformation with IBM Cloud Private
Accelerate Digital Transformation with IBM Cloud Private
 
IBM MobileFirst - Hybrid App Development
IBM MobileFirst - Hybrid App DevelopmentIBM MobileFirst - Hybrid App Development
IBM MobileFirst - Hybrid App Development
 
Easy integration of Bluemix services with your applications
Easy integration of Bluemix services with your applicationsEasy integration of Bluemix services with your applications
Easy integration of Bluemix services with your applications
 
Getting started with development in azure
Getting started with development in azureGetting started with development in azure
Getting started with development in azure
 
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
 
Build intelligent solutions using ms azure
Build intelligent solutions using ms azureBuild intelligent solutions using ms azure
Build intelligent solutions using ms azure
 
Build intelligent solutions using Azure
Build intelligent solutions using AzureBuild intelligent solutions using Azure
Build intelligent solutions using Azure
 
MongoDB.local Atlanta: Introduction to Serverless MongoDB
MongoDB.local Atlanta: Introduction to Serverless MongoDBMongoDB.local Atlanta: Introduction to Serverless MongoDB
MongoDB.local Atlanta: Introduction to Serverless MongoDB
 
Convertigo Mobility Platform | Mobile Application Development for Enterprises...
Convertigo Mobility Platform | Mobile Application Development for Enterprises...Convertigo Mobility Platform | Mobile Application Development for Enterprises...
Convertigo Mobility Platform | Mobile Application Development for Enterprises...
 
WebSphere Application Server - Meeting Your Cloud and On-Premise Demands
WebSphere Application Server - Meeting Your Cloud and On-Premise DemandsWebSphere Application Server - Meeting Your Cloud and On-Premise Demands
WebSphere Application Server - Meeting Your Cloud and On-Premise Demands
 
2011.10.19 - Cloud Partner Day - Reseller Breakout
2011.10.19 - Cloud Partner Day - Reseller Breakout2011.10.19 - Cloud Partner Day - Reseller Breakout
2011.10.19 - Cloud Partner Day - Reseller Breakout
 
Faites évoluer votre accès aux données avec MongoDB Stitch
Faites évoluer votre accès aux données avec MongoDB StitchFaites évoluer votre accès aux données avec MongoDB Stitch
Faites évoluer votre accès aux données avec MongoDB Stitch
 
Microservices - Hitchhiker's guide to cloud native applications
Microservices - Hitchhiker's guide to cloud native applicationsMicroservices - Hitchhiker's guide to cloud native applications
Microservices - Hitchhiker's guide to cloud native applications
 
.NET Development
.NET Development.NET Development
.NET Development
 
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill ...
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill ...Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill ...
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill ...
 
Dev show september 8th 2020 power platform - not just a simple toy
Dev show september 8th 2020   power platform - not just a simple toyDev show september 8th 2020   power platform - not just a simple toy
Dev show september 8th 2020 power platform - not just a simple toy
 
IBM Bluemix
IBM BluemixIBM Bluemix
IBM Bluemix
 

Dernier

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 

Ibm xamarin gtruty

  • 1. Connecting Xamarin Apps with IBM Worklight Chief Architect, IBM MobileFirst gtruty@us.ibm.com Greg Truty
  • 2. Introducing IBM Worklight With the Worklight SDK for Xamarin developers Enterprise grade security, integration and app management following features of Worklight Security and Trust • Single sign-on mechanism • SSL encryption • Multi-factor authentication • Secured offline access • On device encryption of user data Enterprise Integration • Direct access to back-end systems • Leverage existing SOA services • Server-side caching • Unified push and SMS notifications Application Management • App distribution • App Version management • Remote disabling apps • Push Notification service management • Analytics and Usage report • Log collection for problem determination IBM Worklight goes beyond mobile app UI creation to deliver mobile optimized, standards-based, middleware and tools for enterprise-grade mobile applications and services creation “Best Enterprise Mobility Application Development Platform" by Compass Intelligence for 2014 Mobility Awards
  • 3. Worklight CLI & Studio Leading tools for native and hybrid development that maximize code reuse, accelerate development, and promote team work Operational Console UI for app deployment, management, and version enforcement, real-time operational analytics, push notifications Worklight App Center A non-MDM, cross-platform, private mobile app store tailored to the needs of development team or as an enterprise store IBM Worklight – Main Components App Runtime Client APIs available for native, hybrid, and web apps Worklight Server Gateway for mobile user engagement, security, analytics, and application control Run TimeDevelopment
  • 4. The IBM Worklight SDK for Xamarin Security Authentication Integration Notifications App Management Analytics Xamarin Studio Integrated Services Create rich native applications in C# in Xamarin Studio leveraging enterprise grade app services that speed development and enhance app capabilities and performance
  • 5. Speed development Add rich app services Speed integration Ease troubleshootingSpeed integration Leverage robust security and authentication Get control of your applications What does this do for mobile application developers?
  • 6. and More IBM Bluemix A rich set of mobile ready APIs that you can mix and match to power your App Run Code The developer can chose from multiple language runtimes or bring their own. Just upload your code and go. Store Data The developer can store data in the cloud as a service easily without needing to administer the databases. Cloud Integration Build hybrid environments. Connect to on-premises systems of record plus other public and private clouds. Expose your own APIs to your developers. Built on IBM SoftLayer Runs on top of IBM’s leading infrastructure as a service. A catalog of developer friendly APIs (IBM & third party) with mobile SDKs, that can be composed into new and existing mobile apps. Configure and manage through the BlueMix portal. API Catalog Big Data & Analytics Categories Data Inte- gration WebMobile
  • 7. Enterprise Integration Worklight Mobile Server Firewall Existing Integration Hub backend integration HTTP(S) Database WebService REST JMS MQ File FTP SAP Siebel : JDBC Web Service JMSJSONXamarin Studio C# App built with Xamarin Studio Worklight server provides a single secure point of integration into the Enterprise that speeds integration and enables management of mobile solutions Enterprise Applications IBM MobileFirst SDK
  • 8. Bring Your Own Tools! Developers have the flexibility to use the development tools of their choice • Worklight Studio • Command Line Interface (CLI) is provided to enable the use of other development tools The CLI provides the following capabilities: • Add Worklight SDKs to a native project • Create Worklight hybrid projects • Add environments to a Worklight hybrid project • Create Worklight Adapters • Test Worklight Adapters • Deploy Worklight applications and adapters to the Worklight Server • Start and stop the Worklight Server • Launch the Worklight administrative console
  • 9. Worklight SDK for Xamarin – Developer Workflow 9 • Create Worklight server side artifacts and deploy using Command Line Interface • Install IBM Worklight component in Xamarin studio • Use Worklight APIs in your application • Extensive libraries and client APIs that expose and interface with native device functionality • Build Apps • Deploy/Manage/Monitor Apps
  • 10. Add the IBM MobileFirst SDK Component
  • 11. Interact with IBM Worklight via the Xamarin IDE
  • 12. Worklight CLI and JDK configuration
  • 13. $ wl create XTest $ wl add api XTestiOS –environment ios $ wl build $ wl start $ wl deploy Create a Worklight application (to manage the application)
  • 14.
  • 15.
  • 16.
  • 17.
  • 18. Worklight Server: Adapters Worklight Server SQL / JDBC ESB SOAP / HTTP JMS CAST IRON REST Java Extension Node* For the server developer • JS anywhere: Simple APIs for server-side JavaScript development • Extensibility: Java API for custom adapters For the client developer • Easy-to-use, consistent client-side API to call any back-end system Enterprise back-ends and cloud services Run time • Lightweight server-side logic to expose data in a mobile-friendly way • Automatic JSON transformation of enterprise data for quick transport and ease of consumption by mobile developer • Server-side service composition to reduce requests over slow mobile network • XSLT to reduce fat SOAP responses • Security • Automatic enablement of server-side authentication control and audit • Analytics • Automatic collection of user actions and device and app properties • Mobile user engagement • Push notifications
  • 19. public async Task<String> InvokeTransferFunds(string acctFrom, string acctTo, string amount { WorklightProcedureInvocationData invocationData = new WorklightProcedureInvocationData("HttpMyBankAdapter", "getTransferFunds", new object[] {acctFrom, acctTo, amount}); WorklightResponse task = await client.InvokeProcedure(invocationData); if (task.Success) { : } } Invoke an Adapter method from Xamarin
  • 20. function getTransferFunds (acctFrom, acctTo, amount) { : if ((1*amount) > 0) { users[index].accts[f].balance = users[index].accts[f].balance - amount; users[index].accts[t].balance = (1*users[index].accts[t].balance) + (1*amount); result = true; } : path = getPath(interest); var input = { method : 'get', returnedContentType : 'xml', path : path }; return WL.Server.invokeHttp(input); } Implement Adapter methods to driver enterprise integration and implement common server side logic
  • 21. Modify Adapter configuration <displayName>MyBankAdapter</displayName> <description>MyBankAdapter</description> <connectivity> <connectionPolicy xsi:type="http:HTTPConnectionPolicyType"> <protocol>http</protocol> <domain>rss.cnn.com</domain> <port>80</port> </connectionPolicy> <loadConstraints maxConcurrentConnectionsPerNode="2" /> </connectivity> <procedure name="getDriveLogin"/> <procedure name="getAccounts"/> <procedure name="getTransactions"/> <procedure name="getTransferFunds"/>
  • 22. $ wl add adapter MyBankAdapter –-type http $ subl adapters/MyBankAdapter/MyBankAdapter-impl.js $ wl build $ wl deploy Create and implement desired adapter procedures
  • 23. Invoke the Adapter interactively laptop:XTest gregtruty$ ] Which adapter do you want to use? (Use arrow keys) HTTP HttpMyBankAdapter ❯ MyBankAdapter SQLMyBankAdapter [?] Which procedure do you want to invoke? (Use arrow keys) getDriveLogin ❯ getAccounts getTransactions getTransferFunds [?] Enter the comma-separated parameters: Invoking MyBankAdapter:getAccounts... Arguments: [ "Greg” ] Invocation result: { "isSuccessful": true, "accts": [ { "balance": 8247.22, "number": "182729382", "type": "Savings” }, { "balance": 1452.23, "number": "582729382", "type": "Checking” } ] } wl invoke “Greg”
  • 24. Invoke the Adapter directly laptop:XTest gregtruty$ wl invoke MyBankAdapter:getAccounts '"Greg"' { "isSuccessful": true, "accts": [ { "balance": 8247.22, "number": "182729382", "type": "Savings" }, { "balance": 1452.23, "number": "582729382", "type": "Checking" } ] }
  • 25. Automatic adapter generation for SOAP and SAP NetWeaver • Speed-up creation of mobile apps which interact with Enterprise back- end system of records • Reduce the amount to coding to zero or near-zero for invoking SOAP based web services and services from the SAP NetWeaver Gateway • Consume these services via the generated adapter from your web, hybrid, or native app
  • 26. Unified Push Notifications Register for, notify, and receive a notification via Worklight APIs Back-end System Back-end System Back-end System Back-end System Polling Adapters Message- based Adapters Unified Push API Notification State Database User-Device Database iOS Dispatcher Android Dispatcher Windows Phone Dispatcher SMS Dispatcher Apple Push Servers (APN) Google Push Servers (GCM) Microsoft Push Servers SMS/MMS Brokers Administrative Console Notification statistics, SMS subscription control Worklight Client-side Push Services iOS Push API Android Push API Windows Push API Broker API Worklight Client-side Push Services Worklight Client-side Push Services Optional 2-way SMS
  • 27. Recent Push notification enhancements in Worklight Foundation Group notifications based on tags  Notifications are targeted to only a select set of users based on their topics of interest  Tags allow message producers / senders to segment devices  One or more tags can exist per application  Defined in application-descriptor.xml – created during deployment Broadcast, unicast and narrowcast notifications  APIs available to send a notification to all the devices that installed the application  Also provides for an option to opt out of receiving broadcast notifications  Enhanced APIs to send a notification to specific user or device that installed the application  Support for a notification targeted to devices of a particular platform that installed the application  Server side REST APIs for device and subscription management  Improved scalability of the push infrastructure to handle large volumes of push messages
  • 28. Application Security Security Application Security Protecting data on the device Authentication integration framework Data protection realms Using device id as 2nd factor Code obfuscation SSL with server identity verification Proven platform security App authenticity testing Compatible with Jailbreak /malware detection Secure challenge- response on startup Encrypted offline cache Offline authentication Enforcing Security Updates Remote disable Direct update  Security for enterprise application is the biggest concern of CTO’s  Rich Worklight security features can now be used
  • 29. Worklight security – concepts Security Tests A security test defines a security configuration for a protected resource Authentication realms Resources are protected by authentication realms. Authentication processes can be interactive or non-interactive. Authenticators and login modules An authenticator collects client credentials. A login module validates them.
  • 30. Adapters can point to security tests <displayName>MyBankAdapter</displayName> <description>MyBankAdapter</description> <connectivity> <connectionPolicy xsi:type="http:HTTPConnectionPolicyType"> <protocol>http</protocol> <domain>rss.cnn.com</domain> <port>80</port> </connectionPolicy> <loadConstraints maxConcurrentConnectionsPerNode="2" /> </connectivity> <procedure name="getDriveLogin” securityTest="Adapter-securityTest” /> <procedure name="getAccounts” /> <procedure name="getTransactions” /> <procedure name="getTransferFunds” />
  • 31. Security configuration is under the project <securityTests> <customSecurityTest name="Adapter-securityTest"> <test realm="SampleAppRealm" isInternalUserID="true"/> </customSecurityTest> </securityTests> <realms> <realm name="SampleAppRealm" loginModule="StrongDummy"> <className>com.worklight.core.auth.ext.FormBasedAuthenticator</className> </realm> </realms> <loginModules> <loginModule name="StrongDummy"> <className>com.worklight.core.auth.ext.NonValidatingLoginModule</className> </loginModule> </loginModules>
  • 32. Code up the client-side challenge handler public override void HandleChallenge(WorklightResponse challenge) { Console.WriteLine ("We were challenged.. so we are handling it"); Dictionary<String,String > parms = new Dictionary<String, String> (); parms.Add ("j_username", "worklight"); parms.Add ("j_password", "password"); LoginFormParameters = new LoginFormInfo ("j_security_check", parms, null, 30000, "post"); shouldSubmitLoginForm = true; }
  • 33. Configure on the connect to Worklight public async void Connect(){ //lets send a message to the server client.Analytics.Log("Trying to connect to server",metadata); ChallengeHandler customCH = new CustomChallengeHandler (appRealm); client.RegisterChallengeHandler(customCH); WorklightResponse task = await client.Connect (); //lets log to the local client (not server) client.Logger("Xamarin").Trace ("connection"); //write to the server the connection status client.Analytics.Log ("Connect response : " + task.Success); //return task; }
  • 34. Device Single Sign-On (SSO) • Enables a mobile user to authenticate once and gain access to all apps from the same organization (technically, with the same developer certificate) without re-authenticating. • Integration with DataPower, ISAM, and other gateways App 1 secureMobileOSkey store Worklight Server App 2 ID Session x Session y Duplicate after receiving ID from App 2 Implementation  Implemented using combination of server-side capabilities (realms) and unique device identification (device ID)  On successful login the authentication state is saved in the database and used for validations in subsequent sessions from the same device.
  • 35. Manage the Worklight applications
  • 36. Application Management • Better control of your application • Active • Active, Notifying (useful for informing users of scheduled outages or future pending updates) • Access Disabled (useful for forcing upgrades to new versions)
  • 37. Disable or Notify the end user
  • 38. Remote-controlled client-side log collection • Worklight provides Native and JavaScript API for client-side logging • Administrator defines log collection profiles on the server which are automatically retrieved by the Worklight client-side runtime • By default sent on init, resume, and 75% full – can be customized • Administrator can perform analysis and text search of client-side logs via server-side analytics console
  • 39. Unified Client and Server Analytics Out-of-the-box analytics address the following: • User adoption, device and app properties • User actions and called adapter procedures • Performance and data usage information • Exceptions, crashes, logs, response time Analytics component provided in a WAR for simple install and administration
  • 40. Service integration analytics Robust analytics for adapter usage including average response time, average data usage, and server usage statistics
  • 41. Server and Client log inspection made easy Worklight Analytics Console enables easy searching of both client and server logs
  • 42. Worklight provides C# API documentation
  • 43. Worklight Cluster Load Balancer Backend 1 Backend 2 Worklight Database Web SSO Server Corporate LAN Corporate DMZ IBM Worklight Foundation – Typical Topology
  • 44. Seek community forum/support at Stack Overflow http://stackoverflow.com/questions/tagged/worklight
  • 45. Demo
  • 46. Resources Worklight Getting Started (documentation, CLI reference, sample adapters, etc…) http://www.ibm.com/developerworks/mobile/worklight/getting-started.html Worklight CLI Download http://www.ibm.com/developerworks/mobile/worklight/download/cli.html Xamarin and Worklight information http://www.xamarin.com/ibm Worklight Support http://stackoverflow.com/questions/tagged/worklight
  • 48. © Copyright IBM Corporation 2013. All rights reserved. The information contained in these materials is provided for informational purposes only, and is provided AS IS without warranty of any kind, express or implied. IBM shall not be responsible for any damages arising out of the use of, or otherwise related to, these materials. Nothing contained in these materials is intended to, nor shall have the effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software. References in these materials to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. Product release dates and/or capabilities referenced in these materials may change at any time at IBM’s sole discretion based on market opportunities or other factors, and are not intended to be a commitment to future product or feature availability in any way. IBM, the IBM logo, Rational, the Rational logo, Telelogic, the Telelogic logo, and other IBM products and services are trademarks of the International Business Machines Corporation, in the United States, other countries or both. Other company, product, or service names may be trademarks or service marks of others.
  • 49. Invoke the Adapter interactively laptop:XTest gregtruty$ wl invoke ] Which adapter do you want to use? (Use arrow keys) HTTP HttpMyBankAdapter ❯ MyBankAdapter SQLMyBankAdapter [?] Which procedure do you want to invoke? (Use arrow keys) getDriveLogin ❯ getAccounts getTransactions getTransferFunds [?] Enter the comma-separated parameters: "Greg" Invoking MyBankAdapter:getAccounts... Arguments: [ "Greg” ] Invocation result: { "isSuccessful": true, "accts": [ { "balance": 8247.22, "number": "182729382", "type": "Savings” }, { "balance": 1452.23, "number": "582729382", "type": "Checking” } ] }