Quino

92 articles

Quino Documentation: Table of Contents

Published by Marco on in Quino

v3.1: New metadata builder API

Published by Marco on in Quino

The summary below describes major new features, items of note and breaking changes. The full list of issues is also available for those with access to the Encodo issue tracker.

Highlights

This release is a “bridge” release that has the entire new Metadata API as well as the older version, which is marked as obsolete. It is intended that projects upgrade to this version only temporarily in order to more easily migrate to the 4.0 Metadata API. At that point, projects should immediately upgrade to Quino 4.0, from which all obsolete methods have been removed. Once 4.0 is available, there will be no more bug-fix releases for this release.

Metadata construction

  • Remove MetaId/Guid parameters from all metadata-building APIs
  • Remove all dependencies and requirement for the MetaBuilder; make MetaBuilder obsolete.
  • Drastically reduce the surface of the MetadataBuilder and base classes and improve dependency-resolution
  • Replaced AddClassWithDefaultPrimaryKey(“A”) with AddClass(“A”).AddId()... [More]

Quino Retrospective and Roadmap

Published by Marco on in Quino

History

Before taking a look at the roadmap, let’s quickly recap how far we’ve come. An overview of the release schedule shows a steady accretion of features over the years, as driven by customer or project needs.

The list below includes more detail on the releases highlighted in the graphic.[1]

  • 0.1: Proof of concept with metadata, PostgreSql (data and schema-migration) and Winforms UI
  • 1.0: First customer product with PostgreSql, DevExpress Winforms UI and Reporting
  • 1.0.5: MS-SQL driver (parity with PostgreSql driver)
  • 1.5.0: Remoting data driver; require .NET 4.0
  • 1.6.0: Mongo/NoSQL data driver
  • 1.8.0: Rewrite data driver to use sessions
  • 1.8.5: Support improved metadata-generation pattern
  • 1.9.0: Add plugin/overlay support
  • 1.10.0: Require .NET 4.5; add JSON-based remoting protocol; Windows-service support
  • 1.13.0: Rewrite security API
  • v2.0-beta1: Rewrite configuration, logging and schema-migration APIs
  • v2.0-beta2: Add V2 generated-code format
  • 2.0: Finish configuration/IOC rewrite;... [More]

v3.0: Metadata builders and code-generation improvements

Published by Marco on in Quino

The summary below describes major new features, items of note and breaking changes. The full list of issues is also available for those with access to the Encodo issue tracker.

Highlights

Breaking changes

  • IDataSession and IApplication now directly implement the IServiceRequestHandler and helper methods that used to extend IApplication now extend this interface instead, so calls like GetModel() can now be executed against an IApplication or an IDataSession. Many methods have been moved out of the IServiceRequestHandler interface to extension methods declared in the Encodo.IOC namespace. This move will require applications to update the usings... [More]

v2.2: Winform fixes and Query Improvements

Published by Marco on in Quino

The summary below describes major new features, items of note and breaking changes. The full list of issues is also available for those with access to the Encodo issue tracker.

Highlights

  • Lots of bug fixes and improvements for the Winform UI and German translations with the release of Punchclock on this version. (QNO-5162, QNO-5159, QNO-5158, QNO-5157, QNO-5156, QNO-5140, QNO-5155, QNO-5145, QNO-5111, QNO-5107, QNO-5106, QNO-5104, QNO-5015)
  • DateTimeExtensions.GetDayOfWeek() had a leap-day bug (QNO-5051)
  • Fixed how the hash code for GenericObjects is calculated, which fixes sorting issues in grids, specifically for non-persisted or transient objects (QNO-5137)
  • Improvements to the IAccessControl API for getting groups and users and testing membership (QNO-5133)
  • Add support for query aliases (e.g. for joining the same table multiple times) (QNO-531) This changes the API surface only minimally. Applications can pass an alias when calling the Join method, as shown below,

    query.Join(Metadata.Project.Deputy,... [More]

Mini-applications and utilities with Quino

Published by Marco on in Quino

In several articles last year[1], I went into a lot of detail about the configuration and startup for Quino applications. Those posts discuss a lot about what led to the architecture Quino has for loading up an application.

 Some of you might be wondering: what if I want to start up and run an application that doesn’t use Quino? Can I build applications that don’t use any fancy metadata because they’re super-simple and don’t even need to store any data? Those are the kind of utility applications I make all the time; do you have anything for me, you continue to wonder?

As you probably suspected from the leading question: You’re in luck. Any functionality that doesn’t need metadata is available to you without using any of Quino. We call this the “Encodo” libraries, which are the base on which Quino is built. Thanks to the fundamental changes made in Quino 2, you have a wealth of functionality available in just the granularity you’re looking for.

Why use a Common Library?

Instead of... [More]

v2.1.1 & v2.1.2: Bug fixes for web authentication, logging and services

Published by Marco on in Quino

The summary below describes major new features, items of note and breaking changes. The full list of issues for 2.1.1 and full list of issues for 2.1.2 are available for those with access to the Encodo issue tracker.

Highlights

  • Improved configuration, logging and error-handling for Windows services. (QNO-4992, QNO-5043, QNO-5057, QNO-5076, QNO-5077, QNO-5109)
  • Schema-based validation is once again applied. Without these validators, it was possible to make a model without the required meta-ids. During migration, this caused odd behavior. (QNO-5118)
  • Use TPL and async/await for services (QNO-5113)
  • Added new GetList(IEnumerable<IMetaRelation>) method to help products avoid lazy-loading (QNO-5113)
  • Reduce traffic for the EventLogger and MailLogger (QNO-5080)
  • Improve usability and error-reporting in the Quino Migrator

Breaking changes

  • The ConfigureDataProviderActionBase has been replaced with ConfigureDataProviderAction.
  • The standard implementations for IFeedback and IStatusFeedback as... [More]

v2.1: API-smoothing and performance

Published by Marco on in Quino

The summary below describes major new features, items of note and breaking changes. The full list of issues is also available for those with access to the Encodo issue tracker.

Highlights

Quino 2 is finally ready and will go out the door with a 2.1 rather than a 2.0 version number. The reason being that we released 2.0 internally and tested the hell out of it. 2.1 is the result of that testing. It includes a lot of bug fixes as well as API tweaks to make things easier for developers.

v2.0: Logging, Dependencies, New Assemblies & Nuget

Published by Marco on in Quino

The summary below describes major new features, items of note and breaking changes. The full list of issues is also available for those with access to the Encodo issue tracker.

Highlights

In the beta1 and beta2 release notes, we read about changes to configuration, dependency reduction, the data driver architecture, DDL commands, security and access control in web applications and a new code-generation format.

In 2.0 final—which was actually released internally on November 13th, 2015 (a Friday)—we made the following additional improvements:

Quino 2: Starting up an application, in detail

Published by Marco on in Quino

As part of the final release process for Quino 2, we’ve upgraded 5 solutions[1] from Quino 1.13 to the latest API in order to shake out any remaining API inconsistencies or even just inelegant or clumsy calls or constructs. A lot of questions came up during these conversions, so I wrote the following blog to provide detail on the exact workings and execution order of a Quino application.

I’ve discussed the design of Quino’s configuration before, most recently in API Design: Running an Application (Part I) and API Design: To Generic or not Generic? (Part II) as well as the three-part series that starts with Encodo’s configuration library for Quino: part I.

Quino Execution Stages

The life-cycle of a Quino 2.0 application breaks down into roughly the following stages:

  1. Build Application: Register services with the IOC, add objects needed during configuration and add actions to the startup and shutdown lists
  2. Load User Configuration: Use non-IOC objects to bootstrap configuration from the... [More]