ThinkGeo.com    |     Documentation    |     Premium Support

"Developer experience" using MVC

Hello,


We are a long-time user of the Desktop map component.  Now I've been tasked with looking at what is involved with using the MVC (and I will probably check Web edition as well) for building a Web version of our app, perhaps targeted at devices such as iPads and Android tablets.  After reviewing the documentation and videos, etc., it seems that the map component coding will be reasonably similar to what I wrote for desktop.  I hope ThinkGeo does not mind if I ask to hear from those who have used either MVC or Web edition as to the experiences of coding the interface around the ThinkGeo map component, which is where I know the differences will come up.  I have done some non-mapping ASP MVC and WebForms coding, so I know how they work and the differences between the two.  Can all the interface "stuff" be done with my native .NET language, C#?  I have never been a big JavaScript fan and I think my biggest concern is that most of the interface coding will need to use JavaScript.  In our desktop app there are probably thousands of lines of code connecting the map with the interface (a fairly complex interface) and the thought of writing thousands of lines of JavaScript is not real appealing.  How complex of an interface can we expect in a Web version?  Do we have to resort to using jQuery, etc. to make this a manageable undertaking?


Thanks,


Allen


(And thanks again for letting me post something slightly off-topic.)



Hi, 
  
 As customer I have been using at first Desktop then ASP/Ajax and now MVC.  MVC is the web application model that I enjoy big time but don’t get me wrong if you want to build nice looking and responsive application the learning curve is far to be an easy one…  All the technical stuff that everybody speak about like CSS3, HTML5, jQuery, Bootstrap, knockout.js, amplify.js,…  and the Single Page application model is what you will have to deal with if indeed you want create and provide beautiful web application that can be used from desktop to smartphone. 
  
 jm.

Jean-marie, thank you very much for the comments.



Hi Allen, actually, as a support guy, I also just had the transfer from “ThinkGeo Professional Project Team” where I experienced several mobile device targeted applications with MvcEdition, such as IPAD, Android etc. From my personal understanding, Mvc is much efficient and performs much better than traditional ASP.NET, if we integrate the features of “CSS3”, “HTML5” and JQuery etc. into the application, it can work as a mobile native-based application without internet (Offline).  Here is some information on it w3.org/TR/offline-webapps/ . But the thing which annoys me a lot is communicating between “Controller” and “Client Side View Page”, especially for some complicated objects, I need to create the customized ModleBinder for them, parse them on client side by myself and update the parsed response to client elements. so how many JavaScripts that you need to create is based on the detailed requirements, especially for the commications between server and client side, I guess.


I guess maybe you have looked thought all the installation Mobile samples and corresponding Quick Start guide at wiki.thinkgeo.com/wiki/Map_S...tart_Guide . All these are created just based on “JQuery”, if it’s not efficient or unable to fit your requirements, I guess you can try some other Js libraries, such as the one Jean-marie mentioned earlier.


 


Thanks,


Johnny



Johnny and Jean-marie, 



Thanks for the comments. I did not expect it to be easy! I imagine the code involving the map would be the easy stuff since we've been using MapSuite for about three years and I've written a lot of code around it. One of the main reasons I steered my career away from Web is that it's gotten very complicated, or so it appears. Many years ago I could write HTML, maybe a little JavaScript, and figure out how to upload it to a Web server and it worked on a PC and that was about it! Now we constantly struggle with writing code once that will work on PC, Apple, and Android, and all the browsers as well and it just appears to be a horror story. In situations like this I would feel much more comfortable using something like Adobe Flex, but that rules out using the app on any Apple devices, I guess. Would the Silverlight path be an option? According to Wikipedia there is support for Windows and Mac but the article is from 2007 or 2008 and doesn't mention Android. 



Allen



Just FYI, here are some YouTube videos of our desktop app…the goal would be to duplicate a certain level of functionality in a Web application so that it would be seen as a viable replacement for the PC version.  The application usually has a GPS connected to it, which is one of the functions that probably would not make it to a Web application. 
  
 youtube.com/user/OnSceneXplorer?feature=watch 
  
 Part of the learning process would be to determine how in a Web application to, to some degree, duplicate the ribbon, which is essentially the central focus of most functions in our desktop app.

Hi Allen, 
  
 Thanks for your detailed information. I have a quick view of all your vedios, I’m not sure whether you need to implement what’s the percentage of all the functionalities shown in your tool, but I guess it’s a lot.  
  
 Actually, just as you mentioned, Flex and Silverlight are not the good options for mobile devices. Both of them are not supported by IOS and Android platform. While HTML5 is a new cross platforms technology which can be supported by all the popular platforms, with the help of “JQuery Mobile” and “Media Query Css”, we can easily create the cross-platform application which can fit different devices automatically.  
  
 After checking all the vedios shown in your link, seems that it’s similar to an application that I worked on days before, it’s also about converting a similar Desktop Applicaiton like yours to a mobile devices application using MVCEdition, it’s a location based applicaiton which gets the current address read from GPS module using HTML5. It also support offline mode and bad internet enviroment. Here are are hints that helps: 
  
 1. Create the different models for different dialogs or object shown in your panels. also create the coressponding ModelBinder for them. 
 2. Create the JsonSerializer class for serialize and deserialize on server side. 
 3. Create  toJson and FromJson function on client side, which is used to convert json to string and back. 
 4. Create the Offline data class based on “HTML5 Application Cache” to make sure your application support bad internet enviroment and no internet enviroment. 
 5. Create the GPS class to read current location from GPS module of the device. If you don’t think it’s reliable, I guess you can try some purchased JS liberaries. 
  
 Hope it helps. 
  
 Regards, 
 Johnny

Hi Johnny, 
  
 Thanks for the continued input.  I think my general task now is to figure out what can be done for an interface and then we will look at that and decide what features are not technically possible or practical to implement. To some extent we already have a hunch that GPS-based functions would probably not be converted.  I have done a little more research and found the “jQuery UI” plugins which probably goes some distance in simplifying the coding of the interface, so I will probably start by playing with that and making some demo pages showing what can be done.  We have completed some work in moving single functions out of OnScene Xplorer onto smaller devices, notably phones, whereas this effort would be targeted at devices with larger displays such as desktops and tablets of various types. 
  
 The boss gave me this task to work on next week while he’s out of town so I’m going to try to get some other stuff done this week and go back to this next week. 
  
 Allen 
  


I just went over some of the samples on the jQuery UI page.  I was not encouraged by the fact that many of them don’t work in IE 9 but do in Chrome.  This is similar to the result I had testing some other solution that relied on JavaScript…eventually the tech person there admitted it doesn’t work with IE, only Chrome.  They just don’t post that little detail on their Web site.  How do you tell people that your application does not work on the most commonly used browser?

Hi Allen, 
  
 Actually, we haven’t tried all the JQuery UI controls in our projects, but if we get some ones which don’t work in a specified browser, such as IE9, we will try some workarounds to keep the capability on these browsers, such as create a similar control by ourselves which has less functionalities, but the precondition is that we shouldn’t cut off this functionality. If after some extra works can help, such as upgrade to .NET 4.5, we will public these to our website, maybe in a FAQ etc. if the situation is that we are unable to support some browsers because of some impersonal reasons, such as IE9 doesn’t support HTML5 Application Cache, I guess we  should find the official documentation and public this reason to your users.  
  
 Hope it helps. 
  
 Johnny 


Hi Johnny, 
  
 I appreciate you continuing with this discussion.  I find your comments interesting.  The reason I would use something like jQuery is that I don’t really have the JavaScript skills to do the kind of stuff it does but then if there is something it doesn’t do I have to have those very skills to write my own code to overcome jQuery limits…plus take on the burden of forever of fixing my code if it doesn’t work in IE 11, IE 12, etc. or something in jQuery becomes broken in IE 11, IE 12, etc.  By the way, I failed to mention the details but when I look at the jQuery UI demos for “Dialog” most of them do not work in IE 9 but do in Chrome.  It seems most of the other things work but I haven’t done a side-by-side comparison of all the demo pages. 
  
 OK, maybe I can get input on one more issue.  I have a hard time believing that jQuery, JavaScript, etc. is practical in a Web app that could have tens of thousands of lines of code.  Even if we removed half the functionality in our desktop app we’d be left with 20 or 30,000 lines of C# code, and I can’t imagine JavaScript being so much more efficient that the equivalent JS code would be just a couple hundred lines.  How would a developer go about organizing that much code in an developmental environment which is probably no more sophisticated than a text editor?  I think I really need to see some success stories…others who have developed rather complex Web apps using this technology that has thousands of lines of code. 
  
 I’m going to deal with some other issues until next week.  Thanks! 
 Allen

Hi Allen, 



Just now I tried the JQuery UI dialogs in IE9, I guess you are correct, some of them don't work for IE9. But in a project, I guess we can simply use the ones which work fine if we have no choice. Actually, I guess all these common issues which may be encoutered by everyone who use JQuery, especially for dialog, should be resolved by reporting them to JQuery Discussion Foruml. 



Actully, from the design pattern of MVC, Microsoft doesn't recommand us writing all the functionalities in view module, in other words, not in JavaScript.   Model-View-Controller, we should convert each object used in our application into Model, also we can call it data accessor whic used to read required data from datasource and convert them into .NET object models, it's in C# not JavaScript. View just is in charge of displaying the data from controller/action, or Model, if we need some changes to these data on client side or display/hide some elements, we need javaScript, it's not too much. Controller/Action is  used to process the logic and some complicated calculations, it can be copied from your desktop applicaiton, it's in c# as well. so there isn't too much JavaScript in an application, we just use it to change the some properties of HTML elements, such as display/hide, change text etc. Actually, our professional team has experienced lots of projects like this, but I'm not sure whether they can show some vedios about it to you, because these projects come from some of our customers. 



Anyway, hope you have a good journey with it. 



Thanks, 

Johnny



Hi Johnny, 
  
 Yes, I guess you are right…my mind is not yet thinking in MVC terms after only doing one project with it.  I had used the Razor syntax and I know I used  a helper function to build combo boxes and I’m pretty sure there are helper functions for other interface items.  Anyway, I met with the boss today and he gave me a list of a few things to try, mainly with loading and styling the map, and anything related to the interface could be cobbled together without getting fancy at this point.  So on Monday I will download a trial of the MVC product and hack away. 
  
 Allen

Hi Allen, hope everything goes well with you and please feel free to let me know if you have any questions, suggestions or problems. 
  
  
 Regards, 
 Johnny