There is a program written by us in Delphi, it serves to graphically display information about the road. The road itself in it looks like several horizontal bars, the colors of which determine the properties of the road in a given section, the properties of the road for each section are stored in the database, it is possible to edit the properties and sections.

Now we want to remake it on a more modern platform. Choose what to do. It is necessary that the system also functions through a browser (PC and mobile devices) with access to a remote database, and as a local application with a choice of whether to take data from a remote database or from a local file previously downloaded from the browser. It would be desirable not to do double work, therefore the technologies that can ensure the use of the same classes in the browser version and in the local version are interesting first of all. Is it possible? Or do you have to conduct parallel development of the site and the client?

We focus on C #, because we recently tried and liked it, but since we will have to learn from scratch, we consider ALL possible options.

Silverlight? WPF? Java? Will they help us?

  • 3
    It seems to me that the best choice will be for you to do the server part on ASP.NET MVC or ASP.NET Web Api - this will need to be done once, and then screw the client on WPF, then the browser client if necessary. The server can also be in Java, but the desktop client is in any case more convenient, faster and more beautiful to do on WPF. By the way, why do some people write that Java is simpler than Sharpe? I don’t know, in Java there are no heaps of features that exist in Sharpe, which just increase the usability and readability of the code. - junior_dev

5 answers 5

Hmmm, so that it shows in the browser, and there was an application?

I suggest then, either write in Java

Or use a bunch of Silverlight and WPF

WPF is generally good because it is designed for graphical displays, it uses a video card more .., and Silverlight can be embedded in the site. In this case, the platforms are the same, so that classes can be used there and there.

  • 2
    I’ll add a little bit that WPF forms can be compiled into a browser application and run through a browser, then you don’t have to bother with SilverLight, but just use the same code - Seyran
  • What does a person familiar with Delphi learn quickly: WPF or Java? - newby_khv
  • If you can always work through the browser - this is good and then it is possible without a client, but only if you do not have to install the server on the locale. So can WPF? - newby_khv
  • Java is easier to learn than WPF (C #), it seems to me - in the last year I have programmed both on the one and the other. - alex91
  • I agree, WPF is more complicated, even with C # (I started on Delphi) the transition to WPF was tight, I almost realized everything in Java. - IVsevolod

I would still advise to start from the other end: not from what I like, but from what will be in demand. WPF / Silverlight is certainly wonderful, but WP7 / 8’s market share is around 1-2% - in fact, it’s effort and money to the wind.

If roughly then the smartphone market is divided by 20% - iOS and another 70% Android, 10% for everything else: WPF, Symbian, BlackBerry, and so on. exotic. There are small variations across countries, continents, but in general the picture is exactly that .

The only technology I know that covers both desktop and iOS and Android is HTML5. With regard to the development environment, this is PhoneGap - by the way, it also covers WP7 (by WP8, hello from Bill Gates).

Of course, there are generally large complaints about the performance of HTML5 solutions, in particular, Facebook threw its client for Android and iPhone into the dump, rewriting them for native applications. But nevertheless - it makes sense to try on Phonegap.

If you decide to write under the desktop and Android - then there are no options - only Java. C # you are not an assistant here.

  • It is possible under Android on Mono, but it will not be very comfortable. I did not touch it and it seems to me that there are still a number of bugs lurking there that if they start appearing in the project, then the solution is to search for a long time, if it exists of course. - alex91
  • one
    @Barmaley about, went highly intellectual conversation of experts ... We are waiting, with the new epithets. - alexlz
  • @Barmaley, I imagine the situation. Big project, incomprehensible bugs and even deadlines. This is the worst scenario, but it is also possible :) - alex91
  • 2
    The authorities chose WPF, tomorrow I'll tell them about Java. We are not going to write applications for mobile devices, they are supposed to work through a browser from a remote database only if they have an Internet connection. "Client" having the ability to take data from a local file is also needed only under Windows xp / 7 But. I’m thinking that a C # WPF client programmer will write, but can I then, using his code, build a C # ASP.NET site? Actually, that is the question. And also, can you advise something better and faster to master? (I already understood about Java) - newby_khv
  • At the expense of WPF pleased :) At the expense of collecting the site - it seems to me that yes. Both there and there C #. You will take all the logic implemented in the classes and wrap it in ASP.net. - alex91

Try to do everything in Java (you can use, say, GWT / SmartGWT to work in a browser).

Moreover, the local version then you can not do at all. Just in this case all three main components (user interface (it is always in the browser), application server (apparently Tomcat) and DBMS) will be installed locally.

  • SmartGWT, he is quite an amateur. Second year with him toil) - Nofate

С # - (WP7, WP8, + Android, IOS (Mono)) - mobile platforms, all that is possible for this tool. And the Web (ASP.NET). WPF desktop applications. Under the web, I could not understand, if that does not judge strictly. Java - Desktop is Swing, + Android + web on it can be done in different ways.

At the expense of Silverlight, I am not aware.

    I would advise your site's API to write on ASP.NET WebAPI or on ASP.NET Core WebAPI.

    Then your client code may be different.

    But one can proceed from what is supported everywhere. HTML5 solutions may be good, but usually with performance problems. I would look in the direction of OpenGL. Therefore, you can select Unity3D for everything and write a GUI on it, while you can choose C # or JavaScript.


    Alternatively: For Desktop platforms, in order not to write different code for Windows, Linux, Mac OS X, you could use something related to Mono . At the time of writing the answer, this is Windows.Forms and GTK #.
    For absolutely all mobile platforms, you can use Xamarin. Representational syntax is conceptually similar to WPF.