Newbie Feedback on Framework


Author
Message
Michael Niemann
Michael Niemann
StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)
Group: Forum Members
Posts: 7, Visits: 73
First, let me say that I have just begun exploring StrataFrame, so some of these observations may be the result of inadequate exploration or misconception... but here goes (my background is PowerBuilder, Delphi, many RDBMS's):

I really like the web site, the examples, and the StrataFram Help (especially the Getting Started stuff). I have created a simple single form / single Business Object WinForm application... so now I am an expert. <g>

Concerns (you had to suspect this would be the longer list... right?):

1) I question the idea of binding the Business Objects right to the forms. Why not bind a BO Proxy to the forms, and keep all the BO's in one container? I know there is some ability to Share Data... but why should this be a case by case implementation detail? In fact I would see this as something you guys already already addressed (at the macro level) with the Enterprise Server alternative to the Client Server approach of connecting each BO directly to the database. IOW, why would you want each form in an application have its own (Customer) BO with a private buffer... out of synch with each other form/(Customer) BO/buffer in the application?

2) There is a loud "silence" on the WPF/SilverLight front. Along these lines, there seems to be a bit of a hush over when the next maintenance release will appear... and what will be in it.

3) The use of "Select *" in the example SQL statements. Generally we remove the fingers of developers that do stuff like that. I'm not sure how your BO's react to changes in the database tables (renaming columns, changing data types, adding/removing columns, etc.). We find explicit column references helps us find the issues pretty quickly. Along this same line is the missing ability to Auto-Generate bound controls based on a Buisiness Object (or actually BO Proxy <g>Wink.

4) There doesn't seem to be any system level caching capability.

5) Almost all the Help examples are in VB, which doesn't help a C# newbie.

6) And finally, why do the C# samples contain reverences to a VB construct...
//-- Forcibly close the application to stop message pumps from looping and preventing the application
// from closing
ProjectData.EndApp();


StrataFrame Team
S
StrataFrame Developer (4.4K reputation)StrataFrame Developer (4.4K reputation)StrataFrame Developer (4.4K reputation)StrataFrame Developer (4.4K reputation)StrataFrame Developer (4.4K reputation)StrataFrame Developer (4.4K reputation)StrataFrame Developer (4.4K reputation)StrataFrame Developer (4.4K reputation)StrataFrame Developer (4.4K reputation)
Group: StrataFrame Developers
Posts: 3K, Visits: 2.5K
Howdy Michael ... "Other than that, how was the play, Mrs. Lincoln?"

1) It was a design choice.  It was determined that since not every form within an application needs the same data, it was simpler to engineer a way for forms to share what they needed (through SharedDataTableKey, ChildFormDialog, etc.) rather than to have all forms share the same data.  More often than not, we found that each form actually needs its own data.  I.E.: Our medical software has "folders" for patients; each patient has its own folder and you can have several folders open at a time.  So, since each patient is completely independent, there is no need for them to share the same data... they each need their own.

2) I would not go so far as to say "silence."  If you go to several of the websites of control designers in the .NET market, they all say that they are working on WPF controls, but until the design-time support is at least Beta 2 or RTM, they're not going to release them.  The only thing our business layer needs is the implementation of one more interface to enable the functionality to tie to WPF (INotifyCollectionChanged... the same thing that ObservableCollection implements).  Additionally, since our business objects can already attach to anything that accepts IEnumerable as the source (ItemsSource, DataContext, DataSource, etc.), you can certainly use a BO with WPF right now.  As for design-time support within WPF, we're not going to support it until it's RTM.  StrataFrame was not released until VS2005 was RTM, and our support for .NET 3.0/3.5 will not be there until the design-time support is RTM as well.  If you're wondering if all of our business objects are going to be DependencyObjects and have all of the fields as DependencyProperties, no, we are not; they will continue to be regular CLR objects.

As for the 1.6.1 release, it's coming soon, but quite frankly, we don't want to pin a date on it as requests from the forum keep working into the release.

3) Smile  I agree with that.  That's why there is a property called AllFields on the business object that returns a string of all fo the field names.  Same for the TableNameAndSchema property that returns the table name and schema so, you could use "SELECT " + this.AllFields + " FROM " + this.TableNameAndSchema and you would avoid the use of the * you vehemently dread.  However, not all developers are like you, so we certainly have to still support the * Wink

4) No, there isn't.  We have created a semi-caching engine that caches single records based upon the PK but until we are happy with it, we won't include it in the framework.  You certainly have the ability to create a set of static BOs somewhere with all of your lookup tables... since that's the thing people generally want to cache.

5) Yes, all of the original samples were in VB and are in the process of being reworked to include both.  New help includes both.

6) Well, that's because we had tons of VB samples and we wanted to have the same ones in C#.  The quickest way to do so was to run them through a converter, so, that's why some of them contain the C# equivalents of things like the With keyword in VB.

Hope this helps.  See you on the forum. Smile

Ben Hayat
Ben Hayat
Advanced StrataFrame User (548 reputation)Advanced StrataFrame User (548 reputation)Advanced StrataFrame User (548 reputation)Advanced StrataFrame User (548 reputation)Advanced StrataFrame User (548 reputation)Advanced StrataFrame User (548 reputation)Advanced StrataFrame User (548 reputation)Advanced StrataFrame User (548 reputation)Advanced StrataFrame User (548 reputation)
Group: Forum Members
Posts: 374, Visits: 1.2K
Hi Michael;



Just wanted to share a few things with you. I do also come from Delphi background (8 years) and finally decided to move to C# and .Net. During this transition, I realized how much extra work it's required to develop DB applications in .Net, especially being disconnected by nature. So I took early route of creating my own DAL and BLL and tried different situations. The amount of work was too much before you could even get to the heart of the application, so I started looking at different ORM systems (for one year), tried many of them, but each seemed to address one area and come short in many areas. Some looked very complete, but the pricing was way too high. Most of them, only addressed the database part and not as "Application Framework". One night, I was on a competitor forum when someone had asked about StrataFrame. I did the search and found this site.



The important factors were:

a) I needed a framework

b) I didn't want to bother with the ORM part and just focused on the Business Layer.

c) Easy way to do validation and tell user what's wrong;

d) I had created my own role based security in Delphi and didn't want to go thru that again.

e) I also wanted to develop 3-trier apps, without a major change to my local app.

f) And I wanted a system that's down to earth and can be used in real apps.

g) needed to deploy the database easily.



I spent a month asking questions, and the SF developers answered all my questions. And from reading the forum, the support was better than any other company I had dealt with. Well guess what, you get answers from the same people who developed the product from ground up.



I purchased the product, which you get a lot more than you pay for, but decided to take the training course. I'm not saying the help is incomplete, but you really see how much work has gone into this product in 5 days course. Trent and Ben, were great and personal to answer all of our questions.



I'm sure you'll get answer to your questions, but I wanted to share this with you and tell you, you have found a great product, give it good chance and you'll be glad you did. I can use some Delphi friends here...Smile



Good luck and hope to see around!

..ßen
Michael Niemann
Michael Niemann
StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)
Group: Forum Members
Posts: 7, Visits: 73
Ben,

I composed a response, but go this when attempting to post it.

Server Error in '/' Application.

Object reference not set to an instance of an object.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:

[NullReferenceException: Object reference not set to an instance of an object.]   InstantASP.InstantForum.UI.Controls.PostControl.InitializeForQuotedReply() +76   InstantASP.InstantForum.UI.Controls.PostControl.InitializeControl() +332   InstantASP.InstantForum.UI.Controls.PostControl.Initialize(Control ctlSkin) +17580   InstantASP.Common.UI.Base.Skin.CreateChildControls() +78   InstantASP.InstantForum.UI.Skinning.Base.CreateChildControls() +85   System.Web.UI.Control.EnsureChildControls() +87   System.Web.UI.Control.FindControl(String id, Int32 pathOffset) +21   System.Web.UI.Control.FindControl(String id, Int32 pathOffset) +289   System.Web.UI.Control.FindControl(String id, Int32 pathOffset) +289   System.Web.UI.Page.FindControl(String id) +40   System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad) +252   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3776


Version Information: Microsoft .NET Framework Version:2.0.50727.42; ASP.NET Version:2.0.50727.42

Michael Niemann
Michael Niemann
StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)
Group: Forum Members
Posts: 7, Visits: 73
Ben,

Thank you for the response. BTW, I don't find Delphi's data access approach particularly innovative (or consistent). PowerBuilder has had a rational "disconnected" database approach since 1991. I see plenty of echos within StrataFrame. Also auto-generation of multiple presentation styles (including Label: TextBox) was present from day 1.

I appreciate your confidence in StataFrame, and I will keep it in mind as I continue my exploration.

Regards,
Mike

Michael Niemann
Michael Niemann
StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)StrataFrame Beginner (19 reputation)
Group: Forum Members
Posts: 7, Visits: 73
Hey (Note: I've been living in the South for quite a while) Ben. Thank you for the response... my comments inline

1) It was a design choice.  It was determined that since not every form within an application needs the same data, it was simpler to engineer a way for forms to share what they needed (through SharedDataTableKey, ChildFormDialog, etc.) rather than to have all forms share the same data.  More often than not, we found that each form actually needs its own data.  I.E.: Our medical software has "folders" for patients; each patient has its own folder and you can have several folders open at a time.  So, since each patient is completely independent, there is no need for them to share the same data... they each need their own.

While the detail data shouldn't be shared, the "list" data should... and should be consistent everywhere displayed. Perhaps SatredDataTableKey gives me what I am looking for, not sure at this point. BTW, the documentation on ChecldFormDialog talks about BO "translation"... but I haven't seen that explained.

2) I would not go so far as to say "silence."  If you go to several of the websites of control designers in the .NET market, they all say that they are working on WPF controls, but until the design-time support is at least Beta 2 or RTM, they're not going to release them.  The only thing our business layer needs is the implementation of one more interface to enable the functionality to tie to WPF (INotifyCollectionChanged... the same thing that ObservableCollection implements).  Additionally, since our business objects can already attach to anything that accepts IEnumerable as the source (ItemsSource, DataContext, DataSource, etc.), you can certainly use a BO with WPF right now.  As for design-time support within WPF, we're not going to support it until it's RTM.  StrataFrame was not released until VS2005 was RTM, and our support for .NET 3.0/3.5 will not be there until the design-time support is RTM as well.  If you're wondering if all of our business objects are going to be DependencyObjects and have all of the fields as DependencyProperties, no, we are not; they will continue to be regular CLR objects.

Posting what you just said on the Web site was exactly what I was looking for.

As for the 1.6.1 release, it's coming soon, but quite frankly, we don't want to pin a date on it as requests from the forum keep working into the release.

You could expose the list of what is already there... and keep adding to it. That would keep everyone informed. I asked because I saw others requesting the information... and the last entry in Posted Releases was from February (it was however this year Smile ). 

3) Smile  I agree with that.  That's why there is a property called AllFields on the business object that returns a string of all fo the field names.  Same for the TableNameAndSchema property that returns the table name and schema so, you could use "SELECT " + this.AllFields + " FROM " + this.TableNameAndSchema and you would avoid the use of the * you vehemently dread.  However, not all developers are like you, so we certainly have to still support the * Wink

"Select *" is valid SQL, so you should support it. You didn't mention what happens to the BO classes when a column datatype is changed... or a column is removed. Does this cause design time errors... or runtime errors?

4) No, there isn't.  We have created a semi-caching engine that caches single records based upon the PK but until we are happy with it, we won't include it in the framework.  You certainly have the ability to create a set of static BOs somewhere with all of your lookup tables... since that's the thing people generally want to cache.

Which is one of the reasons I asked Question #1. Properly sharing one instance of well-cached reference data is a very important piece of functionality. An just like "idiots being so damned clever" (in the sense of idiot-proof software), I've alsoways found "static" reference data to fall well short of static. But then again I don't expect a Framework to solve all my development problems... but I remain optimistic.

5) Yes, all of the original samples were in VB and are in the process of being reworked to include both.  New help includes both.

No problem.

6) Well, that's because we had tons of VB samples and we wanted to have the same ones in C#.  The quickest way to do so was to run them through a converter, so, that's why some of them contain the C# equivalents of things like the With keyword in VB.

For your consideration: If you reley on a converter to produce code that is reviewed by potential customers... they may judge your coding (and design) skills by what they see.

Regards,
Mike

Ben Hayat
Ben Hayat
Advanced StrataFrame User (548 reputation)Advanced StrataFrame User (548 reputation)Advanced StrataFrame User (548 reputation)Advanced StrataFrame User (548 reputation)Advanced StrataFrame User (548 reputation)Advanced StrataFrame User (548 reputation)Advanced StrataFrame User (548 reputation)Advanced StrataFrame User (548 reputation)Advanced StrataFrame User (548 reputation)
Group: Forum Members
Posts: 374, Visits: 1.2K
Mike;



Thank you for the response.
Anytime!



I don't find Delphi's data access approach particularly innovative (or consistent).
I liked Delphi for Delphi and not so much of it's database access. However, I developed a complex database app that is 12 level deep in hierarchy relation and it's been working in a 2-tier environment since 2003 with zero problems.



SF is fairly new and [trust me] there is a lot of stuff in it that does not appear at first. But it has a solid core and foundation. The developers come all the way back from Mainframes experience. The interesting thing about this company, is that, not only they produce developers tools, they use the same tools to develop consumer products. To me, that won many points, because the support and developers could relate to your issues, versus some other companies who don't know the real world of business development.



I appreciate your confidence in StataFrame, and I will keep it in mind as I continue my exploration.
I think after some time, you'll reach to the same confidence, once you communicate with SF team.



In any event, if you have questions, don't be shy and I'm sure you'll get your answers.



Take care!

..ßen
Ben Hayat
Ben Hayat
Advanced StrataFrame User (548 reputation)Advanced StrataFrame User (548 reputation)Advanced StrataFrame User (548 reputation)Advanced StrataFrame User (548 reputation)Advanced StrataFrame User (548 reputation)Advanced StrataFrame User (548 reputation)Advanced StrataFrame User (548 reputation)Advanced StrataFrame User (548 reputation)Advanced StrataFrame User (548 reputation)
Group: Forum Members
Posts: 374, Visits: 1.2K
2) I would not go so far as to say "silence." If you go to several of the websites of control designers in the .NET market, they all say that they are working on WPF controls, but until the design-time support is at least Beta 2 or RTM, they're not going to release them.




Hi Ben;



I had recently asked Scott Guthrie @ MS some questions about VS2008 and WPF and thought you might be interested to read his replies:



Saturday, June 30, 2007 12:09 AM by ScottGu



Hi Ben,



The Beta2 release of .NET 3.5 and VS 2008 should be fairly baked in terms of feaure set - I wouldn't expect LINQ and ASP.NET to change much after that (a few minor tweaks - but nothing substantial). So I thjink you could start then to write applications with it and not be worried about having to change much for the final release.



Hope this helps,



Scott




Monday, July 09, 2007 4:28 AM by ScottGu



Hi Ben,



VS 2008 Beta2 has support for WPF (including a built-in designer). We'll have a separate download add-in for VS 2008 that adds Silverlight support.



Silverlight will support LINQ to Objects and LINQ to XML. If you are starting a project involving data in the next 6 months, I'd definitely recommend going with ASP.NET. Silverlight doesn't yet have databinding or rich data controls built-in - which would make building a data app very tricky.



Hope this helps,



Scott


..ßen
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Similar Topics

Reading This Topic

Login

Explore
Messages
Mentions
Search