-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #4 from eqxmedianl/net6.0
Added support for .NET 6.0
- Loading branch information
Showing
22 changed files
with
1,143 additions
and
34 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -14,3 +14,5 @@ Help/ | |
|
||
Debug/ | ||
Release/ | ||
|
||
/UpgradeLog.htm |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
108
Documentation/net6.0/Content/Concepts/FileSystemAbstraction.aml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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> |
48 changes: 48 additions & 0 deletions
48
Documentation/net6.0/Content/Concepts/NonTransactionalOperations.aml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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> |
Oops, something went wrong.