XAF - Blazor UI Progress and Future Plans

XAF Team Blog
15 November 2019

Here is our first XAF Blazor (Server Side) demo: https://www.devexpress.com/go/XAF_Blazor_Demo.aspx 

It demonstrates straightforward CRUD usage scenarios. Feel free to test its capabilities within a modern desktop or mobile browser.

For more information, see our online documentation.

How It Works

XAF automatically generates this simple UI and database based on the following ORM data model.
using System;
using DevExpress.Xpo;
using DevExpress.Xpo.Metadata;
using DevExpress.ExpressApp.DC;
using DevExpress.Persistent.Base;
using DevExpress.ExpressApp.Model;
using DevExpress.Persistent.BaseImpl;

namespace BlazorDemo.Module.BusinessObjects {
    [DefaultClassOptions]
    [XafDisplayName("Note")]
    [XafDefaultProperty(nameof(Subject))]
    public class DemoNote : BaseObject {
        public DemoNote(Session session) : base(session) { }
        private string _Subject;
        public string Subject {
            get { return _Subject; }
            set { SetPropertyValue<string>(nameof(Subject), value); }
        }
        private DateTime _CreatedOn;
        [ModelDefault(nameof(IModelCommonMemberViewItem.AllowEdit), "False")]
        [ValueConverter(typeof(UtcDateTimeConverter))]
        public DateTime CreatedOn {
            get { return _CreatedOn; }
            set { SetPropertyValue<DateTime>(nameof(CreatedOn), value); }
        }
        private DateTime _LastModified;
        [ModelDefault(nameof(IModelCommonMemberViewItem.AllowEdit), "False")]
        [ValueConverter(typeof(UtcDateTimeConverter))]
        public DateTime? LastModified {
            get { return _LastModified; }
            set { SetPropertyValue<DateTime?>(nameof(LastModified), value); }
        }
        private string _Owner;
        [ModelDefault(nameof(IModelCommonMemberViewItem.AllowEdit), "False")]
        public string Owner {
            get { return _Owner; }
            set { SetPropertyValue<string>(nameof(Owner), value); }
        }
        private string _Description;
        [Size(SizeAttribute.Unlimited)]
        public string Description {
            get { return _Description; }
            set { SetPropertyValue<string>(nameof(Description), value); }
        }
        public override void AfterConstruction() {
            base.AfterConstruction();
            CreatedOn = DateTime.Now;
            LastModified = DateTime.Now;
            Owner = "BLAZOR Demo User";
        }
        protected override void OnSaving() {
            base.OnSaving();
            if(!Session.IsNewObject(this)) {
                LastModified = DateTime.Now;
            }
        }
    }
}

It uses eXpress Persistent Objects (XPO), but we will support Entity Framework in the future. For more information on how XAF works, refer to Getting Started.

Future Plans

By the end of 2020, we hope to give XAF users a stable platform on which to build Blazor-powered apps (with full CRUD capabilities and core modules like Security and Validation). As you’d expect, usage scenarios will be partly driven by the scope and breadth of the DevExpress Blazor product line. To help clarify our vision, we will build a Blazor demo inspired by its ASP.NET WebForms counterpart (MainDemo) - expect more updates from us in the coming months.

Blazor Server Today, Blazor WebAssembly is for the Future

As you know, our decision was relatively simple: Blazor Server is ready for production while Blazor WebAssembly is in preview (learn more from Microsoft). Blazor WebAssembly is also hampered by a few performance issues.

Scenario
(Desktop / Mobile)

Server Side 

WebAssembly

App Start 

2 sec / 6 sec

6 sec / 46 sec

Open List View 

< 0.5 sec / < 0.5 sec

2 sec / 7 sec

Open Detail View 

< 0.5 sec / < 0.5 sec

1 sec / 7 sec

In addition to performance, Blazor WebAssembly involves more complicated development paradigms for existing XAF users. For instance, you need to consider client and server communications, use asynchronous APIs with IObjectSpaceAsync, ActionBase.ExecuteAsync, etc.

Anyway, we will certainly monitor the progress of Blazor WebAssembly and reconsider our strategy when necessary. So far, we have not done anything that would prevent a potential switch from one hosting mode to another.

Your Feedback Matters

To engage us and discuss XAF’s vision, roadmap and technical requirements, please use our private XAF discussion forum (exclusively for Universal customers). The forum also includes a known issues list for this pre-alpha release.

Feel free to comment below or email us at xafteam@devexpress.com for more information.

Showcase Your Apps on DevExpress.com

Highlight your business app and share your development experiences with the DevExpress community. To include your app in our upcoming App Showcase, please forward an application screenshot to clientservices@devexpress.com and tell us which DevExpress products you currently use within your organization.
33 comment(s)
Bunty
Bunty

Great work guys. +1

15 November 2019
Chris Royle (LOB)
Chris Royle (LOBS)
Looks positive.
15 November 2019
Krzysztof Krzysztof (LOB)
Krzysztof Krzysztof (LOBS)
Looking forward to seeing bigger and bigger feature / module coverage. Thank you guys! You are doing a great work.
15 November 2019
Manuel Grundner [DevExpress MVP]
Manuel Grundner [DevExpress MVP]
Awesome word Guys! Can't wait to get some of this in my hands :)
15 November 2019
Gustavo Marzioni
Gustavo Marzioni
Great news! ++1
15 November 2019
Mustafa Cagri Altindal
Mustafa Cagri Altindal
Good news. 
15 November 2019
Debeściak
Debeściak
Nice! Great work.
15 November 2019
Kartal TURGUT
Kartal TURGUT
+1
15 November 2019
Sven Glöckner 1
Sven Glöckner
Thumbs up!
15 November 2019
Paolo KALC
Paolo KALC
+1
15 November 2019
Norbert K.
Norbert K.
+1
15 November 2019
Linton
Linton
+1 We're pleased you've chosen the Blazor path for XAF. Kudos to the Blazor and XAF teams.
15 November 2019
Reinhold Erlacher
Reinhold Erlacher
Great news! Great work! Your first demo looks very promising! 
16 November 2019
Eyüp Alemdar
Eyüp Alemdar
+1
16 November 2019
John E. Salichos
John E. Salichos
Fantastic!
16 November 2019
Stephen Le Cornu 1
Stephen Le Cornu 1

Looking good, but a year is a long time in IT.

I appreciate there is a fair amount of work in converting code, but who knows where Blazor will actually be in 12 months.

Can you release some interim work?

I will happily work with a Beta, and I am sure plenty of others would too.

CRUD on XPO for custom tables with the same component set that you already have demo'd on Blazor, would be an excellent start.

16 November 2019
Konstantin Balashov
Konstantin Balashov
+1
17 November 2019
Peter CaoZheng
Peter CaoZheng
+
17 November 2019
L Alex
L Alex
Great work guys. +1
17 November 2019
Marc Greiner (DevExpress MVP)
Marc Greiner (DevExpress MVP)

Your Blazor Server Mode demo looks great!
Thank you for sharing it with us!

Could you maybe blog about a comparison/review of the advantages/drawbacks of a XAF app developed with :
1) Blazor server
2) ASP.NET WebForms
3) XAF WinForms

For example, compare following topics/features:
- How easy it is (or will be) to:
* access the UI controls through a XAF controller in each technology.
* customize templates.
* define action containers.
* extend an action (for example create a ChekableAction, a date range selector, etc.).
- Implement drag and drop between two grids.
- Speed (performance).
- Available XAF modules.
- Specific technology limitations/difficulties.
- ...

18 November 2019
Bassam Abdelaal
Bassam Abdelaal

Really fast at mobile browser ! , great work ++1

looks very promising

18 November 2019
Isa_Tahiri
Isa_Tahiri
Great work!!! 
It would be nice to have a monthly statement via this blog plateform or the private discussion on your improvements! Every XAF developper is following this major change I think! 
18 November 2019
Customer109543
UR-IT

link broken ...

The forum you requested does not exist.

20 November 2019
Dennis (DevExpress)
Dennis (DevExpress)
@Customer109543: This forum link is for Universal customers only.
20 November 2019
Dennis (DevExpress)
Dennis (DevExpress)
@Stephen Le Cornu, Marc Greiner: This is certainly something we would love to cover in the next series. We will publish demo source and installers with the Solution Wizard once ready - please stay tuned. For now, our focus is to support default XAF Property Editors.
21 November 2019
Julio
Julio
Excellent +1
22 November 2019
he dandan
he dandan

wonderful.

but long time to wait...

8 December 2019
Kartal TURGUT
Kartal TURGUT

+1


23 December 2019
ZhangJiawei
ZhangJiawei
Great
27 December 2019
Nafis Suhari
Nafis Suhari

Can't Wait it, when it will be POSSIBLE to realize ?

11 January 2020
Anatol (DevExpress Support)
Anatol (DevExpress Support)
Nafis, we appreciate your interest. You can find our release plans in the eXpressApp Framework Roadmap 2020 - Your Vote Counts post.
13 January 2020
CRM-7b0e9948-8759-4309-9769-518de90f61c1
Alexandros Pappas 1
Can we have the source code of the demo?
23 March 2020
Dennis (DevExpress)
Dennis (DevExpress)
@Alexandros Pappas: You can download the demo code here and use it with our early preview v20.1
23 March 2020

Please login or register to post comments.