XAF - New community modules, blogs with tips & tricks, documentation updates

XAF Team Blog
01 May 2019

New XAF community modules

  1. The eXpand Framework, managed by Apostolis Bekiaris, will soon release new platform-agnostic packages for XAF: http://xaf.expandframework.com/. Unlike the former monolithic version of eXpand, these are low-dependency packages. They also work with previous XAF versions, and include unit tests that run on Azure (an example is available here), wiki and demos. This is a preview for now and there are known issues, so please stay tuned. Just to name a few modules to better understand their functionality: 
    AutoCommit , CloneMemberValueCloneModelViewMasterDetail
    ModelViewInheritanceSuppressConfirmationViewEditMode
  2. A new version of XAFARI that works with v18.2.7 is available and the v18.2.8 build is on its way too. Galaktika Soft has been providing paid reusable XAF modules with documentation and support services for more than 5 years.
  3. LlamaChant published a maintenance update for their free modules, in case you missed it: http://www.llamachant.com/single-documents/llamachant-framework-modules/
  4. https://github.com/SenDevGmbH/SenDevXafDashboards - this extension from Sergej Derjabkin adds 2 new data sources to the DevExpress XAF Dashboards module: C# Script Data Source and Data Extract Data Source. Sergej Derjabkin has been working with DevExpress components from 2003 and made several other contributions to the DevExpress community:
    - Google MapView module for eXpandRoslyn analyzers for XAF; MasterDetail module for eXpand; Nuget packages to host the middle-tier Application Server inside an XAF Web app.
  5. https://github.com/egarim/Ultra - more community-based XAF modules under the Microsoft Public License from Joche Ojeda. You might know Joche from his promotion efforts in the Spanish community. These new modules have basic usage documentation and demos:
    - Email Module allows you to use SMTP email accounts inside of your XAF application.
    - Universal Search Module helps you search across all business objects and present a unified search result. 

New XAF community blogs, tips & tricks

  1. https://www.xafers.jobs/ - a new web site for XAF experts to find jobs, employment and career opportunities. This may be a good alternative to Upwork, Freelancer and other sites I mentioned in my old blog. From the site's description: "Xafers.Jobs is a job service that provides xafers with pre-screened XAF jobs leads that offer real pay for real work. From web to windows to mobile, from reporting to dashboards, all of the job openings we bring you offer some form of our loved XAF framework.".
  2. New blog post from Joche Ojeda: Migrating XAF projects to the new version of csproj (SDK project VS2017). As you probably know, the design-time Model Editor tool supports projects with the new VS 2017 csproj format starting with v18.2. You may find this blog post helpful if you need migration instructions.
  3. Another blog post from Joche: Exposing your XPO ORM using GraphQL dotnet = XPO + https://graphql.org  + ASP.NET Core.
  4. New blog post on startup performance optimization from Manuel Grundner (DevExpress MVP): How to pre cache an XAF Winforms Application. While we are at it, please do not miss the recent performance optimizations in XAF v19.1.
  5. Another blog post from Manuel: Introducing dotnet new Scissors.XafTemplates = XAF project templates + .NET Core CLI.
If you have your own blog where you share your expertise about XAF, XPO or other DevExpress products, please let us know in the comments below.  If you are looking for custom XAF development or training, check out these third-party services.

Documentation updates

  1. We have identified the most popular class and member topics in the XAF API reference documentation based on traffic statistics. The team is now working hard to make sure that each document has a helpful code snippet. We plan to do the same for XPO API. Once we complete these initial efforts, we will select and review the next batch of popular documents. Here is the first update:
  2. New security system documents on permission calculation are available at Permissions for Associated Objects - now with schemas! Unlike simpler permissions at the object type level that you see in competitor products, the XAF security system provides more powerful permissions. They help control data access at the object type, member and object by criteria levels.
  3. We are working on samples that show how to use XPO with DevExpress visual controls for popular platforms such as ASP.NET Core MVC, WinForms, and WPF: https://github.com/DevExpress/XPO/tree/master/Tutorials. We have not yet provided step-by-step instructions, but you can research the source code of 10 working apps. This will also be a good start if you wish to reuse your XAF/XPO data model in non-XAF apps.

Interesting Support Center tickets

  1. If the ORM Data Model Designer is unavailable, make sure that you have installed Modeling SDK (or other packages like Entity Framework that rely on it) using the Visual Studio Installer (T730362).
  2. Due to a bug in Visual Studio versions prior to 2019, Application or Module Designers may sometimes be "lost" for the WxxApplication.xx and Module.xx files respectively. This occurs because "Subtype Designer" is added unnecessarily to xml-based files like csproj (204355).
  3. The parameterless IObjectSpace.CreateObjectSpace() method is hidden from Intellisense in v19.1. Use the CreateObjectSpace(Type) overload instead (BC5070).
  4. We performed a lot of measurements and performance enhancements for app startup and DetailView in XAF v19.1. We once again recommend that our users try Native Image Generator (NGEN) to dramatically cut loading time (T731177).
  5. We discussed some NGEN specificities, such as the need for administrative privileges, with other customers (T719697).
  6. A customer provided a sample with the XAF security system used in a non-XAF app: an OData V4 service built using ASP.NET Core (T721161).
  7. Several customers suggested that we change the Model.DesignedDiffs.xafml file name to better identify multiple opened tabs in Visual Studio. What is your opinion on this (T736377)?

Let us know what you think

8 comment(s)
Mert Eşsiz
Mert Eşsiz

Nice summarized article, thanks!

2 May, 2019
Dennis (DevExpress)
Dennis (DevExpress)

Thank you, Mert!

2 May, 2019
Johannes
Johannes

I am specially excited about the split up of eXpand into low dependcy packages. Just tried to upgrade an v17.2 xaf application to v18.2 that only uses eXpands CloneView, View-Merging and IO and now I would need to add even more modules/assemblies that in turn causes other problems which take me a lot of time to pinpoint.

Expands high dependency always caused me a lot of troubles and so I am really looking forward that in future it turns into an opposite direction (which I guess is not an easy task). So for now I will do a rollback of my unfinished upgrade.

Also thanks for the other information in this article.

3 May, 2019
Apostolis Bekiaris (DevExpress)
Apostolis Bekiaris (DevExpress)

Hi Johannes,

From what I understand, you trying something not supported yet. That is mixing the new standalone modules with the main modules. This of course will be supported however note that the mixing you attempt most probably will fail with the current official version because the standalone artifacts extend the model using the same entry points as the old modules.

IO for example is an old module which uses the Base.Lib which already extends the model for supporting the ModelViewInheritance in the past. That can cause conflicts

In 19.1 the standalone modules are integrated into eXpand and the existing functionality from eXpand is removed (base does not support modelviewinheritance now and is only installed in modules that use it directly), This resolves those duplicate model extension  issues.

If you want to try the standalone modules with your current version you should remove any existing eXpand modules open the Nuget Package Management console and paste the following lines one by one.

#install helper functions to ease the installation process see also xaf.wiki.expandframework.com/Efficient-package-management

Install-Module XpandPosh -MinimumVersion 1.9.5

#most of the modules target 4.6.1 so to be safe upgrade your projects

Update-ProjectTargetFramework

#Find and install all standalone modules

Find-XpandPackage Xpand*|Install-Packge

the above lines will install all nugets in your agnostic module and whats left is to register them so copy paste this in the constructor of your agnostic XAF module.

RequiredModuleTypes.Add(typeof(Xpand.XAF.Modules.ViewEditMode.ViewEditModeModule));

RequiredModuleTypes.Add(typeof(Xpand.XAF.Modules.SuppressConfirmation.SupressConfirmationModule));

RequiredModuleTypes.Add(typeof(Xpand.XAF.Modules.ModelViewInheritance.ModelViewInheritanceModule));

RequiredModuleTypes.Add(typeof(Xpand.XAF.Modules.MasterDetail.MasterDetailModule));

RequiredModuleTypes.Add(typeof(Xpand.XAF.Modules.CloneModelView.CloneModelViewModule));

RequiredModuleTypes.Add(typeof(Xpand.XAF.Modules.CloneMemberValue.CloneMemberValueModule));

RequiredModuleTypes.Add(typeof(Xpand.XAF.Modules.AutoCommit.AutoCommitModule));

I hope I provided enough details to help you expiriement. However for much better support I would really happy to hear your feedback and problems in GitHub

3 May, 2019
Apostolis Bekiaris (DevExpress)
Apostolis Bekiaris (DevExpress)

To finish my thoughts on my previous comment I would like to say. Yes you can use the standalone modules now with any version but you cannot mix them with the old ones. This will be gradually supported. In 19.1 already published in lab builds all existing standalone packages can be used with eXpand packages. As new standalone packages are released they will be installed in the main framework removing the duplicate functionality.

If anything not clear feel free to ask.

3 May, 2019
Johannes
Johannes

Hi Tollis,

thanks for the information. For the 18.2 upgrade I didn't mix with the standalone modules (got some "There is already a node with Id 'UserModelDifferenceObject'" error). Before I also experimentally tried to upgrade to 19.1 beta but quickly realized that is to early (for me). Now I am happily back at v17.2 for now and look forward to upgrade to 19.x in the future.

Regards,

Johannes

3 May, 2019
Apostolis Bekiaris (DevExpress)
Apostolis Bekiaris (DevExpress)

Thanks for the update Johannes, I will check again the ModelDifference to verify it works in 19.1.

3 May, 2019
Manuel Grundner [DevExpress MVP]
Manuel Grundner [DevExpress MVP]

@Dennis Thanks for the mention! If anybody is wondering what this Scissors thing is: Those are going to be my contribution modules to XAF (but not only to XAF) so stay tuned :)

8 May, 2019

Please login or register to post comments.