Last post Oct 13, 2006 01:09 AM by phuff
Oct 11, 2006 06:22 PM|san1303755|LINK
I have two pages, both of them displaying the same data from the same table. One page is generated using BLINQ. The other is implemented using DataSet and ADO.NET. I found that the BLINQ generated page is much slower than the DataSet implemented page. Is
this because BLINQ/LINQ/.NET 3.0 is still in beta? Or is it because of the overhead BLINQ/LINQ has to endure?
Here is what I am reasoning. When I use DataSet and ADO.NET, I can write a query and have the database engine to generate the exact data PROJECTION (according to LINQ terms) I need for a particular data view. But with BLINQ generated classes, it has to go
through the process of object creation, relationship mapping, and data initialization, etc. before the data is available for displaying. Web applications are different from Windows applications. Each time when we make a request for a page, either the same
page or a new page, it has to go through the same process to create the object and populate data, whereas in windows application, we can store the objects in memory and reuse it for other views and when we come back to the previous view. Therefore, if we do
the right/hard-core object modeling for web applications, we would end up with lots of computing time being wasted.
As it has been said in Polita's BLINQ Introduction Video, BLINQ is a good tool for prototyping, small scale website, personal fun types of applications. In terms of enterprise web applications, and/or web services, we probably can't rely on the generated
code. Am I making the appropriate statement, Polita?
Oct 13, 2006 12:47 AM|thenoseknows|LINK
The app code Blinq generates looks to me like it could potentially be either a complete data access layer or a great jumping off point for one. What pitfalls would I run into if I were to point Blinq to a database, generate the web app, delete all the web
forms, and try to use the already created data access code to build my own business objects and presentation tier off of it? Is this a potential/intended use of Blinq?
I deployed an unmodified Blinq generated application (using a simple database with 30 tables) to a test web server just to play with it and it seems to work great. If I were to build a completely custom app with a business object and data access layer that
I made myself and used the exact same presentation tier, and load test the two apps what would I find?
As far is Blinq not being for "enterprise" web applications, can you provide me some context for that term? I hear it so often without any associated context or definition. Am I right to assume "enterprise" is synonomous with high performance? How scalable
does something have to be before it is "enterprise"? The reason I ask is that I've noticed a lot of people in the business world as well as IT speak the language of "bullshit" for lack of a better term, and "enterprise" is one of the words I've heard spoken
by some of those people I know personally (which is why there is never any context to it, because those people never put context to anything, because they can't!). I apologize if I am completely wrong about that, and if so, then please inform me of what people
mean by that term more precisely and what some of the parameters are for it if any.
Oct 13, 2006 01:09 AM|phuff|LINK
San, yes, the May LINQ preview is slower than using classic ADO.NET methods of data access and update. Much of this is because LINQ is in beta and performance wasn't as big of a concern as simply proving that the functionality is there and getting the user
model correct. The final release of LINQ will have significant perf gains over the CTPs. I can't talk to how it will untimately perform against ADO.NET because I don't know, but rest assured that the LINQ team is working on it.
Blinq prototype-generated apps are not intended to be used for enterprise applications. Blinq is meant as a prototype for features we are working on that will integrate with Visual Studio. Because LINQ and Blinq are both in pre-release versions, we don't
recommend that you run mission-critical apps on these pieces.
Hope this helps...