I developed a simple GUI application for Windows7. It reads data from some files, get some inputs from dialog boxes with the user, and produces output to the screen - which the user can then copy to paste at an Office document - or to a user output file.
I want to convert my application to a web site, so that the part that reads data from setup files is central, but each user that comes in can configure his own look&feel (colors, etc...), and still be able to copy the application's output (graphs) at the clipboard for use with his local applications (Word, Excel, etc...), upload info from his local PC (scripts for executing instructions) for the central application to process, and receive outputs from the central application into his local directories.
Note: if it's not possible for the user to configure his own look&feel, I want to give him a chance to upload config files for his own inputs. The application produces graphs, and different users may want to assign different color values to the produced graphs. At my mono-user application right now I am loading a color-config file for the pie charts, but that doesn't seem possible to migrate for a central application that may have two or more concurrent clients (how could it handle two or more color config files, if there is only one instance of the program running?) This is the kind of questions that conceptually are hard for me to figure out (regardless of the technical subtleties).
It seems that Linux is the most robust and economic server application, so apparently my best option is to develop make the central server app under Linux.
I am using CodeBlocks 10.05 and I have the impression that I am using C++ standard code that should be portable across platforms, but I am a little bit mixed up about next steps.
General orientation is welcome. Specifically:
a) Pointing me to good books/websites about the basics of client/server architecture, with examples for beginners (if they include the above-mentioned services, so much the better!).
b) I assume that a Linux server app can talk to Windows clients, but I get quite confused here... should I write the server application and compile/link for Linux, and then write the client application and compile/link with Windows GUI libraries? Are communication protocols among platforms standardised? Will developing under the same platform (CB 10.05, which seems to support Linux + Windows) make these issues transparent?
c) If the tutorial/recommendations deal with the general problems of multi-clients parameters for a single central-node, then recommendations are doubly appreciated!
Help! - Migrating from Windows7 GUI application to Linux client-server
Started by gganem, Jun 04 2011 05:45 PM
2 replies to this topic
#1
Posted 04 June 2011 - 05:45 PM
|
|
|
#2
Posted 05 June 2011 - 11:40 AM
You have mixed up a lot of things. I will try to answer one by one:
1. First, if you plan to host a website whether you do it in windows or linux, it will be accessible from both windows or linux client using simple browser IE/Firefox/Chrome :)
2. If you make a website, you DON'T need to write a client application at all. All you write is server side code. If using Windows with license, ASP.NET with c#/VB.NET is the rule. The web server required to host your website could be IIS then.
3. If you use Linux then probably Apache is a good choice of running a server. But writing a direct web application in bare c is going to be a lot of pain. There are still options such as java, php, ROR just to name a few. This is because there is no inherent framework in C/C++ for acting as a web server and you have to write a lot of things yourself.
4. Your GUI is in any case going to change drastically since you don't have same UI elements in web interface although they are much closer. For e.g. you have a button in desktop GUI as well as a web page. But the entire GUI experience of browsing web is different from using Desktop apps even if we ignore the speed diff.
5. Your multiple instance concern i.e. how would two different color schemes be loaded for a user if total one instance is running would be internally handled by a server. A web server or for that matter almost every practical server creates separate instance for serving a particular client page and using any web language you would be able to server dynamic pages to your clients.
6. Any file handling stuff that your server is doing for each client will be done on server machine and needs to be catered accordingly.
7. I suggest you should read any tutorial on writing an ASP.NET web application. The reason i emphasize Windows platform provided you have license is, that it is far easier to create a web app and deploy for a beginner compared to doing the same on Linux. So there will be a huge difference in learning curve.
8. Either way the internals of your client server handling, http protocol etc. would not be visible and is not required of your to get your job done. Learning that is going to take a reasonable amount of time. So stick to writing and hosting a basic web page and then application.
1. First, if you plan to host a website whether you do it in windows or linux, it will be accessible from both windows or linux client using simple browser IE/Firefox/Chrome :)
2. If you make a website, you DON'T need to write a client application at all. All you write is server side code. If using Windows with license, ASP.NET with c#/VB.NET is the rule. The web server required to host your website could be IIS then.
3. If you use Linux then probably Apache is a good choice of running a server. But writing a direct web application in bare c is going to be a lot of pain. There are still options such as java, php, ROR just to name a few. This is because there is no inherent framework in C/C++ for acting as a web server and you have to write a lot of things yourself.
4. Your GUI is in any case going to change drastically since you don't have same UI elements in web interface although they are much closer. For e.g. you have a button in desktop GUI as well as a web page. But the entire GUI experience of browsing web is different from using Desktop apps even if we ignore the speed diff.
5. Your multiple instance concern i.e. how would two different color schemes be loaded for a user if total one instance is running would be internally handled by a server. A web server or for that matter almost every practical server creates separate instance for serving a particular client page and using any web language you would be able to server dynamic pages to your clients.
6. Any file handling stuff that your server is doing for each client will be done on server machine and needs to be catered accordingly.
7. I suggest you should read any tutorial on writing an ASP.NET web application. The reason i emphasize Windows platform provided you have license is, that it is far easier to create a web app and deploy for a beginner compared to doing the same on Linux. So there will be a huge difference in learning curve.
8. Either way the internals of your client server handling, http protocol etc. would not be visible and is not required of your to get your job done. Learning that is going to take a reasonable amount of time. So stick to writing and hosting a basic web page and then application.
#3
Posted 06 June 2011 - 06:09 AM
Thanks for setting me in the right direction (again!). Looks as if there is some homework to do, but now at least I know where to get started.
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users


Sign In
Create Account


Back to top









