Skip to content

Commit

Permalink
Merge pull request #4 from eqxmedianl/net6.0
Browse files Browse the repository at this point in the history
Added support for .NET 6.0
  • Loading branch information
jarnokamminga authored Dec 29, 2021
2 parents 81509f7 + ef50b44 commit 5a917ed
Show file tree
Hide file tree
Showing 22 changed files with 1,143 additions and 34 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,5 @@ Help/

Debug/
Release/

/UpgradeLog.htm
25 changes: 25 additions & 0 deletions Documentation/net6.0/Bibliography.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<bibliography>

<reference name="Writing a Transactional Application">
<title>Writing a Transactional Application</title>
<author>Microsoft</author>
<publisher>Microsoft.com</publisher>
<link>https://docs.microsoft.com/en-us/dotnet/framework/data/transactions/writing-a-transactional-application</link>
</reference>

<reference name="Features Provided by System.Transactions">
<title>Features Provided by System.Transactions</title>
<author>Microsoft</author>
<publisher>Microsoft.com</publisher>
<link>https://docs.microsoft.com/en-us/dotnet/framework/data/transactions/features-provided-by-system-transactions</link>
</reference>

<reference name="System.IO.Abstractions">
<title>System.IO.Abstractions</title>
<author>Community</author>
<publisher>GitHub.com</publisher>
<link>https://github.com/System-IO-Abstractions/System.IO.Abstractions</link>
</reference>

</bibliography>
150 changes: 150 additions & 0 deletions Documentation/net6.0/Content/About.aml
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
<?xml version="1.0" encoding="utf-8"?>
<topic id="About" revisionNumber="1">
<developerConceptualDocument
xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5"
xmlns:xlink="http://www.w3.org/1999/xlink">

<!-- TODO: do add a summary -->
<!--
<summary>
<para>Optional summary abstract</para>
</summary>
-->

<introduction>
<para>
<literal>EQXMedia.TxFileSystem</literal> is a transactional file system
wrapper using the .NET file system abstractions from
<literal>System.IO.Abstractions</literal>.
</para>
</introduction>

<section address="Features">
<title>Features</title>
<content>

<list class="bullet">
<listItem>
<para>Providing a <literal>System.IO.Abstractions</literal> file
system wrapper.</para>
</listItem>
<listItem>
<para>Can be used to wrap any file system that implements the
<literal>IFileSystem</literal> interface.</para>
</listItem>
<listItem>
Support transactional operations on:
<list class="bullet">
<listItem>
<para>Files,</para>
</listItem>
<listItem>
<para>Directories,</para>
</listItem>
<listItem>
<para>File Streams.</para>
</listItem>
</list>
</listItem>
<listItem>
<para>Uses a fully automatic journal for transactional operations
internally.</para>
</listItem>
<listItem>
Supports multiple framework versions, currently being:
<list class="bullet">
<listItem>
<para>.NET 5.0,</para>
</listItem>
<listItem>
<para>.NET Framework 4.6.1,</para>
</listItem>
<listItem>
<para>.NET Standard 2.1,</para>
</listItem>
<listItem>
<para>.NET Standard 2.0.</para>
</listItem>
</list>
</listItem>
<listItem>
<para>Drop-in replacement for <literal>IFileSystem</literal>
implementations already used inside projects.</para>
</listItem>
<listItem>
<para>Exposing the <literal>TxFileSystem</literal> instance through
exposed properties too to maintain <link
xlink:href="Transactions#DataIntegrity">Data Integrity</link>.</para>
</listItem>
<listItem>
<para>Plain proxy functionality for all remaining parts of the
<literal>System.IO.Abstractions</literal> interfaces.</para>
</listItem>
<listItem>
<para>
Supports <literal>IntelliSense</literal>.
</para>
</listItem>
<listItem>
<para>Fully covered by Unit Tests (<legacyBold>100% code coverage
</legacyBold>).</para>
</listItem>
</list>

</content>
</section>

<section address="History">
<title>History</title>
<content>

<para>
<!-- TODO: write the actual contents below -->
Contents will follow soon.
</para>

</content>
</section>

<bibliography>
<cite>Writing a Transactional Application</cite>
<cite>Features Provided by System.Transactions</cite>
<cite>System.IO.Abstractions</cite>
</bibliography>

<relatedTopics>

<link xlink:href="Library_Concepts"
topicType_id="1FE70836-AA7D-4515-B54B-E10C4B516E50">Library Concepts</link>

<externalLink>
<linkText>Project Website</linkText>
<linkAlternateText>Go to the project website of TxFileSystem</linkAlternateText>
<linkUri>https://txfilesystem.io/</linkUri>
<linkTarget>_blank</linkTarget>
</externalLink>

<externalLink>
<linkText>Website of EQX Media B.V.</linkText>
<linkAlternateText>Go to the website of EQX Media B.V.</linkAlternateText>
<linkUri>https://www.eqx-media.nl/</linkUri>
<linkTarget>_blank</linkTarget>
</externalLink>

<externalLink>
<linkText>NuGet Gallery | EQXMedia.TxFileSystem 2.0.0</linkText>
<linkAlternateText>Go to the package listing of TxFileSystem on NuGet Gallery</linkAlternateText>
<linkUri>https://www.nuget.org/packages/EQXMedia.TxFileSystem/2.0.0/</linkUri>
<linkTarget>_blank</linkTarget>
</externalLink>

<externalLink>
<linkText>GitHub.com | eqxmedianl/EQXMedia.TxFileSystem</linkText>
<linkAlternateText>Go to the repository of TxFileSystem on GitHub.com</linkAlternateText>
<linkUri>https://github.com/eqxmedianl/EQXMedia.TxFileSystem/tree/main</linkUri>
<linkTarget>_blank</linkTarget>
</externalLink>

</relatedTopics>
</developerConceptualDocument>
</topic>
32 changes: 32 additions & 0 deletions Documentation/net6.0/Content/Concepts.aml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<topic id="Library_Concepts" revisionNumber="1">
<developerConceptualDocument
xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5"
xmlns:xlink="http://www.w3.org/1999/xlink">

<introduction>

<para>
This OpenSource .NET library is designed and implemented after a couple
of fundamental concepts. These concepts are the cornerstones of the
functionality this library provides.
</para>

</introduction>

<section address="Concepts">
<title>The Concepts</title>
<content>
<para>
The concepts used in the design and implementation of this library are
explained in the child topics of this topic. They can be read using
the <legacyBold>Table of Contents</legacyBold> of this documentation.
</para>
</content>
</section>

<relatedTopics>

</relatedTopics>
</developerConceptualDocument>
</topic>
108 changes: 108 additions & 0 deletions Documentation/net6.0/Content/Concepts/FileSystemAbstraction.aml
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
<?xml version="1.0" encoding="utf-8"?>
<topic id="FileSystem_Abstraction" revisionNumber="1">
<developerConceptualDocument
xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5"
xmlns:xlink="http://www.w3.org/1999/xlink">

<introduction>

<para>
This library is built on top of interfaces that are provided by
<literal>System.IO.Abstractions</literal>. That library abstracts file system
interaction methods from <literal>System.IO</literal>.
</para>

</introduction>

<section address="AbstractionInterfaces">
<title>Abstraction Interfaces</title>
<content>
<para>
By abstracting the file system interaction methods from
<literal>System.IO</literal>, the <literal>System.IO.Abstractions</literal>
provided interfaces enable us to easily create our own implementations of file
systems.
</para>
<para>
This library makes use of this advantage at the base of its design by providing
an implementation of its own. The <codeInline>TxFileSystem</codeInline> class is
an implementation of a file system using the abstraction interfaces provided by
<literal>System.IO.Abstractions</literal>.
</para>
<para>
The design of the <codeInline>TxFileSystem</codeInline> class brings the added
functionality of <link xlink:href="Transactional_Operations">
Transactional Operations</link> on files, directories and file streams. By
providing a file system that exactly resembles the default implementation
<literal>System.IO.Abstractions</literal> provides with its
<codeInline>FileSystem</codeInline> class.
</para>
<para>
By exactly resembling the <codeInline>FileSystem</codeInline> class,
<codeInline>TxFileSystem</codeInline> can be used as a drop-in replacement.
Requiring developers using <codeInline>TxFileSystem</codeInline> just to add a
few extra lines to their existing codebase. And take advantage of transaction
support, bringing them <link
xlink:href="Transactions#DataIntegrity">Data Integrity</link> to their
applications performing file system operations.
</para>
</content>
</section>

<section address="UnitTesting">
<title>Unit Testing</title>
<content>
<para>
By abstracting file system interaction methods from
<literal>System.IO</literal>, <literal>System.IO.Abstractions</literal>
provides interfaces for the normally <codeInline>static</codeInline>
classes inside <literal>System.IO</literal>.
</para>
<para>
This results in the abstracted implementations of these formerly
<codeInline>static</codeInline> classes to become
<legacyItalic>mockable</legacyItalic>. Being
<legacyItalic>mockable</legacyItalic> we are capable to replace the functionality
of their methods inside Unit Tests.
</para>
<para>
As said, because the <codeInline>TxFileSystem</codeInline> class exactly resembles
the <codeInline>FileSystem</codeInline> class, it can be Unit Tested the same way.
As it can be used as a drop-in replacement. Simply pass a
<codeInline>MockableFileSystem</codeInline> instance from
<literal>System.IO.Abstractions.TestingHelpers</literal>, using the
<codeInline>fileSystem</codeInline> parameter, to the constructor of
<codeInline>TxFileSystem</codeInline> inside Unit Tests.
</para>
</content>
</section>

<relatedTopics>

<link xlink:href="Library_Concepts"
topicType_id="1FE70836-AA7D-4515-B54B-E10C4B516E50">Library Concepts</link>

<externalLink>
<linkText>NuGet Gallery | EQXMedia.TxFileSystem</linkText>
<linkAlternateText>Go to the package listing of EQXMedia.TxFileSystem on NuGet</linkAlternateText>
<linkUri>https://www.nuget.org/packages/EQXMedia.TxFileSystem/</linkUri>
<linkTarget>_blank</linkTarget>
</externalLink>

<externalLink>
<linkText>NuGet Gallery | System.IO.Abstractions</linkText>
<linkAlternateText>Go to the package listing of System.IO.Abstractions on NuGet</linkAlternateText>
<linkUri>https://www.nuget.org/packages/System.IO.Abstractions/</linkUri>
<linkTarget>_blank</linkTarget>
</externalLink>

<externalLink>
<linkText>NuGet Gallery | System.IO.Abstractions.TestingHelpers</linkText>
<linkAlternateText>Go to the package listing of System.IO.Abstractions.TestingHelpers on NuGet</linkAlternateText>
<linkUri>https://www.nuget.org/packages/System.IO.Abstractions.TestingHelpers/</linkUri>
<linkTarget>_blank</linkTarget>
</externalLink>

</relatedTopics>
</developerConceptualDocument>
</topic>
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<topic id="Non_Transactional_Operations" revisionNumber="1">
<developerConceptualDocument
xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5"
xmlns:xlink="http://www.w3.org/1999/xlink">

<summary>
<para>
<legacyItalic>Non-Transactional Operations</legacyItalic> don't need to ensure
<link xlink:href="Transactions#DataIntegrity">Data Integrity</link> is
maintained by applications using this library. This is a not a requirement for
these kind of operations, as they simply don't make any modifications to file
system resources.
</para>
</summary>

<introduction>

</introduction>

<section address="NotJournalized">

<title>Not Journalized</title>

<content>
<para>
As <legacyItalic>Non-Transactional Operations</legacyItalic> don't make any
changes to file system resources, the implementation of these methods simply
proxy to the same methods of the file system that is wrapped using the
<codeInline>TxFileSystem</codeInline> instance.
</para>
<para>
These kind of operations are also not enlisted inside the <link
xlink:href="Transactional_Journal">Transactional Journal</link>, because they
will never have to be rolled back.
</para>
</content>

</section>

<relatedTopics>

<link xlink:href="Library_Concepts"
topicType_id="1FE70836-AA7D-4515-B54B-E10C4B516E50">Library Concepts</link>

</relatedTopics>
</developerConceptualDocument>
</topic>
Loading

0 comments on commit 5a917ed

Please sign in to comment.