Non-functional requirements of Uvendia


Posted on October 10, 2019 by Sherlon Gerard


Uvendia E-commerce is built on 4 basic non-functional requirements: Performance, Flexibility, Scalability and Simplicity. After experiencing several e-commence components out there on the market, they always lack on these 4 issues. So, to break the cycle, Uvendia E-commerce is born.

Performance

Most of the latest generation .NET developer are only familiar with O/RM Framework (object-relational mapper) like Entity Framework or NHibernate. Entity Framework enables developers to work with data using objects of domain specific classes without focusing on the underlying database tables and columns where this data is stored. With the Entity Framework, developers can work at a higher level of abstraction when they deal with data and can create and maintain data-oriented applications with less code compared with traditional applications.
Although this sounds appealing, but it comes with a cost: “Performance”. There is a lot happening behind the scenes that you cannot control and specially when you have multiple joining tables in a query, you will notice that the performance drops dramatically.

Micro-ORM

For a small application, such a data access layer using Entity Framework is not a big problem. But what if you have a database containing millions of records, serving data to a lot of users simultaneously and the application is required to perform very fast? In this case a micro-ORM is the most suitable to implement into your data access layer. A micro-ORM is a very lightweight object-relational mapping tool. It should convert the output of SQL calls into objects in your server-side language of choice.

Uvendia is using Dapper .NET as micro-ORM to access the database. Dapper is developed by the guys of StackOverlow.com and has been proven to be one of the best micro-ORM available for .NET Framework.
So, don’t be afraid to load millions of products into Uvendia. It can handle it without any problem!

Flexibility

Uvendia always offer some basic features that you can just use out of the box. But in some cases, you need to customize and tweak things to satisfy your business needs.

  • The property definition feature is a very powerful feature you can use to define your own set of properties to describe your product or event
  • You can validate your properties the way you need them to be validated
  • You can upload any type of media you want, like images, videos, pdf, excel, .docx files etc.
  • You can create your own e-mail templates
  • You can translate invoices and e-tickets in multiple languages using your own translated headers and labels

One of the advantages of using Umbraco as CMS platform is the fact that it is open-source and can be extended very easily with your own extensions. But in case you need any help, we from Uvendia can provide you with some extra support.

Scalability

Data Access
Like mentioned before, Uvendia uses a micro-ORM called Dapper .NET. This makes it possible for Uvendia E-commerce system to handles a few products or events to >1.000.000 of products and events. On database level, we make sure that the right table-indexes and table-catalog are configured to deliver your data very fast.

Media Storage

Cloudinary is used to store all your media. With Cloudinary you can securely upload & store as many images and videos as needed, at any scale, from any source. It uses a powerful API for fast upload directly from users browsers or mobile apps. Rest easy with auto-backups, historical revisions, and flexible storage options. Cloudinary also offers a wide array of image - and video manipulations and effects through its URL-based API. Next to all of this they make use of multiple CDNs (content distribution network) ensuring a fast, consistent, and reliable user experience.

Cloudinary CDN
Cloudinary CDN

Simplicity

Uvendia is based on the KISS (Keep It Simple and Stupid) approach. Actually, without reading our documentation, you can start right away with Uvendia E-commerce. Most of the tree nodes you see are clear enough. For accessing the database in code you only need to know the object name called UvendiaContext. From there you can access all the data you need. But for a comprehensive understanding on how to use the Uvendia package, we recommend you take a look at our documentation section.