Eco system apps


Published on

  • Be the first to comment

Eco system apps

  1. 1. Ecosystem AppsINNOVATIVE CROSS-PLATFORM SOLUTIONS Sergey Seletsky Abiliton™ Senior Software Engineer
  2. 2. Agenda1. Why?2. What is an ecosystem?3. Problems?4. WinRT with HTML5 for other...5. Cross-platform frameworks • Xamarin • Titanium • Portable apps • AppMobi6. Specific integrated API7. Apps integration8. Apps Stores9. Ecosystem architecture10. Conclusions
  3. 3. What is anecosystem?
  4. 4. Enterprise App Ecosystem App Hub IT organization Windows Phone 1. Registration 1. Device Enrollment 2. Signing Tools 2. Get apps 3. Cert and Enterprise ID 1. Develop App 2. Package and signRegistration1. Enterprise registers with App Hub 3. App Catalog2. Enterprise downloads app tools3. Microsoft notifies CA of pending 4. Create Token enterprise registration4. Vets enterprise5. CA checks that vetting is complete, and generates a certificate for enterprise
  5. 5. Why ?
  6. 6. Smartphone Market Share Platforms Google Apple Microsoft RIM
  7. 7. Native Wrappers• Phonegap• Titanium• appMobi• Create native apps using HTML5• Provide API’s (Hooks to get out of the sandbox)• Work across platforms (mostly)• Can be submitted to app stores
  8. 8. Cross-Platform Devices• Phones – iOS – iPhone, Touch – Android – Blackberry – Windows Phone 7• Tablets – iPad – Android
  9. 9. Mobile Capabilities That Influence Apps• GeoLocation • Bluetooth• PIM Contacts • Calendar• Camera • Push• Barcode • Screen Rotation• Date/Time Picker • Native Maps• Native Menus • Alert• Tab Bar • Audio File Playback• Navigation Bar • Ringtones• Signature Capture • NFC
  10. 10. Cross-platform frameworks 1. Xamarin 2. Titanium 3. Portable apps 4. AppMobi 5. PhoneGap
  11. 11. Xamarin
  12. 12. Asynchronous code beforeMyApi.OnSomeMethod += () => { InvokeOnMainThread( (result) => { textView.Text = result; });}MyApi.SomeMethodAsync();
  13. 13. async/awaittextView.Text = await MyApi.GetUrlAsync( “”);
  14. 14. С# vs Objective-CObjective-C:// … [button addTarget:selfaction:@selector(touchHandler:) forControlEvents:UIControlEventTouchUpInside];// …-(void) touchHandler:(id)sender { textView.text = @"some text";}
  15. 15. С# vs Objective-CC#:btn.TouchUpInside += (s, e) => { textView.Text = "Clicked!";};
  16. 16. C# vs JavaJava:button.setOnClickListener( new View.OnClickListener() { public void onClick(View v) { textView.setText(“Clicked”); } });
  17. 17. C# vs JavaC#:button.Click += (s, e) { textView.Text = “Clicked!”;};
  18. 18. C# vs {0}• Simply• Cleaner• Develops very quickly• From Java sand pours• [[[[After Objective-C] world : square] as: very] and all: in the colon];
  19. 19. What is Monotouch• Mono framework with AOT compilation for ARM processors and Bindings to Native API• Code is written in C #• UI is native tongue, through C # wrapper• Development environment Visual Studio
  20. 20. Compilation process• Compile your code, libraries, BCL, wrappers over native methods in IL• You can use any language IL• Converted into machine code using AOT compilation• Added to app code with Mono Runtime and everything else
  21. 21. AOT vs JIT• Usually in. Net and Mono native code generated at run - Just In Time compilation• In iOS you can not compile code on JIT, only static linking• But we already know the architecture (ARM) so you can compile the code in advance - Ahead Of Time compilation
  22. 22. Restrictions AOT• No Emit, but remains Reflection• Some specific designs will not work, because compiled on JIT• Generic Virtual Methods – P/Invokes in Generic Types – Some LINQ expressions
  23. 23. Linking• At time of compilation of IL BCL undertakes only code that is actually used• Similarly, you can cut out unused code in their libraries• Need to reduce the size of app
  24. 24. C# API• Subscribe to Events• Setting Properties• Familiar namesvar btn = new UIButton(new RectangleF(0, 0, 200, 80));btn.Enabled = true;btn.SetTitleColor(UIColor.FromRGB(255, 255, 0), UIControlState.Selected);btn.TouchUpInside += delegate { // your code};window.Add(btn);
  25. 25. Wrappers over native methodsMonotouch:• It all comes down to P/Invoke method objc_msgSend with the appropriate parametersMono for Android:• Used JNI (Java Native Interface)
  26. 26. Wrappers over native methodspublic virtual bool Enabled{ [Export("isEnabled")] get { // … returnMessaging.bool_objc_msgSend(base.Handle, UIControl.selIsEnabled); } [Export("setEnabled:")] set { // … Messaging.void_objc_msgSend_bool(base.Handle, UIControl.selSetEnabled_, value); }}
  27. 27. App Structure• Virtually same in native app• AppDelegate, UIWindows, ViewControllers• To describe UI also uses nib files
  28. 28. Development environment – Visual Studio
  29. 29. Cross-platform• Sharing in 30-60 percent of the code• Combining basic mobile functionality• There are various MVVM frameworks Xamarin Titanium PhomeGap Shared Specific Shared Specific Shared Specific
  30. 30. Use of opportunities of Windows OSWin32 APIVista BridgeWindows Bridge.NET Framework – Windows Presentation Foundation – Windows Communication Foundation – Windows Workflow Foundation
  31. 31. Windows 8 platform
  32. 32. Installation Store Apps
  33. 33. Transitions between states App are given several App is not notified seconds to sleep User TerminatedLaunches Low Resources App App App is notified with continued Splash screen App not running
  34. 34. Process isolation
  35. 35. Language projectionIInspectable C++ App IUnknown Projection C#/VB App Object Projection CLR HTML App Projection Chakra Windows Metadata
  36. 36. IInspectable Collections IUnknown C++ App STL-style IVector<T> Projection IVectorView<T> Array IObservableVector<T> C#/VB App IEnumerable CLR (T) style ProjectionIInspectable IUnknown HTML App IMap<T> Chakra JavaScript Projection Associative IMapView<T> Collection IObservableMap<T>
  37. 37. Asynchrony in Windows 8• All that is more than 50 milliseconds – asynchronously• Windows Runtime: IAsyncOperation<T>• JavaScript: Promises• C++: Parallel Patterns Library• VB/C#: async /await
  38. 38. ThreadingWindows Windows Windows UI Object Object Object App Code App Code App Code
  39. 39. Architecture WinRT Metro App Language Support (CLR, WinJS, CRT) Language projection UI Pickers Controls Media Web Host (HTML, CSS, JavaScri XAML Storage Network … pt) WindowsMetadata &Namespace DirectX Windows Runtime Core Runtime Broker Win32 Windows Core
  40. 40. Runtime appYour App Direct API calls Process.exe WinRT APIs Core OS Brokered API calls Broker App Container + Signed & Validated code AppXManifest
  41. 41. Brokered Objects RuntimeBroker.exe App Projection Proxy WindowsRuntime Object
  42. 42. Windows Runtime APIs User Interface HTML5/CSS XAML DirectX Controls Data Binding SVG Tiles Input Accessibility Printing Devices Communications & DataGeolocation Portable Sensors NFC Contracts Local & Cloud Storage Web Media Notifications Streams Memory Playback Capture PlayTo Visual Effects XML Networking SMS Management FundamentalsApplication Services Threading/Timers Memory Management Authentication Cryptography Globalization
  43. 43. Sensors Accelerometer Gyroscope CompassAgitation Turn Overturning Slope LightIn dark Indoors Outdoors Orientation
  44. 44. Areas of integrationOn Windows OS Together With cloudLive tiles Contracts : SynchronizationNotifications app settings • SearchContracts • Share Live SDKSettingsPrint…
  45. 45. Pop-up notifications Toast NotificationsShow messages from apps and services outside the UI appsAttract attentionIs disconnectedAllow the user to go directly to the section of the appInitiated locally or from cloud
  46. 46. Windows Push Notification Service Windows 8 Cloud ServiceServes pop-up notifications and update live tilesexternal services MetroTile updated and notifications are working even when Style 2not running app AppTakes control of communications devices 1 3 Windows Push NotificationScaled without you Notification Service Client 3 PlatformFree 1. Request for URL notification channel 2. Service registration 3. Notifications
  47. 47. Contracts - part of a large family• App to App Picking contract• Contact Picker• File activation• Play To contract• Print task settings• Protocol activation• Search contract• Settings contract• Share contract
  48. 48. How does this work Source app Share Broker Target apps Registration User selected DataTransfer Manager “Share”Activation DataPackage Filter apps or links Activated User has selected a ProcessingAsynchronous processing target DataPackage App start-goal Completion ReportDataPackage in source app
  49. 49. Unprecedented coverage
  50. 50. Income distribution 70% new applications 80% once you do $25,000
  51. 51. Best economy To generate $ 1 million profit Price: $4.99 ~250,000 sales0.05% users Windows from 500+ Windows 7
  52. 52. Azure Service Bus • Unified set of messaging capabilities Consistent management and observation capabilities • Service Bus Relay • Rich options for interconnecting apps across network boundaries • Service Bus Brokered Messaging • Queuing, publish/subscribe • Easily build hybrid apps • Available as PaaS & on-premise server
  53. 53. Conclusions
  54. 54. Thank you!