Blogs

Gary's Blog

XAF–The State of Domain Components Technology in V2010 Vol 2

     

This post may be outdated. For the latest Domain Components concepts and examples refer to the current online documentation.

During the 10.2 release cycle, we have been closely working with the XPO team to allow pure XPO to support many popular scenarios for Domain Components (DC) models, which were already supported in XAF. Now DC can work with all of the built-in XAF modules, including Scheduling, Tree List Editors, and File Attachment modules.

However, there are still some technical obstacles, mostly on the XPO side, which unfortunately prevented us from releasing DC technology in 10.2. Just to keep you up to date with the “state of play”, these issues are:

  • We have no server mode support yet;
  • There is limited functionality in ASP.NET grids;
  • There are issues surrounding complex database table structures generated for DC models;
  • We have problems with certain kinds of validation rules.

All of this means that we have not been able to move DC out of beta in 10.2. Sad smile

However, it is not all bad news. As a result of our work on DC in 2010, we have been able to provided an example XCRM application, which is intended to demonstrate the use of DC to solve real business requirements. Briefly, this example is an application for sales, which provides both Windows Forms and ASP.NET user interfaces. This application also utilizes the latest shiny 10.2 features like Dashboards, KPI, Pivot-Charts editors, etc. Here is a screenshot of the Windows Forms UI:

XCRM win form UI

Another important aspect of the XCRM application is that it demonstrates all the best development practices that should be used when building XAF applications. In particular, it shows you how to write unit and functional tests for every business entity involved.

It also provides two ready for use business libraries: the DomainComponents.Common – a library with common and base entities for working with XAF built-in modules and DomainComponents.XCRM – a library, containing entities specific for CRM applications. The completed XCRM application contains entities composed from the above base entities. For example, this is what an ICRMInvoice domain component looks like:

Example domain compontent

As you see, it is empty by itself and business logic is injected from the base domain components. This is a direct demonstration of the main advantages of DC – multiple inheritance and easy building libraries of reusable domain models. Finally, you can explore the XCRM application at %PUBLIC%\Documents\DevExpress 2010.2 Demos\eXpressApp Framework\XCRM\. It can also be launched via the Start menu directly or through the DemoCenter.

Although, these problems look like “showstoppers”, we believe that from 10.2 ownwards you can seriously consider using DC for your future projects, if they are scheduled for release in H2 2011. At this time, DC is already stable and we are commitment to fixing all the known issues. It is also possible that we will release these fixes in minor versions so that you can start using and testing this functionality in real-world scenarios ASAP. As soon as we solve the known problems with DC, we will be happy to release it. If all goes according to plan, it will be done in 11.1, but no promises, because as you understand, DC is a quite a new technology and we still need to polish it to be sure that were are ready for real-world scenarios.

Meantime, we are also planning to provide a series of in-depth videos and blogs showing, via the XCRM application, how to implement most common business tasks using DC. This should help you see all of the benefits of this technology in action. With the help of XCRM and related learning materials, brand new users will be able to get started with DC faster, whilst advanced users will be able to learn the technology thoroughly.

As always, we are open to your feedback and would be happy to hear how DC works for you, and will be pleased to improve it if there is an issue or a popular scenario not currently covered.

That’s all for this post, so until next time, happy XAF’ing. Smile

Published Dec 01 2010, 06:39 PM by Gary Short (DevExpress)
Filed under: , , ,
Technorati tags: v2010.2, XAF, XCRM, DC
Bookmark and Share

Comments

 

Mohsen Benkhellat said:

Waiting for expression support in server mode to jump to DC.

December 1, 2010 2:29 PM
 

Nate Laff said:

I'm excited for domain components, but haven't made the jump yet. My main concern is backwards compatibility. For example, in the XPObjectInfo table, it stores the assembly and type names. I'm not sure how to "Migrate" to a DC scenario with this.

December 1, 2010 3:27 PM
 

Arjan van Dijk said:

Is there a more detailed list of the known issues concerning DC?

December 1, 2010 5:25 PM
 

Dennis (DevExpress Support) said:

@Arjan:

Good point! I will gather this information and will publish it somewhere. For instance, on the XAF forum, as an announcement. Thank you for the feedback.

December 1, 2010 7:10 PM
 

Dennis (DevExpress Support) said:

Thank you for the feedback, Mohsen. We are aware of your issue.

December 1, 2010 7:12 PM
 

Dennis (DevExpress Support) said:

Nate, it is easily possible to change the values in this table manually. This is all that you will require for a scenario when there are only XAF applications, using Domain Components using the database.  If there is another application, using pure XPO objects, there will be problems...

However, it is possible that we will support this scenario in XPO in the future, but no exact promises as always.

December 1, 2010 7:25 PM
 

Nate Laff said:

Dennis -- changing this manually isn't happening :) These are all database deployed to customers. No SSMS there. I could write some update scripts, but even have no way to deploy those.

Hmm... I didn't think about the XPO angle either. All of my apps (even internal mostly) have webservices that hit the objects using pure XPO -- no XAF. Maybe DC isn't going to work for me after all.

December 1, 2010 8:03 PM
 

James Zhong said:

Sounds very exciting! Looking forward to your Domain Component video tutorials based on XCRM example.

If you have documentation on how to create XCRM project step by step, that will help DXperience Universal subscription customers learn XAF better.

:)

December 1, 2010 9:28 PM
 

Robert Fuchs said:

So I can't mix DC with "normal" BOs, and I can't access DC with pure (not XAF) XPO? - didn't know that.

I am shocked.

Showstopper - good bye DC.

December 1, 2010 11:32 PM
 

Gosha said:

tutorial on XCRM woul be just perfect. Will it be available some day?

December 2, 2010 3:55 AM
 

Roman Eremin (DevExpress) said:

Nate, Robert:

It is possible to use DC without XAF. It is possible to mix DC and "old" XPO classes and if there problems in some scenarios - we intend to solve them.

We have a demo project that shows how to use just DC. Dennis or Gary will publish it.

December 2, 2010 12:49 PM
 

Dennis (DevExpress Support) said:

@Gosha: as Gary mentioned, "we are also planning to provide a series of in-depth videos and blogs showing, via the XCRM application, how to implement most common business tasks using DC".

December 2, 2010 3:50 PM
 

Robert Fuchs said:

@Roman: thanks for clarification.

I am not shocked any more ;-)

December 2, 2010 5:49 PM
 

Dennis (DevExpress Support) said:

>>

Good point! I will gather this information and will publish it somewhere. For instance, on the XAF forum, as an announcement. Thank you for the feedback.

<<

I have posted a list of known issues here:

community.devexpress.com/.../96767.aspx

December 28, 2010 6:54 PM
 

zacarias de prado habela said:

Hi:

How this technology supports events, such as OnSaving

January 16, 2011 2:16 PM
 

Konstantin B (DevExpress) said:

Zacarias,

You can implement the OnSaving metod in the Domain Logic class:

[DomainLogic(typeof(MyDomainComponent))]

public class MyDomainLogic {

   public static void OnSaving(MyDomainComponent instance) {

       // ...

   }

}

The AfterConstruction and OnDeleted methods can be implemented in the same manner.

January 17, 2011 3:44 AM
More from DevExpress
Live Chat
Have a pre-sales question?
Need assistance with your evaluation?
We are here to help.
Chat is one of the many ways you can contact members of the DevExpress Team. We are available Monday-Friday between 8:30am and 5:00pm Pacific Time.
If you need additional product information, require pre-sales assistance, or want help with your order, write to us at info@devexpress.com or call us at
+1 (818) 844-3383.