This content has been marked as final. Show 10 replies
IMHO, MS Visual Studio 2005 (.Net) ASP.Net, C# VS Flex and its components is not right comparison at all, in most cases you should(if you can ) use both together.
Using any front-end technology still leaves you with the same problem: lots of data on the server to be presented on the client. Whether you use Flex or something else, you still have the same issue of the network - its speed, its reliability, etc. Are you really going to transfer 5 million records to a remote client - no matter what the user interface is?
I think the question you want to ask is what technology will help access, manage, and present the information in the best possible way. I know that if you are going to have that large of a data set, then using a powerful commercial database should address part of the problem. But what about when it leaves the database? How is that data managed as it is sent to the client?
I honestly don't know about other server-side choices you have, but using LiveCycle Data Services and its data management capabilities, along with a J2EE application server, can address the data management issue.
My knowledge of Flex and other related components is very limited. I have been asked to look into Flex as a choice.
Though millions of records are stored in the database, as both of you rightly pointed out it is DB issue and not a front-end issue.
Our major concern, or rather dark area is how do we do the database updates, caching on the web server, security, ldap integration, etc., Why should use FDS (am I right in the acronym?) when we can use .net web service to send and retrieve data?
What are the advantages in using FDS/DMS? In .Net we can use ADO.Net and do all the DB related activities. What is the equivalent in Flex? How expensive it is? Or is it bundled with Flex Builder 2 or 3 beta?
J, I'm not sure you're making the correct comparison here.
If you go with MS, you will get a traditional web app - synchronous, click/refresh, etc. You will most likely mix your data in with your presentation layer, at some level. This is the way web apps have been developed up until now, and there's nothing necessarily wrong with keeping the same model we've used the past 10+ years - it may not be advisable, but it's certainly possible. You can also take advantage of MS ajax functionality, but now we're getting into another conversation.
Now, Flex is a presentation layer tool. It won't do queries for you, it will just present data to the user. It will handle events generated on your app and pass them back to the server for processing. So, it's not really like you're making a "choice" - if you go with a flex generated front end, you will still need a server based back end to handle the business logic and data. You can certainly go with an MS solution and communicate with the server via web services or REST. You can use almost anything as a backend - you should give a look at ColdFusion, it is the fastest, easiest and most secure manner for dishing data to flex.
Just curious about your choice of MS as a solution - can you expand? It seems like your app is doing some heavy lifting, and MS solutions aren't exactly known for handling that kind of load.
You may need to look at a J2EE solution - IBM and BEA are good places to start. Adobe has ColdFusion enterprise, which works very well, and competes very nicely with the previous two I mentioned (both for performance and price).
As a last point, I'm not sure how your application works, but will you be returning 5 million rows to the user at a time? I hope not! If you use LiveCycle data services (LCDS), you essentially get a Java Messengering System - you can page your results, and do a lot more. LCDS is free to start (one CPU) and can get costly after that - it all depends on your budget, etc. Again, ColdFusion integrates well with LCDS.
Post back to this thread if you have any more questions - I'm flying blind here, because I don't really know what you're trying to achieve. I'd also encourage you to reach out to a local Flex user group if one is close - you'll get some good resources there.
Displaying large amounts of data on the client side means you will need a way of paging recordsets. This is something FDS can help you with.
Another thing FDS can help you with is performance on the client side. In our team, we use REST with a J2EE back end and communicate via XML/HTTP. We have performance issues as we request large amounts of XML data every 3 seconds. Everytime the data is requested, the client side processing of data is taxing the CPU a lot. With FDS, we wouldn't have this problem. FDS would send an object with properties and methods instead and we wouldn't have to serialize/deserialize ourselves.
Thanks for the response. Let me provide more information.
Ours is like any traditional web application; In very simplistic terms, we have a search screen where user can provide multiple search criteria. A sample would be
'country = US and Client name like %David% and order pplaced between 1999 and 2001''
This criteria is likely to hit 3 or 4 tables and returns around 10 records to the browser. User then goes through each and every record and updates the relevant information. He or she sends the data back to the database through the web server by clicking the save button.
At a maximum, database is likely to return 2 MB worth of data for any search criteria.
J,1 person found this helpful
Thanks for the context, just a few things based on what others have said, and questions you have asked. Flex Data Services (FDS) is now branded as LiveCycle Data Services (LCDS) - small point, thought I would mention it. It does paging, but can also notify users of a Flex app when data they are looking at changes. It's costly, but actually quite cheap when compared to other JMS solutions - it doesn't look like you need this though.
Flex apps can either be created with Flex Builder (FB) or you can download the compiler and script them for free in any editor (Aptana and Eclipse are two popular ones). FB 2 is about $500 - 99% of Flex developers I have met use FB (for what it's worth). When you compile the app, you create a SWF, and load it onto your web server - that's it.
You can achieve what you want to do in both traditional (HTML) terms, and using Flex. The idea of flex is to give the user a cleaner, richer user experience, and I think you can achieve this with your application. Personally, I prefer to think of Flex in terms of applications, rather that "pages" - am I making sense? A user comes to the app, completes something of importance, gets business done - as opposed to reads content. HTML is perfect for content.
So here's a thought, the user enters their search criteria, and are returned a data grid, where they can make the edits they need, in place, and press a "save" button - or not! You can trigger an "update" event based on the row losing focus.
You will still need a server based technology to handle the processing of the changes - the calls to the DB. Flex is a presentation layer tool, and does not make SQL calls, or connect to a SQL DB. This is a paradigm that takes a while to sink in, but when it does, you'll love it!
I'd advise you to take a look at the articles on the Flex section of the Adobe Developer Center. Get your 30 day trial of Flex, and get started. I did a presentation at my user group over a year ago, about getting started with Flex - the posting with files is here: http://www.cfugitives.com/index.cfm?commentID=45
It may be a little old, and could be done better, but it's simple (deliberately so) and will get you started.
Post back if you have any questions
You might want to take a look at Hibernate - there are several good books on the market which explains it. Hibernate is an object persistence technology that allows you to define "objects" and it takes care of mapping them to the database. For example, you might have an Order object which consists of columns from a catalog table, a customer table, an address table, a shipment table, etc. In other words, a single "Order" might involve data from several tables. Hibernate can assemble an object for you from that data and persist that data as well.1 person found this helpful
LiveCycle Data Services provides a Hibernate adapter. This is a way to hook a Flex front-end to a Hibernate controlled database. Using Hibernate you can define ActionScript and Java objects - Hibernate builds the Java objects and LCDS converts them to ActionScript objects for use in Flex. Then you can make a DataGrid of Orders to show a shopping cart.
Because all of this is happening with LiveCycle Data Services, you also get data management, such as paging and caching. Plus you can use messaging to update, in real time, all of the users connected to that Hibernate adapter. Imagine having an inventory system which uses the same data base. When a person puts an object in their cart, the person monitoring the inventory gets an automatic update that the item is ready for purchase. When the item has been purchased, the inventory Flex app is then updated with that fact. All of this is built into LiveCycle Data Services.
Davo, my lead developer agrees with you on the argument that FDS being expensive is totally wrong.
>> Because it allows to dramatically cut development time and is indeed, as you said, less expensive than other JMS solution.
FDS does not scale is another wrong argument:
>> Because it's a bunch of servlets in a JAR that run on an application server like WebSphere or WebLogic and there are plenty of other technologies based on servlets that serve millions of users everyday. FDS does scale.
quote:dont want to offtopic this great post, and definately not questioning the advice peterent gave, which is 100% accurate but still ...
Originally posted by: peterent
You might want to take a look at Hibernate - there are several good books on the market which explains it. Hibernate is an object persistence technology .......
I dont suggest hibernate just for that purpose,(overall Hibernate is overdone technology I think) its(lot) better of going with more lightweight and as powerful solution (especaly if you just need glue for LiveCycle Data Services))
Sprint+IBatis for example