Windows Develop Bookmark and Share   
 index > Windows Forms Sample Applications > TaskVision: Danger of BadPractices
 

TaskVision: Danger of BadPractices

Hi!
Since TaskVision doesn't follow any of the Microsoft Patterns (as a matter of fact it doesn't follow any pattern at all, it doesn't even follow the  ADO.NET  API or WindowsForms.NET API) and so many people is downloading it, using it, and basing their work on it....
Is TaskVision creating, with each download, an "anti-pattern programmer"?
Is TaskVision creating, with app based on it , a badly designed non maintainable, non scalable app?
s TaskVision creating, with each programmer reading its code, a wrong impression on what ADO.NET and WindowsForms.NET programming is?

Seriously... if nobody in Microsoft cares about this.... ¿why http://www.microsoft.com/resources/practices/? ¿The team in TaskVision has not ever visited the Microsoft Patterns site? ¿They have never read the Tutorials included with VS.NET?....
Againg... anyone from Microsoft cares to answer?
bye
Luxspes
MigrationUser 1  Friday, March 12, 2004 1:32 PM
I challenge you.

Although design patterns from the Gang of four - singleton for example, and new patterns since the publishing of "patterns" like the provider pattern aren't found in the task vision, if you want to deploy a quick application that

1. uses web services for data access and authentication
2. has custom charting controls
3. has a sortable, customized datagrid with Data grid column styles
4. uses the app updater
5. registry usage
6. excel exporting
7. printing
8. windows forms state serialization

Lots of cool stuff, thanks to that company Susan Warren now works for.

Why not contribute rather than complain?  Microsoft probably paid the company a couple thousand to open source their app, why blame them?

Look at the ASP.net forums, it was developed by Scott Mitchell from 4 guys from Rola - now, we have about 20 active contributers (and thousands of installations)

Its the same way with Task vision... it isn't Microsoft, its supported to a very limited extent by microsoft.

So rather than COMPLAIN about some spilled milk, why don't YOU step up to the plate and actually CONTRIBUTE - this kind of whining is meaningless unless you actually have CODE and PRACTICES to stand up for it.  Provide real world examples, real CODE and THEN I'll concede that Task Vision is lousy IF you can create code that follows your patterns, if you can even define what patterns are useful and why.

Sedge
MigrationUser 1  Wednesday, April 21, 2004 12:20 AM
At least, someone answers!!!!!!!
I have been building .NET App for 2 years now and I just can say that the way TaskVision is built is no the way I would have built an app, I want to disscus my ideas and see if I am plain wrong, or TaskVision is just full of BadPractices, (and of course, contribute, but ¿how to do it if nobody cares to answer)
So... lets see:
TaskVision does not use the UserInterfaceApplicatiBlock, to provide a clean separation of the Model, the View and the Controller Logic (Advantages? ASP.NET and WindowsForms presentation with the same bussiness logic, abastraction of the persistence mecanisme, centralization of common bussines logic all of this is missing from TaskVision)
ObjectRelational mapping... well, where to I start, have you read: (http://www.ambysoft.com/persistenceLayer.pdf) ? have you read  http://www.service-architecture.com/object-relational-mapping/articles/index.html ? I think this is the best way to persistency (way easier to use and more powerfull that DataSets)

But, hey, DataSet are proposed by microsoft, in all their tutorials like the ones in http://samples.gotdotnet.com/quickstart/, but of course they are not the solution for everything, before starting a windowsforms applications, it is a good idea to read Designing Data Tier Components and Passing Data Through Tiers http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/BOAGag.asp just to know the options, now, anyone from the TaskVision develoment team cares to answer why they didnt use  Business Entities? DataSets were "easier"? (Because the guys from the latest .NET Petshop (3.0) completly rebuilt their architecture to use Business Entities, because their previous design, a sloppy implementation of Data Access Logic Components was a complete antipattern. I think TaskVision should be a "best practices reference implementation" not "how to build fast an unmantainable/hard to extend  application.

But hey, let just say, Microsoft said "You must use DataSets" you "must follow the guidelines of the quickstart tutorials and MSDN documentation in VS.NET, patterns can go to the hell"

Okey, accepted, then:
Why TaskVision has code like this:
oneDataRow["someField"]=someTextBox.Text; 
instead of using DataBinding? So.. ¿what is the recommended way of building an UI? ¿using bindings? ¿or do not? Microsoft say do, TaskVision says do not...

-TaskVision does not use DataRelationships in DataSets:
"A DataRelation is used to relate two DataTable objects to each other through DataColumn objects. For example, in a Customer/Orders relationship, the Customers table is the parent and the Orders table is the child of the relationship. This is similar to a primary key/foreign key relationship. For more information, see Navigating a Relationship between Tables."
MSDN (Why is this functionality ignored by TaskVision team? I don't know)

-TaskVision does not use Does not use .vsdisco to integrate multiple WebServices in the same site with the same WebReference
The .vsdisco HTTP handler in Visual Studio.NET is disabled by default but I have found that enabling it very useful because if I add a webreferenct to a .vsdisco, I can have 1 webreference to all the webservices in a WebServices project instead of having many webreferences (one for each asmx).
Why do you like to have many webreferences? 

-Does not use ErrorProvider to show errors in the UI
"An error provider is a better alternative than displaying an error message in a message box, because once a message box is dismissed the error message is no longer visible".
MSDN Documentation.

In the tutorials for validating data in .NET, it says that you should use System.Windows.Forms.ErrorProvider to show the fields that have invalid values, but
TaskVision uses MessageBoxes. ¿Why TaskVision does not use ErrorProviders?

Introduction to the Windows Forms ErrorProvider Component
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbconerrorcontroloverview.asp

From there you can go to:
-Viewing Errors within a Dataset with the Windows Forms ErrorProvider Component
-Displaying Error Icons for Form Validation with the Windows Forms ErrorProvider Component
-ErrorProvider Class

Why?  Maybe microsoft tutorials are wrong, maybe Microsoft Patterns are also wrong.. maybe  Gang of four is also wrong, but they have WRITTEN their opinion, and now I have written mine..., now, please why TaskVision does not use the recommendations in the tutorials, or in documentation, or in MSDN? I just want to know the justification, because of all the recommended ways of building applications, TaskVision is the only one that has no documented justification.

I have built, and build applications following GoF and Microsoft Patterns, and I think Microsoft should be more careful with reference implementation applications like this, because a lot of people is not going to take the time to verify that this application is written following the current accepted software architecture standards, they are just going to think "if it is in a Microsoft site,  I should build applications in the same way", so I think Microsoft has the responsability to build this kind of application dealing only with companies that know about software architecture... dont get me wrong, TaskVision is a great application if we are speaking about functionality, but,  if you are an experienced developer, and you start looking carefully at the code, you will be dissapointed.

I really hope that you answer, because I have posted this exact same questions in this forum, in a more polite manner (http://www.windowsforms.com/Forums/User/UserProfile.aspx?tabIndex=1&tabId=41&UserName=luxspes)
but almost nobody answered, so I was really happy to see your posting today, so please answer, if only to prove me wrong....

thankx
bye
Luxspes











 
MigrationUser 1  Monday, April 26, 2004 11:57 AM
Luxspes, you raise alot of valid points and I agree with all of them.

This forum is extremely quiet, wheras www.asp.net is extremely busy.

I've been using one of the asp.net starter kits for over a year, the community starter kit.

It was developed by Scott Walthers, and it took along time for me to figure out that he had this great Content management system, microsoft struck some deal, and we have CSK :) 

The forum application itself was started by Scott Mitchell from 4 guys from rolla.  They bought the app, and now we have a very nice forum app.

For winforms, well, we have task vision.

It does show alot of great features of .net, and me being a winform n00b, it really helped to get up to speed.

IMHO, what the task vision needs, on top of following patterns like Gang of 4, and brand new ones like the provider pattern, is the following:

It should be very easy for us to create derivative works for our own products.

Unfortunately, the TaskVision community appears to be very quiet, and I'm not sure there are any contributers.  This concerns me, because it would mean no evolution.

I've personally taken task vision to support snap-ins, and I've developed a CMS system using it.

There's hope, but unfortunately Luxspes, I think we would be the only ones contributing, but we can only hope that the project isn't brushed under the rug because alot of very cool things are Very possible - And it's NOT going to take a Huge amount of work!

Put things like Ghengis, Snap-ins, better web service implementation, a data layer using a good open source o/r mapper....  I'm currently keeping all of my work in house.  Unless the community starts to contribute more.

Hopefully, there's a couple of contributers out there who read this thread, and don't let Task Vision get swept under the rug :) 

Cheers,
Sedge
MigrationUser 1  Monday, April 26, 2004 8:10 PM
yep i can't agree more with you guys!!!!

but like you say, it is to quite over here in comparison with asp.net site

maybey it has something to do with the fact that windowsforms developers just don't like the internet ;)
MigrationUser 1  Friday, April 30, 2004 5:31 AM
A couple of things.

I was an avid reader of asp.net/forums since Oct 2001.

But I have been developing Smart-Client apps this whole time.

It wasn't until Jan 2004 that I actually found this site!!!  

Microsoft needs to do just a little promoting for his site.  For f@%*$ sake that could whenever that are talking about smart clients.  
But hey they're a pretty successful company so i am sure that know what they're doing.

Anyway, once I found TaskVision my prayers were answered.

Since I am too lazy to actually think I was able to look at TaskVision and use it as a model for the app that i needed to build.    

It works for me.

And hey if you got it accepting plug-ins that's great. Sare the code if you wish.

I am working on a new DataAccessLayer that uses MSDE on the client-side and allows the user to work disconnected from the central server and the whn connected it does the synch.

The thing that needs to be pointed out and which I completely screwed up on, is the ammount of data to put in the offline xml files.  Once you hit 300 records in a DataSet things start to go very bad.

Hence meeding to use MSDE.

Cheers



MigrationUser 1  Saturday, May 01, 2004 2:06 PM
very good.

I'm starting to think seriously about datasets on my own task vision implementation.

1. How much easier do datasets really make life?


I like your suggesting regarding offline files - thats worth looking into for sure.


Question - if we eliminated datasets, which make it very easy to update data over the wire, what would we use?  could ArrayLists of serialized Tasks be pulled off?

Anyone ever thought of a neat implementation that would allow an arrayList of tasks client side to be syncronyzed with an arrayList server side?
MigrationUser 1  Saturday, May 01, 2004 3:14 PM
The problem with using datasets with a large amount of data:

1) The lookup datasets(I have 4[Client+Contact,Resource,Status+Service]) all have 50+ records.
2) The Appointments (aka Projects) have a lot of extra fields. 200 records caused the .xml file to reach 8MB .
3) If the user is off site and does not connect and up load for a week the Changes.xml file becomes huge.

After some serious stress testing my client app jumped form 28-34 MBRam to 75+ the to 110 and then died.

To much data in the datasets!

I've had to resort to MSDE (A total hack job on my nicely commeted and formatted code) I still use the datasets (I am using Janus Calendar) so I need to load a few months of appointments at a time.  I also still need to bid my look up data to comboboxes as well.  

So since I am using MSDE the connection is really fast so I just read/write/clear the dataset very often.

But I was smart I never submitted what I would use as the local data store to my Client in the spec. So I was able to go back and fix my mistake and no one gets hurt.

But I do plan on releasing a Lite version of the app and this will use DataSet/XML files but this time I will limit the amount of data.

Oops, I forgot my point.;p

Cheers
MigrationUser 1  Monday, May 03, 2004 9:25 PM
Hello Everyone,

I have just recently downloaded the TaskVision application and I like the functionality of it.  I too am surprised that none of the application architecture patterns are not used.  I would like to see the use of the User Interface Process Application Block, the Exception Management App. Block, the Configuration Management App. Block, the Data Access App. Block, the Updater Block, the Offline Block, etc...But I will not sit here and complain.  I would like to become an active contributor to this application.  And I will do whatever I can to implement the above mentioned application blocks.

What do you think, luxspes?  Will you join me in this journey?

Martin
msanner@woh.rr.com
MigrationUser 1  Tuesday, May 04, 2004 11:08 PM
Sounds great, then we can finally have a real reference project!!!

I'll be happy to help although i have a tide schedule, but hey, everything for a good coding practice ;)
MigrationUser 1  Wednesday, May 05, 2004 3:27 AM
What do you guys think about using an O/R mapper instead of using the Data access block?  My experience with the block gave me the opinion that its useless and causes more problems then its worth.

I have a basic mapper - if done correctly there is no performance hit other than first call, and all of this could be done in startup.


My main goal is to extract out common elements - to create a generic framework - where this could be used for Tasks, Orders, etc. 

We should also make it a priority to get a web version working as well.

Comments?  What does everyone think about having an O/R mapper part of the project? Something using ObjectSpace syntax?
MigrationUser 1  Wednesday, May 05, 2004 3:29 PM
Wy do you find the Data Access Block useless???  I know it is just wrapper code and that it isn't a through dal but it saves me a lot of time.

Regarding the O/R mapper, i'm very interested in it, especially the way it is implemented internally.  I never worked with an O/R mapper so this can be a real challenge and finally gives me a point of comparison.

I'm open to an O/R mapper but uou'll have to explain me first why you find the data access block useless :)
MigrationUser 1  Thursday, May 06, 2004 3:23 AM
Hi Tim.  Maybe Useless is a little harsh :) - the right terms I would use are "not fully Mature" - for example, you have to add parameters in the right order, etc.

I found it was better to write CRUD - it wasn't that much more code really, and I always close my connection in a finally block.

Actually, I really really like the provider Pattern foundin <a href="http://forums.asp.net">Forum II</a> - 

I'm mostly interested in having Several DAL methods - Seriously - 

1. CRUD
2. CRUD with Data access Block
3. O/R Mapper

Then we just write the provider and plug it in.

Check this one out - very tricky - I have a client that was complaining about the web service - he was having a hard time configuring and my installer obviously sucked.  I had a wierd provider implementation - I accessed the data via file share.  I guess you'd have to see that one to get why its wierd.

using the provider pattern, this could be a great teaching tool - this way we can easily look at all of the different DAL methods side by side, codewise (num lines), perf wise (benchmark).
MigrationUser 1  Thursday, May 06, 2004 10:21 AM
Yep, i'm still struggling to find a DAL that fit's 90% of the projects

Performance is the top priority, but i hate writing a lot of code :)

I used to use datareader and custom objects and collections but that was a lot of coding but performance was great.

Then i tried datasets, bad, adding attributes, custom routines etc was a problem because when re-generating the dataset, everything is lost, inheriting from the dataset is stiil a problem because i still have to write a lot of code....

So, i'l still in search for the "ultimate"  DAL and this can be an interesting practice!!!
MigrationUser 1  Friday, May 07, 2004 3:36 AM
I tend to work with datasets when passing stuff over the wire, but with ArrayLists/Datareader approach when I don't have to because I've never found an easy way to serialize an arrayList.

In the web service, I've tried to define the object (e.g. "task") - having a shared class library never worked and broke the very principles of what web services are trying to solve.

Is there some way we could create a  schema describing our objects? (e.g. Task, Project, User)
MigrationUser 1  Friday, May 07, 2004 11:30 AM
You all have some really good ideas and opinions.  Are any of willing to share your source with a .NET novice?
MigrationUser 1  Tuesday, May 11, 2004 9:19 AM
sure, but we first have to start writing some code :)

as you said, nice ideas, to bad we haven't implemented yet, at least i didn't implemented yet
:(

so if you are willing to help we can start something :)
MigrationUser 1  Tuesday, May 11, 2004 9:41 AM
sure.

But have you ever used gotdotnet's source safe?

It takes about half an hour to get one file!

Rob Howard got a source gear implementation for his forum II team.

Why can't we have one?

I'd love to share my O/R mapper, its very simple (3 modest files), has fair caching, and is pretty much as fast as CRUD.
MigrationUser 1  Tuesday, May 11, 2004 10:24 AM
Absolutely! I'm willing to help you guys out as much as I can.  It'll be a good learning experience for sure.  Just let me know what I need to do.
MigrationUser 1  Tuesday, May 11, 2004 4:45 PM
I think the application needs to be segmented into manageble areas.

one to two people should be given ownership of the area.

Examples of an area could be charting, data providers, threading, UI components, search, etc.

I believe that even if alternatives to things like the data access block are given (i.e. o/r mapper), all application blocks should be used.

Experts in different areas should be contacted to see if they are interested in participating, i.e. article writers, code heros, Ken Getz, etc.

Several leaders need to be chosen to make the tough calls of pulling someone off of ownership of a segment if they are inactive.

Goals, specifications, and deadlines need to be set, just like in a real world application.

We need to approach someone with pull at microsoft like Rob Howard and get a decent source safe solution, not GotDotNet.

If these things happen, and there are the checks and balances + leadership, there's hope we can produce a top-notch reference application.  Lead follow or get out of the way.
MigrationUser 1  Tuesday, May 11, 2004 7:57 PM
Nata

It seems you know a lot of people, i suggest you take the lead.

You got one follower already :)
MigrationUser 1  Wednesday, May 12, 2004 3:17 AM
Hi Sedge:

I just want to respond to one point, the fact that no-one is contribution to the Task Vision code.

I signed up for the GotDotNet workspace eager to contribute over a week ago, and I haven't even had an acknowledgement email, let alone access to the workspace.

I also spoke to a consultant yesterday (in Portsmouth UK) who had downloaded TaskVision and was eager to use it at his software house to build commercial applications based on the source code (which is royalty free).

Having run different developer communities for over 10 years in the UK I know how difficult it can be to get participation, but you can't blame the community for that.

The onus is on the organisers to stimulate community and act as a catalyst.  Ironically this is what you've done with your post above. :-) 

So who is running the TaskVision community, and can someone get them a message that there are participants wanting to contribute?

Thanks

Graham Parker
www.learn247.net/werock247



MigrationUser 1  Saturday, May 15, 2004 3:22 AM
Hi Graham, thanks for your response.

For one, we need to move away from the GotDotNet workspace, I don't know how many hours I've wasted trying to work with the source safe solution -

From experience working with the forum II team, it can take hours to syncronize a project, Rob Howard actually got Microsoft to buy them a license for SourceGear (or was it vault?)

What we need to do right now IMHO is

1. Get Microsoft to foot the bill for a source safe solution (cheap)
2. Set up an incentive program.... this has never been done before, and here is what I'm proposing...

Have you seen the community starter kit? I'm a top contributer to GCN, the next evolution, and have quite a bit of experience writing new mods and have several people who volunteer many hours a week for me on GCN mods and skins.

We need to have  a GCN to document the project, and leverage the power of GCN with the task vision project, which WILL (trust me on this one) become a very big project over the next 6 months.

We need to have Voting, Polls, Bug Tracking, and most of all, Contributer listings.  I want to have each contributer listed (optional) with what they have done, and how much, have their contribution voted on in a democratic way.

On GCN, a couple of people have contributed thousands of hours but you'd never know they did.  Code comments are one, the community is another thing.

I'll start pestering the people I know have some pull (like Rob) - I think if we all ask politely, I think that we can get Mike Harsh to help us out.  We need

1. Source Safe solution like Forum II team has
2. Community site running CSK where we can keep track of what I've stated.

Any ideas?  Post your support.
MigrationUser 1  Saturday, May 15, 2004 11:08 AM
Hi,

I'm new to C#.NET and ASP.NET and lost in the woods at the moment...I searched for a couple of weeks now on the internet for tutorials and sample applications. They are hard to find or they are just hard to understand (not to mention lots of errors in it. The most even won't install correctly). Most of them i got working (sloppy errors! component versions or database version out of sync). Most of the sample applications i tried don't have good documentation about how it is designed (unless you're a gooroe, you get completly lost as a beginner). I think that's the price you pay if these sources are offered for free!

I've bought a lot's of .NET books (o'reilly), most of them are just reference books. I can't find books which build a .NET webapplication from scratch (explain design choices and how to implement them in components/layers), which you actually can use in reallife.  

Now i read your message about Microsoft Patterns. They say that it's easier to learn something new than to get rid of a bad habbit. I want to learn something new and doing it the right way on the first time!

Please any suggestions are welcome!

zitniet

MigrationUser 1  Monday, May 17, 2004 11:31 AM
Here’s a few books from my book shelf:

 

Title                                                                             Publisher                     Stars    Comment

Professional C# 2nd Edition                                            Wrox                            5          The most well rounded reference to C#

Building Secure Microsoft ASP.NET Applications           Microsoft Press            4          Excellent info on Role Based Security and general security HOW-TO’s

**ASP.NET Website Programming                                    Wrox                            4          Good starting point for building ASP.NET apps***



 

 

 

As you can see I am a huge Wrox fan.

 

Other than books the MSDN site is a great place to browse around for info.

MigrationUser 1  Monday, May 17, 2004 6:14 PM
Wow!
This discussion is great!
I have been working with the UIP 2.0, but it that te activity in its message boards is also very slow!
I am going to be working (if everyting works right) with the UIP 2.0. for the next 1 to 3 years. So if any of you find a way to create "an alternate version of TaskVision" and you are willing to use UIP, and Microsoft Pattens and Practice on it, count me on, I already have some new features and bugfixes for the UIP I would like to contribute to some project community that seems alive! (because the WorkSpace of the UIP  seems to be pretty sleepy)
bye
Luxspes
MigrationUser 1  Wednesday, May 19, 2004 12:06 PM
I think its a tossup wether to use the microsoft application blocks, or to make our own application blocks that are very simple and only have functionality needed to get the job done.

I did like UIP 1.0, it seems that in time it will be very solid.

I'm in favor of using all of the blocks, although still alittle weary of data access block.


I use caching block in my task vision.
MigrationUser 1  Wednesday, May 19, 2004 7:43 PM
Hi!
Well, I also don't like data access block, coming from www.webobjects.com and www.hibernate.org  I think the database should be accessed in an object oriented way, but there is nothing like that included in the .NET Framework (until ObjectSpaces is released). 
Perhaps we should try http://sourceforge.net/projects/nhibernate ?
bye

MigrationUser 1  Thursday, May 20, 2004 10:44 AM
I loved the way wilson's o/r mapper worked, ObjectSpaces Syntax.

I'd like to get a bare bones O/R mapper in the project.  Mine is actually pretty fast, I cut out 50% of the code in task vision (maybe not %50, but all the crud).

Mine subclasses right now, but I'd like to get a true broker that uses the ObjectSpaces syntax.

I'd rather say that we should use our own source forge project on the O/R mapper side, we'll want full control.
MigrationUser 1  Thursday, May 20, 2004 10:59 AM

You can use google to search for other answers

Custom Search

More Threads

• to Mitch walker
• Can't add new animals ..
• Programically selecting an item in DataGridComboBoxCell
• Local Terrarium as Screensaver
• pocket taskvision memory leak
• Ideas for Fotovision
• How to access to Task Vision?
• DataGrid: how to populate the text in a datagrid?
• Discussion Board
• A working Terrarium with v1.1 framework?