As a proof of concept I wanted to give a try of using Uno Platform and XPO together. Uno has been gaining popularity and I have to say that after this I will have a tough decision on the framework selection for my next mobile project. I love Xamarin but the benefits that Uno brings to the table are hard to pass.
From their own website:
Uno-built native apps can be compiled to WASM with no additional development efforts!
Ramp up time is minimal and you can take advantage of all that the Visual Studio ecosystem has to offer for testing, deploying, project management, and more.
What that means to us?
First, A web front end thanks to web assembly (I honestly don’t know why Xamarin has not invested in this route yet. Besides Ooui that I believe it is awesome but not even close to production, there is nothing else out there)
Not showing in the teaser: Multiple IDataStore implementation to support multiple databases in the same application.
I am really happy about this template. I believe it will save a ton of time. As always feel free to reach out with any question/suggestion or if you are struggling trying to make your XAF project mobile.
For the Xamarin Saturday on August 24 I traveled to Toronto, as we all know from my last post. One thing I did not mention there because I wanted to have a special post just for this was that I had the opportunity and honor to finally meet in person Dave Hesketh and Adam Latimer current DevExpress MVPs.
I want to say thanks to both for making the trip from Orangeville. I have been following their work for a couple years already and my XAF POS Teaser includes code from their Free Modules.
The new XPO tutorials for ASP.NET Core MVC and Razor Pages with DevExtreme are out so of course I could not wait to test them out. I followed their instructions here and had them running in no time. And it was a beauty but that is not what this article is about. Going trough the source code I stumbled upon this:
unitOfWork.GetObjectByKeyAsync and it reminded me of a mini series I have been wanting to do for a long time. I had a lot of support tickets bookmarked it for this so I guess it is finally time. The article ORM Hate from Martin Fowler which I just recently re-read was also a clear trigger to finally get it done (or at least start it).
If you have used DevExtreme Project Templates to create mobile apps you know how fast and easy you can get a simple solution working. With just passing the Url of your OData service on the wizard all the views for your entities are generated in a master- detail way. This is a great solution when you need to give access to some data to your users without having to create views, models, bindings, etc. It is all created for you, it is quick and more important, it works. But as a C# developer that is the end of my road. If I have to do any customization at all I then move to Xamarin where I feel more at home.
As an advocate for XAF, XPO, Xamarin and Azure I am constantly reading articles, tutorials, youtube videos and anything I can get my hands on about those topics and a while back I read a great article by Charlin Agramonte: Learning Xamarin Forms – The XamGirl personal recipe where she goes over her personal formula for learning Xamarin. I liked so much I even put it in my quick overview of XPO in Xamarin (expect part 2 and 3 coming soon) and got me thinking what a great way of jump start our learning process and having a lot of great content in a single place.
“Faith is taking the first step even when you don’t see the whole staircase.” – Martin Luther King
When I first started with XPO I could swear there was something magic involved in how it was handling my data. I had no idea what was going on, but I knew that if I derived my classes from XPObject or BaseObject (if you use XAF), I automatically had my classes turned into tables in a database of my choosing, I had an autogenerated Built-in OID key, Deferred Object Deletion, and Optimistic Locking. And honestly, that was all I care about. If I wanted to use a different database; it was as simple as changing my connection string.