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.