Getting Started First steps, setup instructions, roadmap


First App configuring simplest "Hello world" NReco web application

  1. Create new empty web application projects in Visual Studio 2012/2013
  2. Install NReco.Application.Web nuget package (in the Visual Studio Package Manager console):
    Install-Package NReco.Application.Web
  3. That's all! Your first NReco application is ready .
  4. Next steps:

Features Overview

With NReco Framework you can:
  • Create nice admin interface for website content management quickly with simple XML definitions (lists, filters, add/edit forms). And it is production ready!
  • Get first sketch of your business web application in minutes (using online app generator); spent several hours more and get fully-functional valuable prototype that suitable for demo purposes and further development.
Database
  • DB-independent data schema configuration; new tables, indexes, columns and initialization rows are automatically created on app start.
  • change data capture (CDC) and record change tracking for tables with critical business data. Based on version tables, currently supported: SQL Server (any edition, including Express), MySQL.
  • application-level DataRow triggers
  • application-wide data filtering rules (DB-level permissions)
  • declarative data providers defined with relational expressions
User Interface
  • built-in support of Twitter Bootstrap styles and widgets
  • data lists configured with XML (pagination, data filtering controls, editable lists)
  • record forms with custom layout configured with XML (add/edit/readonly modes, custom actions, conditional visibility, dependent controls)
  • complex UI editors like condition composer, select box with multivalue support, ajax file upload etc
  • write your own UI renderers and editors that can be used from XML layouts with simple ASCX files
  • built-in multi-language applications support

Application Structure

In addition to standard ASP.NET web project folder structure NReco application uses the following folders:
Folder Description
config/ Contains application configuration files: IoC-container configuration files (*.xml.config), XML-based models, XSL-transformations and XSD files.
config/dsm/ Default location for XML-based domain-specific models (*.dsm.config).
config/xsl/ Default location for XSL-transformations used for processing XML models.
config/xsd/ Default location for XML schemas for domain-specific XML models. Used by VisualStudio for intellisense and as formal reference for XML metamodel definition.
config/web/ All *.xml.config files from this folder are included into web-application IoC-container configuration.
config/console/ All *.xml.config files from this folder are included into NReco.Application.Console IoC-container configuration.
config/common/ Configuration files that should be included into configuration of both web and console environments.
pages/ Default location for web page templates (*.aspx) used in WebForms NReco infrastructure.
templates/ Default location for user control templates (*.ascx) used in WebForms NReco infrastructure.
editors/ Default location user controls that represent UI editors used in WebForms layout models.
renderers/ Default location user controls that represent UI widgets used in WebForms layout models.
Note that these folders reflect default NReco packages conventions and are not hardcoded. They could be easily changed by reconfiguring appropriate components.

Packages Roadmap brief information about core framework packages

Package Dependencies Description
NReco (none) Commons library that implements generic-purpose components like runtime type converters, lambda expressions parser, delegate adapters.
NReco.Application NReco, NI.Ioc, NI.Vfs, log4net, Mvp.Xml Combines core NReco framework components: IoC-container with multifile configuration support, application events broker.
NReco.Application.Web NReco.Application, NI.Data Extends NReco.Application with webapp-specific components: application context module, NI.Data-based membership/role/profile providers.
NReco.Application.Console NReco.Application Extends NReco.Application with console tool for invoking components defined with IoC-container. Can be installed together with NReco.Application.Web: in this case app configuration is shared and console app is used for executing operations in background.
NReco.Transform.Build NI.Vfs, Mvp.Xml Build tool for XML models transformation ("XML Model" build action).
NReco.Dsm.Data NI.Data, NReco.Application, NReco.Transform.Build NReco DSM for configuring application data domain and data access layer with XML models. Implementation is based on NI.Data).
NReco.Dsm.WebForms NReco.Application.Web, NReco.Transform.Build NReco DSM for configuring web application UI layer with XML models (lists, forms, dialogs etc). Implementation is based on ASP.NET WebForms.
NReco.Dsm.WebForms.Vfs NReco.Dsm.WebForms, NI.Vfs Extensions for WebForms DSM: file UI editor, file upload/download handlers
NReco.Dsm.WebForms.ConditionBuilder NReco.Dsm.WebForms Extensions for WebForms DSM: condition builder UI editor (useful for filtering lists with complex user-defined conditions).
NReco.Dsm.WebForms.Bootstrap NReco.Dsm.WebForms Extensions for WebForms DSM: bootstrap UI widgets (tabs, accordion, panel, grid layout), bootstrap editors (datepicker).

Examples

NReco Console-only "Hello world!" example
Minimalistic NReco console application with IoC-container:
  • NI.Ioc configuration sample
  • illustrates how to invoke delegates configured with IoC-container
NReco WebForms "Hello world!" example
Minimalistic WebForms application that illustrates basic NReco concepts: IoC-container, XML-model transformation:
NReco Data Model MVC example
ASP.NET MVC application that illustrates NReco.Dsm.Data features:
NReco Layout-DSM WebForms example
WebForms application that illustrates NReco.Dsm.WebForms features (how to define lists, forms, mass actions, dialogs declaratively with XML-based layout DSM).
  • UI views configured with XML-models ( layouts.dsm.config )
  • list definition with pager and simple filter
  • list inline editing
  • list mass operations and list interaction with dialog
  • form definition with field represented by relation
  • list complex filter with custom condition builder

Source code

NReco components are hosted as 2 separate open-source projects: Cloning NReco repository:
git clone https://code.google.com/p/nreco/
Cloning Open NIC.NET repository:
git clone https://code.google.com/p/nicnet/
Both NReco and NIC.NET projects are maintained by the same team.