<< Click to Display Table of Contents >> Navigation: Getting Started > About DEX |
In keeping with the Open Design philosophy of DEX the following details on the development of DEX are provided.
Source Code
DEX source code (not including 3rd party code)
•1,002,626 lines of code (6,837,963 words) FYI: There are 587,287 words in War and Peace
•4,281 files
•Equivalent to 25,065 pages.
Help Manual
This help manual has:
•1410 topics.
•335,987 words.
•22,561 paragraphs.
•1981 images.
•103 videos.
Development
C#
DEX is mainly written in C# .NET 4 and will run on Windows Vista, Windows 7 and Windows 8., Windows 10 Windows 11.
C# (pronounced "C sharp") is a modern, general-purpose programming language developed by Microsoft as part of its .NET platform. C# was designed by Anders Hejlsberg and his team and was first released in 2000. It's syntactically similar to Java and C++, and it's particularly well-suited for building Windows desktop applications and games, but it's also used to develop web and mobile applications.
Key features and characteristics of C# include:
Object-Oriented: C# is fundamentally an object-oriented language, meaning it supports the concepts of encapsulation, inheritance, and polymorphism.
Type-Safe: The C# language is type-safe. It checks the type of an object at compile-time and doesn't allow type conversions that are unsafe.
Automatic Garbage Collection: In C#, you don't need to explicitly allocate and deallocate memory—this is managed automatically by the garbage collector.
Interoperability: C# has good interoperability, which means it can process and use code libraries that were written in other languages.
Versatility: C# can be used to create a wide variety of applications, including Windows client applications, Windows Store apps, back-end systems, cloud-based services, enterprise software, and even video games (using the Unity game engine).
Modern Features: C# has many modern language features, such as indexers, delegates, events, and LINQ (Language Integrated Query), that make it a powerful and flexible language for all kinds of software development.
Part of the .NET Framework: Being a part of the .NET framework, C# comes with a large standard library that supports a variety of common programming tasks, such as string manipulation, data collection, database connectivity, and more.
Microsoft CLI
When DEX is installed it is compiled on the target machine for the target processor. DEX is therefore a 64 bit application on a 64 bit O/S and a 32 bit application on a 32 bit O/S. The code is also optimized for the target processor version. This is impossible to do in C++ applications. There is only one installer executable.
The Common Language Infrastructure (CLI) is a specification developed by Microsoft that describes the executable code and run-time environment for running applications written in a variety of high-level programming languages. It's a key part of Microsoft's .NET platform.
The CLI includes a byte-code language, known as Common Intermediate Language (CIL, but sometimes also referred to as MSIL, for Microsoft Intermediate Language). When you compile .NET code (from any .NET language, like C#, VB.NET, F# etc.), it is compiled into this CIL.
The Just-In-Time (JIT) compiler is a part of the CLI and it's responsible for converting the CIL code into machine code that can be executed by the processor in the computer running the application. This compilation happens at run-time (i.e., "just in time" for execution) which is where the term "Just-In-Time Compilation" comes from.
Here's how the process typically works:
1.You write code in a high-level .NET language, such as C#.
2.When you compile your code, the .NET compiler converts it into CIL code. This is a form of byte-code — it's lower-level than C# code, but it's not yet machine code.
3.When you run the program, the .NET run-time loads your CIL code.
4.Just before each piece of code is executed, the JIT compiler in the .NET run-time converts the CIL code into machine code.
5.The machine code is then executed.
One of the advantages of JIT compilation is that, because the final compilation happens on the end user's machine, the compiler knows the exact configuration of the machine and can optimize the machine code for that specific environment.
.NET also supports Ahead-of-Time (AOT) compilation, in which CIL code is converted into machine code in advance, before the application is run. This can provide performance benefits and is commonly used in scenarios such as iOS development where JIT compilation is not allowed. However, JIT remains a core part of the .NET platform. DEX uses converts to CIL code into machine code on installation.
nGen
Ngen.exe, which stands for Native Image Generator, is a tool that creates native images from managed code assemblies and installs them into the native image cache on the local computer. The run-time can use native images from the cache instead of using the just-in-time (JIT) compiler to compile the original assembly.
Here's why DEX uses Ngen.exe:
Performance: Applications can load faster because they're pre-compiled to native code, reducing the work done by the JIT compiler during application start-up.
Shared Code: If you have assemblies that are shared between applications, using Ngen can improve performance because the native images can also be shared, so each application doesn't need to have its own JIT-compiled code.
Security: Because the assemblies are precompiled, there's less opportunity for malicious code to inject itself at run-time.
However, using Ngen.exe does have some disadvantages:
Disk Space: Native images are often larger than the original assemblies, so they consume more disk space.
Versioning: If you update an assembly, you have to regenerate the native image.
Initial Compilation: There is an overhead to compile the assemblies to native code in the first place.
Ngen.exe is used by DEX installer.
Winforms
For the User Interface, DEX uses WinForms.
Windows Forms (WinForms) is a Graphical User Interface (GUI) class library included in Microsoft's .NET Framework. Developers use it to create Windows desktop applications. It's one of the .NET Framework's two main GUI libraries, the other being Windows Presentation Foundation (WPF).
WinForms was introduced with the .NET Framework in 2002 and has been widely used for desktop applications in the Windows environment. It provides a set of classes for creating windows, controls, and components. These classes include everything from basic elements, such as buttons, check-boxes, and text boxes, to more complex elements like dialog boxes, menus, and toolbars.
3D and OpenGL
DEX uses OpenGL for 3D.
OpenGL, which stands for Open Graphics Library, is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a Graphics Processing Unit (GPU), to achieve hardware-accelerated rendering.
Since OpenGL is a low-level, high-performance library, it can create high-quality graphics in real-time, which makes it particularly useful in the field of computer games, simulations, and modeling applications. It provides functions to draw geometric primitives (like points, lines, and polygons), transformations of graphical objects, texture mapping, and many others.
OpenGL is platform-independent and served as the foundation for several other APIs and libraries, like WebGL (for web applications) and OpenGL ES (a simplified version for mobile and embedded systems).
Website
DEX website was written in C# with ASP.NET MVC 5. It is an HTML 5 site and uses SQLServer, WebGL, SVG and JavaScript with j Query.
ASP.NET MVC 5 is a framework for building scalable, standards-based web applications using well-established design patterns and the power of ASP.NET and the .NET Framework.
Visual Studio
DEX is developed with Visual Studio Ultimate. Design methodology is Scrum Agile.
Microsoft Visual Studio is an integrated development environment (IDE) from Microsoft. It is used to develop computer programs, as well as websites, web apps, web services, and mobile apps. Visual Studio uses Microsoft software development platforms such as Windows API, Windows Forms, Windows Presentation Foundation, Windows Store, and Microsoft Silverlight.
Key Features of Microsoft Visual Studio include:
Code Editor: The code editor supports syntax highlighting and code completion using IntelliSense for not only variables, functions, and methods but also language constructs like loops and queries.
Debugger: Visual Studio includes a debugger that works both as a source-level debugger and as a machine-level debugger. It works with both managed code and native code and can be used for debugging applications written in any language supported by Visual Studio.
Designer: Visual Studio includes a host of visual designers to aid in the development of applications. These include form designers for building UI, web designer for building web pages and applications, class designer for visualizing and editing the structure of classes, and many others.
Integrated Tools: Visual Studio comes integrated with many tools to aid in software development. These include a form designer for building GUI applications, web designer, class designer, and database schema designer, among others.
Support for multiple languages: Visual Studio supports multiple programming languages by allowing the code editor and debugger to support (to varying degrees) nearly any programming language, provided a language-specific service exists.
Extensions: Visual Studio also supports the creation and use of plug-ins, which enhance the functionality of the IDE or provide integrations with other software or services. This makes Visual Studio a highly extensible platform.
SqLite
DEX uses SQLite. SQLite is a C-language library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine. SQLite is the most used database engine in the world. SQLite is built into all mobile phones and most computers and comes bundled inside countless other applications that people use every day.
SQLite is a software library that provides a relational database management system (RDBMS). The distinguishing feature of SQLite is that it's embedded: instead of running as a separate process with its own system-level privileges, SQLite works directly with the application that uses it. This makes it extremely lightweight, efficient, and easy to integrate with a wide range of applications.
SQLite provides an interface to a "database" that is a single file on disk. It implements most of SQL standard, including transactions, and it can use indices to speed up queries. However, as a part of its simplicity, it doesn't support some more advanced RDBMS features, such as right outer joins or full outer joins.
Some of the key characteristics of SQLite include:
Server-less: SQLite doesn't run as a server process, which differentiates it from other databases such as MySQL or PostgreSQL. Applications open SQLite files directly, which simplifies setup and administration.
Zero-Configuration: There's no setup or administration needed to start using an SQLite database. This makes it a popular choice for development, testing, and even some production environments.
Transactional: SQLite transactions are fully ACID-compliant, allowing safe access from multiple processes or threads.
Self-Contained: A complete SQLite database is stored in a single cross-platform disk file.
SQLite is used widely both in industry and in academia, for both prototyping and for lightweight applications that don't require the full power of a larger RDBMS or where database needs are modest. As of my knowledge cutoff in September 2021, SQLite is embedded in a wide range of popular software, including most smart phones (both iOS and Android), many web browsers, and countless standalone applications.