Thursday, March 17, 2016

Dynamics AX web server and client


Application tiers in AX 7

For one thing, AX is no more a WinForms application, it is a website. There is no "AOS” as such, my friends. Though still a couple of Windows services run on the server side:
·         Batch management services that “Polls and executes AX batch requests.”
·         DIXF service that “Executes import/export logic for the Microsoft Dynamics AX Data Import/Export Framework”.

Disclaimer: All screenshot are made from RTW development box. Other environments’ settings may differ.




Browser is now your main client and the third tier remains SQL Server or SQL Azure, at least for now J



The website contains parameters for DB connection and for binary directory with business logic and metadata. You may find them in website’s Application Settings along with lots of other interesting parameters.


UI development experience

The good news is that you do not have to learn HTML 5 and all this web-stuff to develop AX. UI development experience has not changed that much. Rendering of your forms is done by IDE and Runtime.
The only exception is development of custom controls if standard ones do not cover your needs. That is where you’ll have to exercise in web development.
IDE now provides a nice relevant form preview feature.


FormRun

Unlike in older versions every form is now a separate class that extends FormRun and is decorated with [Form] attribute. That opens new perspectives for OOP usage in your UI development.
For example, your form can now implement interfaces, that may be convenient in caller patterns or in extensions if you want all your forms to behave similarly.



Physical form

For those interested in HTML / CSS / JavaScript / Bindings internals, here is a sample HTML source of a simple form received by browser may be found here.

There are some wonderful things like:
    <!-- Please keep above meta data at top of the file.  bug 2731835 -->

Even the simplest form is rendered to almost 200Kb HTML.

You can also see a draft form metadata when the option “Build pre-compiled forms” is set in Build models dialog. Visual Studio pre-generates JSON form file to increase runtime performance.


Click here to open the full JSON file text.

Forms patterns

This is an important innovation to forms development – strict patterns that you must follow in order to compile your form. IDE gives a nice tree-arranged details on the expected form structure that must adhere to the chosen pattern. Some patterns resemble those in AX 2012 but there many more.



Additionally, some controls like Groups may have their own subpatterns that depend on the parent form's pattern.

Form adaptors

In Project properties you can choose to automatically generate form adaptor class that extends standard FormAdaptor and resides in a separate package referencing the form’s package.
It’s probably intended to contain all form-related business logic, though I have not seen the description of this BP. 


Well, you can always find an example in standard code like in the example with Currencies below:


Dissappoiting news 

Two bad news for those who invested heavily into rich UI. The following items are not supported in AX 7:
  • Rich controls (ActiveX, hosted.NET)
  • Enterprise Portal
Your investments into this technologies will become a sunk cost. You’ll have to migrate everything to the new platform if that makes sense economically, of course. Or invent an integration scenario to keep your IP.

Also quite a lot of UI-related APIs that were often used and modified are now deprecated. Some prominent losses among them:
Form
copy
cut
paste
lock
lockWindowUpdate
unlock
FormControl
labelMouseDblClick
mouseDblClick
FormDataSource
displayOption

Thus, for example, grid rows coloring should re-implemented in some other way.

Standard controls

The list of standard controls currently available is quite impressive, however the documentation is scarce for most of them. However it may give you an idea of the UI development capabilities provided out of the box.

Note that file upload cannot be done, naturally, via WinAPI or .NET libraries. You must use special control and a backing class to implement it.

Gantt chart, Hierarchy controls and Segmented Entry control are also provided with Standard AX but you’ll have to migrate any changes to them you had in previous versions. And that may also require web development skills.

Custom controls

Control's content is now split logically and physically between layers and comprises different entities like runtime and design time X++ classes, JavaScript classes, HTML and CSS.


For full details and guidelines please refer to AX wiki:



No comments:

Post a Comment