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.
|