Frequently Asked Questions
SQL optimisation
- The performances are better if the majority of the Xion
expressions can be translated directly into requests SQL ( smaller
resultsets, less objects to activate, less memory to allocate, faster
sorting algorithms ). However, the capacity of expression of Xion is
larger than that of SQL. Consequently, all the Xion requests cannot be
entirely translated into SQL.
- Define public attributes. This is bad OO practice
but access to this attributes can be directly translated into SQL.
- Do not put intermediary Xion expressions that return
collections into variables; directly apply the collection operator to the
expression. Putting the result of an expression that returns a collection
into a variable will cause the activation in memory of all the objects in
the collection, whereas directly applying a collection operator to such an
expression will in the best cases only return the result of the execution
of the operator.
Content management
- Define public attributes if they must be edited in
the content management. The content management is written in Xion and thus
cannot bypass the semantics of the language.
PHP tools
- PHP cache and accelerator tools must obey the PHP
specifications. Some tools will not be able to run the PHP scripts
generated by Netsilon. Netsilon has been successfully tested with Zend
Cache version 1.0 and APC version 1.1.0.
Database
- During deployment, Netsilon reads and cleans the contents
of the target database. This step may be omitted if the database is not
accessible on line, however, it is very important to let Netsilon do this
job when a class in the business model is deleted. If the
database is not cleaned, object-relational mapping semantics will break
and null reference exceptions will arise each time an access to an object
whose class has been deleted is made.
- If the database supports transactions, a dynamic page is
executed in a transaction.
Navigation model
- When a variable is not visible in a decision center, this
last is perhaps shared between several web elements and the variable is
not defined in every web elements or has incompatible types.
- A variable with a type collection can be transmitted
between fragments but not between pages. In the entry context of a form, a
collection will be created and initialized with the values transmitted by
the client.
- To initialize a text area input type, always select HTML
in textarea for the property Output Treatment in a value
displayer.
- Unused decision centers are not compiled.
- The sequence of web elements linked to a decision center
through constraints is ordered. So it is useless to negate in next links
the constraint that guards the topmost link.
- In zones, replace spaces ' ' with %20 in the URL used to
locate the HTML formatted text.
- If the action of a form is incorrectly handled, be sure
that the ending tag </form> exists in the HTML.
- In entry context, it is legal to declare a variable with
a class type. Netsilon will activate the object corresponding to the
object identifier it receives (in the parameters of an URL or a form).
- For user defined variables in the entry context of a form
decision center, do not add the parameters to the ObjeXion tag. The values
will be get from the input types in the form.
Business model
- Netsilon does not support inheritance between classifiers
defined in separate modules, use a delegation pattern.
- When a web element is imported from a module, the default
value of the variables in the imported web element is taken into account
and not the default value of the variables in the exported web element.
- An attribute of type class is coded by a composition.
- Do not write null ==... or null <>...
because null.=() or null.<>() has no meaning in Xion.
In fact, ... == null or ... <> null is allowed.
|