I am not new when it comes to coding. I just havn't touched visual basic since vb6 and my latest project with that involved over 50,000 lines of code dealing with DirectX in creating a 2d map editor and a battle game where you could find games like battle.net then battle other players like tanks but with characters with different weapons. Since vb6 died, I been coding in php, mysql, js, jquery, ajax. But enough about my past.
What I am trying to do now-a-days is something like the attached image to re-jump my programming on PC:
I want to create a core server and core client that I can just drop ocx or dll files into a directory and the core client or server code will figure out a new feature is added and then process that code so I can hand out different features (plug-ins) to different coders if need be.
For the client, the core will a MDI and each plugin will be a FORM to make things simple then I just need to tell where to put that new FORM at on the menu. Maybe some sub-directory tree for that instead of code to allow for player customization.
For the server, I dont need no sort of interface just a way to process the new code to send the "Socket String" like ""MSGBooby:How you doing" tfrom the client to call the msg plug-in then process that string then and send it back out through the right socket.
To make things a little more complicated, I will need some database class as some server plug-ins will need to be dealing with the database unless I should open process close after every query which I highly doubt but I dont know what databases are available or is best using vs.net. I will most likely be using a mysql or mysqli remote server. I will just need a way to communicate with it. Thank you and anyway information, tutorials, examples on anything to help me accomplish this project would be greatly appreciated.
Last edited by psychotomus; May 5th, 2013 at 05:38 PM.
Plugins are handled in a variety of ways in .NET. Originally, if you wanted to create an application with a plugin architecture then you would just define your own interface, often named IPlugin and compile that into a DLL that you would reference in your app and all plugin authors would reference in their projects too. Your app would then have a dedicated plugin folder that it would search for DLLs and then use Reflection to find those containing a type that implemented IPlugin. It would then interact with each plugin via that interface.
Microsoft then added the System.AddIn namespace to the Framework. It still worked on similar principles but was more structured. Nowadays we have the Managed Extensibility Framework that takes things a step further still. You can use any of these options but I'd suggest either the first or last. Creating your own IPlugin interface is easiest but it it's not a bad idea to learn MEF at some point so maybe now's a good time.
I wonder if MEF is like MVC (Model View Controller) for web based applications? If you know what I am talking about.
Also, is there a free version of 2012 or am I stuck with 2010 express?
No, MEF is not like MVC.
Yes, there are Express editions of VS 2012. Things have changed a little in that regard from 2010. There is a new Express for Windows 8 and a new Express for Windows Phone, as well as Express for Web (equivalent to the old Visual Web Developer Express) and Express for Windows Desktop (equivalent to VB Express and C# Express together)