XPO – New Server Mode components with lower memory consumption and improved load, sort, group and filter performance (v19.1)

28 May 2019
Our new read-only server mode components – XPServerModeView and XPInstantFeedbackView – represent mixtures of XPServerCollectionSource/XPInstantFeedbackSource and XPView for use with DevExpress Grid controls. These read-only components offer the following benefits for those using XPO:
  • Ability to handle large data sources with lower memory usage (will not load entire persistent object instance).
  • Ability to customize SELECT statements and exclude unused data columns.
  • Ability to include reference property data in the root query to avoid the 1+N problem.
  • Ability to include custom (virtual) properties that are calculated on the server side (similar to ViewProperty).

Why these hybrid components are more efficient than XPServerCollectionSource and XPInstantFeedbackSource

The design of these hybrid server components delivers improved performance when compared to our existing XPO server mode components. The following screenshot compares load, sort and filter operations and allocated memory use for XPServerCollectionSource and XPServerModelView.

We used BenchmarkDotNet in a test sample with 10K master objects. Each record consists of 5 scalar and 20 reference type properties (the reference type contained 5 scalar properties). I'd be more than happy to publish our test project should anyone wish to run their own tests.

Getting Started – How to use our new hybrid server components

If you're ready to try these new components, please refer to our existing WinForms and WPF code examples. XPServerModeView and XPInstantFeedbackView work just like XPServerCollectionSource/XPInstantFeedbackSource and XPView.

Current state and future plans

These server components are currently available as a CTP (v19.1). Documentation is incomplete and there are a few known issues. By the time we release v19.2, we expect to improve the design time experience (such as adding WinForms and WPF project wizards), support WinForms and WPF lookup editors, and complete documentation. We also hope to support these new components within XAF.
As always, we'd love to hear your thoughts. Please feel free to share you experience and let us know if you encounter issues.

Updated performance benchmarks against Entity Framework

We recently updated our https://github.com/DevExpress/XPO/tree/master/Benchmarks repro based on test executed against the latest version of EF Core 3.0 and XPO v19.1. I hope you find this information of value.

Your feedback matters!

We appreciate any thoughts you post to the comments section below and your answers to the question in the survey below. Thank you very much for your help!

Love XPO and want to help us promote it? Add the package through Nuget.org instead of DevExpress Nuget!

10 comment(s)
Manuel Grundner [DevExpress MVP]

That is awesome! <3

28 May, 2019

looks great dennis - pleased to see that xpo is getting some tlc and xaf gets a mention!

28 May, 2019
S. Wald

high five to implement into XAF!

28 May, 2019
Hedi Guizani

+5 for XAF

28 May, 2019
Alexander Krakhotko (Xafari team)

+to implement into XAF

and exclude "COUNT ()" in ServerMode

29 May, 2019
Dennis (DevExpress Support)

@XAFers: We hope to support it in v19.2. Thank you for your interest.

@Alexander Krakhotko: This Count query is important to calculate the grid's scrollbar position and cannot be avoided with these and other server mode sources.

Would you please submit a ticket in the Support Center to describe situations where this becomes a problem in your project (attach your SQL profiler logs and other supporting information)?

It is possible that VirtualServerModeSource can help in such situations, but we would need detailed information about your case before suggesting this as a solution. I must also note that VirtualServerModeSource requires more work from a developer than server mode sources.

29 May, 2019

Good work, However, these feature are not critical for my work. what is critical for us is the ability to update schema automatically from the ORM Data Model Designer. I would like to have that in the near future.

29 May, 2019
Dennis (DevExpress Support)

@Customer73689: I want the schema migration feature just as much as you do. Unfortunately, we’ve prioritized our activities based on available resources, feedback from our 2019 Roadmap survey and suggestions from the DevExpress Support Center. New server mode components were the most voted feature in our roadmap survey.

The schema migration feature is also interesting, but it will not be available this year. We will keep it on our radar. If you have a specific use case you’d like to share with me, please feel free to comment here or write to support@devexpress.com.

3 June, 2019

Looking forward. The feature is critical for my future work with Xaf.

4 June, 2019

we work with multiple portable databases ( VistaDB , sqlLite) when we push new updates we make changes to the database to reflect new features. However, updating the database from our software is not an easy task if XPO is used.

devExpress states the ability to update database tables based on the definitions of your persistent object classes on this page


"Comprehensive Database Generation and Updates - XPO allows you to generate or update database tables based on the definitions of your persistent object classes."

However, the claim quoted above still is not realized yet. I hope to see the schema migration feature soon.

11 June, 2019

Please login or register to post comments.