JayData vs Upshot (crossplatform HTML5 app) - html

I'm just in the planning phase of developing my iPhone/iPad/Android app.
Basically the app will query data from remote data sources and store it locally. As data management will be the key feature of this app, so the UI isn't an important factory in this case. I decided to develop a HTML5 and JavaScript-based hybrid application and deploy it with PhoneGap/Cordova.
I'm a .NET developer, I use Visual Studio 11 for web development, so I found the Single Page Application template, which uses Upshot.js by default.
By exploring the alternatives, I've found JayData http://jaydata.org library. It seems to me that it's something similar to upshot.js.
Could you share your opinion, which way should I go to build a cross-platform HTML5 application?

Upshot and JayData looks similar but actually they are quite different, which makes your choice easier. There are things however both provides
Both has pros and cons (as everything in life)
Upshot.js is backed by Microsoft and focuses mainly on oData + Knockoutjs support. It is included in Visual Studio. You can query oData endpoints with it using a procedural query language.Upshot supports read/write operations, and also realtime updates.
JayData supports multiple datasources, among them are oData but also device local webSql as well, plus some other providers too. JayData let's you query oData or webSql on the same with, with sime JavaScript functions, so you dont have to learn sql and oData uri syntax. JayData provide read/write operations but realtime updates require a small user code.

Related

SAP PI/PO vs open source ESB advantages

Is SAP PI/PO now considered a true ESB? I've read various sources claiming it was not quite there 4-5 years ago.
And what if you have a very SAP-centric environment, would it be very strongly suggested to use PI/PO instead of the more standard integration platforms such as Mule ESB, Jboss Fuse, BizTalk and Oracle ESB?
If you primarily have expertise with the platform agnostic ESB's mentioned, would it still be worth integrating with SAP Pi? What are the advantages of PI?
I see they all have some option to integrate with SAP, but unbiased information seems hard to come by in the SAP-scene.
If your entire landscape consists of SAP modules then probably better to use PI.
If however you want to connect to other systems in the cloud, internally or externally then I would not choose PI.
PI is not an integration platform (better to use this phrase an an ESB). In this case it is better than have something fronting your SAP backend such as Biztalk, Fuse, Mule or other. They are more flexible and have more functionality when it comes to communicating with other systems and protocol. They are probably far easier to use as well.
Most of these integration platforms have commercial adapters that can connect to SAP. IBM's Integration Bus has SAP adapters, so does Fuse and others.
Like I said, it depends on your landscape and your integration requirements.
Today, as SAP NetWeaver 7.5 released, SAP PO is common ESB.
It is based entirely on Java8 and JEE5 standards, with optional old-fashioned ABAP usage.
Someone could implement integration scenarios with many tools (simple mappings, SOJO or EJB, or even your own JCA-adapter). Now SAP PO is really fast and reliable.

What to Use for PhoneGap Database Storage

I am writing an application using PhoneGap, and am finding it hard to work out how to store my data in a database. For the minute I just want to keep an open mind as I will be recommending technology options to our company.
The PhoneGap API for storage is here,
http://docs.phonegap.com/en/1.3.0/phonegap_storage_storage.md.html#Storage
It is based on this HTML5 spec,
http://www.w3.org/TR/webdatabase/
The problem for me is that the specification for this is not being maintained any more, and the standard has been deprecated.
The other problem is that I implemented a database using web database, and the versioning didn't work properly.
What is PhoneGaps stance on this and will PhoneGap look at other technologies such as the Indexed Database API,
http://www.w3.org/TR/IndexedDB/#database-concept
I am storing JSON data in the localStorage for now which is working great, but I am wondering if my database could get too big and it might not be the best option.
I faced the similar issue while developing an application few months back in which we were expecting to port the application to different platforms (with different versions). So instead of using the core storage mechanism which phonegap offers we went on using a dedicated storage framework which can provide consistent api but uses the best underlying storage mechanism.
There are variety of JS frameworks which can help you use the underlying storage. The following are few might interest you if you are planning to use the app on different platforms.
PersistenceJS - persistencejs.org
lawnchair - http://westcoastlogic.com/lawnchair/
persistencejs uses gears and localstorage in combination which helps to run the app on BlackBerry 5.x devices as well without any change.
I went on using the persistencejs and it have really worked well till now. We have ported the application on Android, iPhone, iPad, BlackBerry (5.x and greater)

Rails or node.js for Restful API

I have an existing website written in ASP.net, I have recently switched to Mac full time (With Windows in Boot Camp), and need to write a public API for accessing my website's MySQL data. I primarily want to use the API to allow building an iOS application.
I am interested in learning either Ruby on Rails or Node.js, I haven't used either of them yet.
Which language would be better for me to learn?
Rails is a relatively mature web framework based in Ruby and is designed for handling object-mapped data persistence in a relational database backend.
Node.js is much newer on the scene, and unlike Rails, is a more bare-bones package that allows for server-side Javascript applications thanks to a pretty tight HTTP(S) API. Node applications are by nature event-driven, which may or may not be ideal for your application.
Since it seems that you'll need data-persistence (you mentioned accessing MySQL data...), Rails might be easier to get started with, as it comes packaged with all the things you need in this respect and is designed to facilitate this sort of application.
If you you don't really need relational data persistence, Node is probably a better bet as it stays out of your way and lets you decide how to handle things. It's important to note that Node is a much more bare-bones "framework" than Rails -- if you want something slightly higher-level but still lighter than Rails that runs on Node, express is good place to start.
Still, if you want to try Node (I will confess: it's a lot of fun!), it's totally possible to access MySQL in a nice, event-driven (non-blocking) way. Here are two modules that will be helpful:
node-dbslayer
node-mysql
Neither is a language; they're frameworks. There is no "better", there may be a "more suitable" (probably not in this case).
Which would you prefer to develop in, Ruby (Rails), or JavaScript (node.js)?
Would you like to transfer that knowledge to a different job without rampup time (Rails)?
Would you like to learn something a bit more esoteric, event-driven (node.js)? (Ruby has Event Machine, but IMO node.js takes it a bit further.)
So this new application is just a middle man between your ASP.NET thing and your other clients.
In that case, totally use node. Node is great at being networking glue. Node scales great with IO bound applications (i.e. being a network middleman).
If you're going to use node then you probably want to look at express to make it easier.

GUI Development - Free Tools

We are looking at building a GUI application having the following attributes -
* approx 100 screens
* approx 200 users
* interfaces with 8 different legacy applications (protocols tbd but we are assuming web services will be exposed)
* has a separate data store for storing authentication and authorisation info along with few other information.
We are trying to avoid spending any money on procurement of physical servers, application servers etc.So we thought instead of building a web application , we could develop a standalone GUI based application that could be deployed on users' desktops considering that the users are less and the access to this application is confined to our organisation.
We were thinking of Java Swing as one of the options to consider. Is it a good choice? Please advice on the other options that we need to think about. We thought MS products would involving licensing costs to buy the product hence we are looking at developing the application using some free software tools.
Thanks a lot!
Regards,
V
I really like Swing and have written many applications with it, but I'm not sure the argument that you will get a cheaper solution because you have to procure less physical servers is a good reason for it.
There are other ways to use computational capacity on the client side. For example you could use SmartGWT. With a browser based solution you get easy deployment and have no problems with client-server communications (i.e. no proxy hell). It's possible to get all of this solved with a standalone GUI, but it requires experience and time (== money).
I think a standalone GUI is a good idea if you need a "rich" user experience and tight integration with the native environment. Web apps are generally less snappy and not so well integrated. If it's just about editing data on a server, the standalone GUI does not really have any advantages.
I won't rehash what we talked about in the comments. It seems you are focused on java gui solutions. With that said there are alternatives for developing gui applications with free tools. Just to name a couple, you could develop your client with Adobe Flex or Adobe Air, use python, php or ruby and GTK, or develop a windows GUI app using c# if your target os is windows. Similar to Air, Microsoft Silverlight is an option. Java is not the only solution.
Many Java gui apps are written using swing. The major competitor to Swing has long been SWT which is used for eclipse and by IBM. Javafx is a newer/alternative platform Sun/Oracle is behind, you should also look at. To be complete, you should also take a look at qt jambi that lets you develop in java against the Qt framework.

Best ORM option from ASP.NET MVC to mySQL

I have been using Linq-to-SQL. What is a good option for working with mySQL? I have been looking at NHibernate, Entity Framework, etc. Some comparisons (pros, cons) would be helpful
LLBLGen. The current version 2.6 is awesome. The designer is really easy to use, supports entity inheritance, type converters (which also can be used to bridge the gap between different types across RDBMS), validation, auditing, authorization and a ton more. Most importantly though, their documentation is stellar and their support forum is very responsive. The lead developer (who is also on stackoverflow) also answers users questions. I can't say enough about this tool, try it. It is well worth the cost.
The next version is probably going to blow everything else out of the game. In addition to being able to generate their traditional data later, you will be able to gen nHibernate mapping files, entity framework and linq2sql.
Here is a discussion comparing LLBLGen to Entity Framework and to nHibernate (of course it might be biased since it is on their forum).
http://www.llblgen.com/tinyforum/Messages.aspx?ThreadID=12811
http://www.llblgen.com/tinyforum/Messages.aspx?ThreadID=14659
Have a look at Mindscape LightSpeed. It includes LINQ querying and a Visual Studio designer that works with MySQL natively. You can update your database or sync changes from your database directly from within the LightSpeed designer also.
Mindscape also publish an open source repository of helpers for asp.net MVC which includes things they have built up to make development with LightSpeed and MVC easier (for example, you'll likely end up wanting a custom ModelBinder for whatever underlying model objects you use - Mindscape provide one that is richer than the default model binder).
There is a free version available to play with:
Mindscape LightSpeed
One of the guys at Mindscape has also written a fairly deep set of blog posts about building up an ASP.NET MVC solution using LightSpeed (although it's probably helpful no matter what you're using :-)
ASP.NET MVC & LightSpeed Blogs Posts
Nhibernate is quite mature and seems be to lighter compared to Entity framework.
Entity Framework works for most things in MySQL. You will notice problems here and there, but chances are they'll all be manageable issues.
Try DbLinq.
It's not a full port of Linq to SQL, but it does the basics.
I haven't used it yet, but there also Linq support in nHibernate now (check the link).
The biggest downside to Entity Framework is the lack of native Lazy Loading. I've used NHibernate and Entity Framework - personally I prefer the richness of NHibernate but Entity Framework is fairly quick and easy to get going and isn't as bad as the rep it sometimes get.
Check out Telerik's OpenAccess ORM. It's free for any free or Open Source database platforms (in your case, MySQL), and provides a slick and easy-to-use GUI. Not to mention that Telerik has great support forums and a huge library of video training.
OpenAccess offers LINQ support, POCO, forward- and reverse-mapping, advanced caching, lazy- and aggressive-loading, no reflection, medium trust, and more. I use it daily (for MS Sql and Oracle data access) and have found it to be a great solution in enterprise scenarios and for my own personal projects.
Try NEntityDb. It allows you query and save data to the database with .NET LINQ Expressions and Fluent API, and eliminate the need for most of the data-access code they usually you need to write.