Thread-Safe calling support in Remote Agency 2

In the next release of Remote Agency, the thread safe calling support will be added.

In the current version, all accessing to assets is from the thread which sending message to the Remote Agency Manager. Due to network transportation, this may cause multithread calling on the target service object. Without special treatment, some error may be caused when accessing object without thread safe designing.

In the next release, a new attribute is introduced. User can specify the behavior of thread using for each interface or the class of service object: Free — like now, use SynchronizationContext — useful on form based program, one certain free thread or one task schedule. A new task scheduler is builtin with Remote Agency which always use one thread to execute all jobs one by one. The task scheduler also support user passing a thread in as the working one inside. Therefore, user code can use the same thread to initialize some object and then turn it into a task scheduler to run all accessing on the same object.

New version plan of Remote Agency

I am excited to announce that Remote Agency will have one major update, version 2 in late this year.

Key features will be included in new version:

  • Speed up by combining serializing.
  • DataContractSerializer will be merged into main library. You can still use your own extended serializer, but this one will be shipped within the main library. Therefore, DataContractSerializer.EasyEncapsulation will be removed from the new version.
  • Reference to Roslyn directly, without CSharpRoslynAgency package.

Compatible issues:

  • If you have your own serializer, you need to rebuild one following new standard.
  • Facade classes will have some minor changes. You need to change your code working with them. In general, the amount of changes in each project will not exceed 10 lines of code.
  • There will be a new event for routing of the messages. The old one still works, but with forcible serialization, like in version 1.

There are many changes to be taken care within Remote Agency. I hope all my rest time in this year can make this change born.

Cheers,
Allen

Generate password node for SoftEther config file

Recently, I wrote an C# project for connect all devices from clients of my company to the server for remotely fault detection. SoftEther is chosen for underlying network solution.

The maintenance engineers don’t want to use the GUI of SoftEther to create profiles for each clients. A project is required for generating config files.

The only problem is how SoftEther store the password. I dig a lot and got the answer.

  • Password is encrypted by SHA0 on password + USERNAME in capital.
  • NTLM related password is encrypted by MD4.

 

Here is the password node generating project, based on C#, dotnet core 3. Actually, the code is tested on dotnet core 2 and netfx 4 also.

Multiple Low-end bar code scanners support for dotNet

Adds support for low end bar code scanners, which work as a keyboard only. By using this library, you can receive code from multiple scanners with the scanner handle id or name (seeing demo on Github).

Platform: dotNet Framework 4 on Windows x86, or x64 with 32-bit compiling (need 32-bit due to WinAPI calling)

Package: Nuget

Source code: Github

License: Demo and Test projects are licensed under MIT. Main and other libraries are licensed under LGPLv3.