Use MonoDroid / MonoTouch to reuse DataAccess in Mobile Application - sqlite

We have a .net desktop application that has a mobile component (Windows Mobile). The mobile component edits a specific subset of the system data. We would like to create an iPhone and Android version of this mobile app.
Is it possible to use MonoTouch and MonoDroid to compile a 'dll' in each of the respective environments which handles data access, so the apps can be written in the native environment but share the same data behavior? Basically, just focus on UI.
We are planning on using SQLite as the database, since it runs on all platforms, but we don't want to have to write the DDL and queries 3 times.

Yes. Use Mono.Data.Sqlite, which is included with both MonoTouch and Mono for Android, and provides an ADO.NET interface atop the native sqlite library.
On the Android side of things, I have found that Mono.Data.Sqlite is most stable with Android v2.2 and later (API level 8+), though others have reported that Android v2.1 works for them.

Related

Qt mobile app client w/ SignalR .NET server

I'm planning to build Web application and use the SignalR library to allow web admin to chat with other users (use Mobile application)
1- System admin uses Web Application built by Asp.net Boilerplate (.NET Core 3.1).
2- other users use Mobile Application built by (Qt Mobile application )
So, Is this scenario applicable with the SignalR library, or I will encounter some limitations especially with QT Mobile application?
Update:
Why I want this approach?
Because I'm using Esri QML SDK (in Mobile App)
I am not familiar with QT Mobile Application development, however I looked for it and understood that the language of development is C++.
Based on this, here is a client lib for SignalR in C++. You can use this lib to connect to c++
Click Here
Also, I wish to bring attention to an official documentation from Microsoft that states that C++ & Swift are unofficially supported framework.
Link
I have not used SignalR before. However, Qt provides its own websocket QML client component as well as a server one, they have a client example here and a server example here should you want to see how the client component interacts.
I have used the QML websocket with a NodeJs websocket server and it presented no problems at all.
Creating a simple working environment should be no problem, Qt provides its own simulator with their IDE, just copy the client example, change the link to point to your server and give it a shot.
If you haven't got this up and running by now, I'll suggest you would take a look at signalr-qt. We have been using this for several years now, with Qt apps for iOS, Android and Windows desktop. Unfortunately it is not maintained anymore, but we've been running it in production apps using Qt 5.6, Qt 5.12 and Qt 5.15.

Is UWP/Xamarin ready for enterprise applications?

Is UWP or Xamarin is usable for enterprise applications like CRM, ERP, etc...
Is the any sample on market, or there are any patterns?
These platform are firstly mobile platforms, but they had a excellent support, a lot of graphically possibility and very modern look and feel. These platform are designed for mobile application in first line, but they are ready for enterprice applications?
Of course the are lot of extension in built control (DataGrid, Charts) which makes possible to create enterprise application. But I did not find any. Is there and problem or drawback of this platforms?
Thank you
Is UWP/Xamarin ready for enterprise applications?
The answer is yes. Xamarin UWP applies not only to mobile platforms but also to desktop platforms(Windows 10). You could also run it in the desktop client. This benefits from the native universal window platform.
For pattern, there many pattern you could select such as publish-subscribe MVVM etc. For more you could refer Enterprise Application Patterns using Xamarin.Forms.
For enterprise publish, you could think of Xamarin UWP application as UWP application, and Distribute LOB apps to enterprises document has described the details of publish process.
And this blog describe the possibility of Xamarin.Form enterprise application that you could refer.

How to develop cross platform apps with Flex?

I have been throught a lot of reading and the whole thing is becoming only more confusing so I decided to ask you some stuff about Flex.
So, Flex can run in a webpage if you have Flash plugin in your browser, in an AIR container (on pc/android/IOS, but on OSX ?) and also can compile to Native IOS/Android app.
I am not sure about the last point.
If it is possible, how can I build a flex app that would run in browser with flash plugin and also be compiled to Android and IOS (and maybe Windows RT) ?
Adobe gives you Flash builder, do you also need the Flex SDK ? Is it doable with the Eclipse Flex plugin ?
Thank you for your help and sorry if it is a bit messed up.
So, Flex can run in a webpage if you have Flash plugin in your
browser, in an AIR container (on pc/android/IOS, but on OSX ?) and
also can compile to Native IOS/Android app. I am not sure about the
last point.
This is mostly correct. Flex can run in a web page using the Flash Plugin, which is widely available on desktop browsers. For all intents and purposes, you should assume your mobile users do not have a Flash Plugin installed on their mobile browsers.
It is true using AIR you can create desktop applications for PC and Mac; OSx is indeed supported. You can also use AIR to create Mobile applications on Android, iOS, and Blackberry Playbook. So, iOS is indeed supported. Windows 8 UI/Metro support for AIR is expected 1st quarter of this year. I suspect we'll also see AIR support for Blackberry 10; but nothing has been formally announced that I'm aware of.
Update: 3/2014
Adobe has abandoned plans for Windows 8 UI / Metro support. Windows Phone 8 support is a very common feature request, though, so vote for it if you want it.
BlackBerry 10 does indeed support Adobe AIR. Here is a link to the SDK.
If it is possible, how can I build a flex app that would run in
browser with flash plugin and also be compiled to Android and IOS (and
maybe Windows RT) ?
Flex is primarily a framework for creating business applications. A slightly different component set is offered for desktop applications and mobile applications. Part of this is due to screen size; and part due to performance. A big DataGrid with dozens of columns, for example, is not conducive to the screen size of your mobile phone.
Update 3/2014:
A mobile optimized DataGrid was donated to the Apache Flex Team, and it should be available in current versions of the SDK.
In the end; you should not plan on using the same exact application for both your Desktop/browser app and the mobile app. But, you can share some amount of code. I would target to share 80% of the code. Move the shared code into a library project; which you can then use on both your mobile application, your desktop application, and your browser based application.
Adobe gives you Flash builder, do you also need the Flex SDK ? Is it
doable with the Eclipse Flex plugin ?
Flash Builder is shipped with the Flex SDK. And Adobe Flex ships with the AIR SDK [Note: Apache Flex does not ship w/ the AIR SDK due to licensing differences; but there is a handy installer]. Flash Builder, also, is an Eclipse plugin and can be installed into any eclipse instance you wish.
You do not need Flash Builder to create a Flex Application. You can use command line tools and other IDEs, such as IntelliJ, if you prefer.
Using Flash Professional, you can package and export to a number of platforms using AIR. You can port to both Android or iOS (as a native app), in addition to creating a .swf file that can be embedded onto a webpage - all using the one application (go 'File' > 'Publish Settings' then change the player target).
I'm not sure whether the same options are available in Flash Builder, (appears to be possible -
adobe website) but not other IDE (such as Eclipse) or framework should be needed.
You may want to consider an alternative development and deployment strategy depending on your requirements, e.g. PhoneGap which should offer support for a greater number of devices.

adobe air vs flex vs flash builder --- i need an explanation please

Can someone explain to me the difference between Adobe Air, Flex, and Flash Builder?
I went to the Adobe website and it said that with Air I can build standalone apps for the desktop or mobile. They said the same thing with Flex.
It said Flash Builider is an Eclipse based development tool. What does THAT mean? And then it said that I could again build applications for the desktop and mobile.
There is so much overlap, I don't really understand what first to learn and what direction to take. (I know Flash and AS2 & AS3 very well.)
What is Flex
Flex is a powerful, open source application framework that allows you to easily build mobile applications for iOS, Androidâ„¢, and BlackBerry Tablet OS devices, as well as traditional applications for browser and desktop application.
Flex has different SDK Version, more details
The Flex SDK contains hundreds of out-of-the-box components. DataGrids, Charts, Formatters, Validators, and numerous other UI controls are the building blocks for applications of all sizes. Components can be styled and skinned to fit the look and feel you want. There are also hundreds of third party open source and commercial components available for Flex. Mapping APIs, Data Visualization libraries, and Cloud APIs provide the building blocks for assembling great applications.
You will use the following two languages two develop flex applications.
1 . MXML is an XML-based markup language that is primarily used to layout application display elements.
2 . ActionScript is an ECMAScript-compliant object-oriented programming language that is primarily used for application logic
What is Flash Builder
Flash Builder is an enterprise-class Eclipse-based IDE to develop Flex applications.
Flash Builder includes state-of-the-art productivity features (code assist, refactoring, etc),
on-device debugging, and mobile simulators that allow developers to test their applications
on different screen sizes and densities. Flash Builder allows developers to package native
application files (ipa, apk, bar) for release on the Apple App Store, Android Marketplace,
and BlackBerry App world.
What is AIR
Adobe AIR is a cross-operating system runtime that enables you to use your existing ActionScript or HTML/JavaScript development skills and tools to build and deploy rich Internet applications (RIAs) outside the browser(Desktop) and on mobile devices.
It's very easy:
Adobe Air is a Flash Runtime for desktops and mobile devices. In other words, Flash applications use, and need it to work in the desktop or in mobile devices. This would be the equivalent to the Flash Player that you use in your web browser every day.
Flex is a framework that provides you with a set of user interface components, containers and utilities that make it easier to develop visual applications.
Flash Builder is the software you use to edit the code, to "compile" it, to test it, to debug it...
Starting from flash, Inventor of RIA(Rich internet applications). First came as a much designer friendly platform where the users can develop some cool animations and banners. Become a big success. Then making the animation interactive like listening for end users actions through keyboard and mouse added a programming language (Actionscript).
Flex a much developer friendly tool, which felicitate the development of rich internet applications in the beginning, They put Flex SDK(Software Development Tool) along with flex which makes the application development much easier.
Adobe AIR is a flash runtime running on your desktop and mobile devices, making the same user experience and to allow the developers to create multi platform desktop applications and giving some sort of access to the developers to the os level. Later on have put their effort in Mobile devices and put forward an idea of creating cross platform applications for mobile devices.
In a nutshell.
Flex can be considered as a development toolkit for for the Flash Player.
AIR is a runtime environment that enables you to run your application on the desktop/mobile device.
Flash builder is a development tool for creating applications

Is sqlite db file available under any platform?

For example, can I generate a SQLite db file and put it as a resource in the project. When the project first launches, copy the db into isolated storage without worrying this db file may be unavailable in the phone. Furthermore, can I copy this empty db file into another platform, like android or iPhone, and operate this db by in SQLite api of the platform.
From the SQLite web site:
A database in SQLite is a single disk file. Furthermore, the file format is cross-platform. A database that is created on one machine can be copied and used on a different machine with a different architecture. SQLite databases are portable across 32-bit and 64-bit machines and between big-endian and little-endian architectures.
So yes, when you've validated that the SQLite API is available everywhere you want to use it, that should be fine as a storage format.
EDIT: And yes, SQLite does work on Windows Phone 7, using this Codeplex project or this one.
Yes. We are using the same SQLite database in an iOS, Android and WP7 app. I've written a quick start guide here: http://wirebear.com/blog/2010/11/12/using-sqlite-in-your-wp7-app
The above blog post covers copying your database from your resources to isolated storage and correctly configuring SQLite to work on your device.
The SQLite version is compatible with Android - iOS - WindowsPhone as far I have experimented. I have created SQLite DB on a Mac Desktop and copied it into projects along with data into each of these platforms. Everything worked fine no issues.
Ref:
http://www.sqlite.org/download.html
Precompiled Binaries for Windows Phone 8
sqlite-wp80-winrt-3071502.vsix (2.72 MiB)
A complete VSIX package with an extension SDK and all other components
needed to use SQLite for application development with Visual Studio
2012 targeting Windows Phone 8.0. (sha1:
4cab3fd698402bf30448c64e39001103c10ff82b)
The download page itself lists the entire code and binaries for different platforms. Using a PC/Mac for creating a DB is convenient option.
You can use SQLite manager for doing so on a Windows or Linux PC.
SQLite Manager (Preferred by Myself)
http://sqliteman.com/
There are also extensions for Chrome and Firefox, which makes SQLite Available for almost any platform to Manage them.
Firefox Plugin for managing those files.
https://code.google.com/p/sqlite-manager/
codev.it also allows to enable editing SQLite Files.
As far as DB is concerned, Exporting them from the device is as described by #Jon Skeet
SQLite 3.7 is more compatible with Windows Phone. Since SQLite DBs are backward compatible, there isn't any need to worry weather your DB works on older 2.x version or 3.x..
Hope this helps.
#Bhuro As you want a detailed procedure for using SQLite db in a Windows Phone 7 app, Here is a good post Native Database Programming via Sqlite Client for Windows Phone.
I have successfully followed the same process in my WP app. Try that and let me know if you get any doubt.
Good luck !!

Resources