Hello,
As you already mentioned that we can't include the option of referencing the DLL file in a project, or using DLL Import, or even keeping it in a Global Assembly Cache, it seems we are left with two other options:
1. Use reflection to locate and load the assembly and call the required methods by instantiating the classes from the DLL.
2. Use the AssemblyResolve event which is fired when the required assembly is not found. We can then use the event to load the assembly from any accessible location and proceed.
However, based on the given requirements, I think we can go with the first option as it seems to be straightforward and easy to implement (though it might be slower as compared to the second one).
Regarding the MVC and API background, in the past, I've worked on MVVM (as part of my personal project) and now working on freelancer-API to develop a Qt-based Python application (again a personal project). So, essentially, I have a little knowledge of MVC and API programming.
As part of some programming challenges (on Topcoder), I worked on parsing large matrices (both dense and sparse) from a text file. Though they were simple ones, in one such challenge, I used a quicksort algorithm to sort the data based on the indices. As your job seems to be a bit complex one, I may require to go through it (of course, if we proceed further).
Please reply with your opinion on the above-mentioned solution to the current project.
Regards,
Atul Rajdhar