This article lists some of the tech used in the JJ
projects.
Visual Studio | Programming environment used for the development of the software. |
---|---|
VS Code |
Used for MarkDown editing.
|
.NET | Framework from Microsoft that forms the foundation of the software. |
Mono | Version of .NET that worked for other platforms than Windows . Later versions of .NET itself work on more platforms out-of-the-box. |
Unity Game Engine | The first tech at that time, that would cooperate for deploying the code on multiple mobile platforms. It used the Mono compiler. |
C# | Primary programming language. |
Visual Basic | Some projects might still use this programming language. |
ReSharper | Tool for code formatting, refactoring and code smells and such. |
Git | Source control, revision history, version management of the code. |
GitHub | Where the source code is hosted and shared. |
Git for Windows | Windows version of Git . |
Git Extensions | User interface for Git with many options. |
TortoiseGit | Git user interface that shows state in File Explorer . |
Azure DevOps |
Build pipeline, Pre-Release-Package-Feed, original planning boards, may host a repository not migrated to GitHub .
|
GitHub Issues | Gradually used more for planning. |
MarkDown |
Lightweight alternative for HTML . Used for documentation. Compatible with various web tech.
|
JJ.Framework |
In-house programmed extensions to the .NET Framework .GitHub / NuGet / JJs-Pre-Release-Package-Feed |
JJ.Framework.Conversion | Makes it easier to convert simple types. |
JJ.Framework.Reflection | Helps and speeds up accessing code structure elements through reflection and lambda expressions. |
JJ.Framework.Canonical |
Types to share data between JJ projects. Small scale Canonical model for generic handling of Successful flags, Validation Messages and combinations of IDs and Names .
|
SQL Server | Primary data store technology for relational databases. |
---|---|
ORM | Hides most SQL , exposing an object graph, to focus on the logic, instead of on the data storage. |
SQL | For performance reasons SQL is hand-programmed incidentally, combined with ORM . |
NHibernate |
A type of ORM . Chosen in several JJ project because an employer also so happened to use it.
|
QueryOver |
A strongly-typed query language like LINQ , but then the NHibernate version.
|
FluentNHibernate |
A way to define ORM mappings with fluent notation.
|
Entity Framework |
A type of ORM . Chosen less in the JJ projects, because of more experience with NHibernate . Worth considering though.
|
LINQ |
A query language usable in C# . Can query several types of data store, but commonly used for in-memory collections.
|
JJ.Framework.Collections | LINQ extensions from the JJ.Framework . |
JJ.Framework.Data |
Helps hide data access behind abstractions. It does not expose whether it is SQL Server , SQL , ORM , NHibernate or Entity Framework . It would just offer abstracted convenient methods instead. For more information see documentation.
|
JJ.Framework.Data.EntityFramework |
Entity Framework extension to work with interfaces from JJ.Framework.Data .
|
JJ.Framework.Data.Memory |
Extension to the interfaces specified in JJ.Framework.Data that allow working with in-memory data for instance to mock a data store.
|
JJ.Framework.Data.NHibernate |
NHibernate extension to work with interfaces from JJ.Framework.Data .
|
JJ.Framework.Data.SqlClient |
Also know as SqlExecutor . Work more easily with SqlClient with less code.
|
JJ.Framework.Data.Xml |
An extension to JJ.Framework.Data for storing in XML files. System.Xml is used internally.
|
JJ.Framework.Data.Xml.Linq |
Additional feature for JJ.Framework.Data that stores data in XML files. System.Xml.Linq is used internally.
|
JJ.Framework.Business |
Types for supporting a business layer and/or API . Bidirectional relationship synchronization. Result types to pass data, succes flags and (validation) messages. ISideEffect : Used for some polymorphism between small pieces of business logic that go off as a result of data modification.
|
---|---|
JJ.Framework.Validation | A nice fluent notation for validations. |
JJ.Framework.Mathematics | Helpers for math things. |
PagerViewModelFactory |
Constructs a PagerViewModel with properties like
CanGoToFirstPage , CanGoToPreviousPage , CanGoToNextPage , CanGoToLastPage .
|
---|
IIS |
Or Internet Information Services. For hosting web sites.
Some Visual Studio projects like to use it upon load.
|
---|---|
MVC |
Or Microsoft ASP.NET MVC Framework. Web development tech. Code runs mostly server side.
|
Razor |
A view renderer for web. Terse syntax, combining C# and HTML almost seamlessly.
|
JavaScript |
Used to support UI details in web. In this architecture most (UI) logic would be handled in C# instead.
|
TypeScript |
Might be preferred over JavaScript in the future.
|
AJAX | For retrieving / posting back parts of pages to the server and back. |
jQuery |
Used to support UI details in web. Can make some JavaScript shorter. |
JJ.Framework.JavaScript |
Used to support UI details in web.
Remembering scroll position, cookie functions, URL parsing.
Might be extended with one-line AJAX functions one day.
|
JJ.Framework.Mvc |
Extensions to MVC for web development.
|
Html.BeginCollection |
Part of JJ.Framework.Mvc . Makes it possible to send tree structures over HTTP to the server-side MVC .
|
Html.BeginCollectionItem |
Alternative for JJ.Framework 's Html.BeginCollection .
Allows sending a collection over HTTP to server-side MVC , but not trees.
|
WinForms |
Used in some projects: in small utilities and JJ.Synthesizer uses it as the top-most layer.
|
---|---|
SimpleProcessForm | Part of JJ.Framework.WinForms . A base user interface for a utility that runs a process. |
JJ.Framework.VectorGraphics | A custom-programmed vector graphics model. Can be used for component-based user interfaces. |
MSTest | For automated / unit testing. Seems a deprecated framework. Might upgrade, but it ain't on the top of the list. |
---|---|
JJ.Framework.Testing |
Extends the Assert class , but automatically includes the tested expression in the error messages.
|
DebuggerDisplays | A technique to quickly display helpful info in the watch screen of a programming environment. |
JJ.Framework.Exceptions |
Contains Exception classes for basic errors.
Clear concise error messages,
that include tested expressions and tested values.
|
Accessor |
For accessing the internals of types for instance for testing purposes.
|
JJ.Framework.Text | Basic helpers for working with text. |
---|---|
JJ.Framework.IO |
Contains various file functions, functions for working with streams and working with CSV's .
|
JJ.Framework.HtmlToXml |
HtmlToXmlConverter class that steals from SgmlReader . It does what its name implies.
|
JJ.Framework.Xml |
A convenient way to map XML to (C# ) classes.Access XML nodes more safely, with null and uniqueness checks.
|
JJ.Framework.Xml.Linq | " |
Embedded Resources | Embedded resources allow compiling files and content right inside a DLL or EXE . |
EmbeddedResourceReader |
Makes it a little easier to get embedded resource Streams , bytes and strings .
|
Resource Strings | For localization, resx files can be used in Visual Studio . |
---|---|
JJ.Framework.ResourceStrings | Reusable button texts and such in multiple languages. For now supports Dutch, US English and some broken Polish. |
Localization | More ideas about localization. |
JJ.Framework.Configuration |
For working with complex configuration files. Easier than System.Configuration .
|
---|---|
Configuration | More info about configuration. |
JJ.Framework.Security | A generic interfacing for authenticating a user and yet to be tested hashed salted password authentication. |
---|---|
Security | If more might be needed security-wise, it may be hidden behind generic interfaces, abstracting the security system. |
JJ.Framework.Logging |
For now contains not much more than the ExceptionHelper class, which for instance converts Exception information to a string .
|
---|---|
Logging |
More info how JJ.Framework.Logging might be extended to contain more code for logging.
|