Dear All,
I truly appreciate your help and feedback. I will give you below a background about our situation, the results of the research I made, and then I will mention my requirements.
I actually was refered to CSLA.NET from www.asp.net forums, and I need to know if CSLA.NET will be of value to us, with reagards to our requirements.
Background:
1.
I work in a company in IT Dept., and we are a team of 3-4 developers,
with different levels of skills in
ASP.NET, and with excellent development skills each in his area of
specialty (Lotus Notes, Java ...etc). We have highly skilled
developers in ASP.NET.
We are using VS2005/SQL Server for the Web Application Development, and
VSS for Source Control, in addition to other tools/platforms.
2.
The objective of our team is to develop Applications
for the End Users to increase their productivity (Using Web Based
Applications). The back-end systems are in UNIX/Adabas. We are using
CONNX SQL Gateway for Data Access from the Web Apps to Adabas. SAP
Portals will be deployed in a couple of months, and we are
migrating from UNIX/Adabas to SAP in a couple of years.
3. The applications we are developing may be targeted for ALL
Staff, or for
certain department/section in the company The total number of the Staff
is 1000 (aprox) and the avareage number of staff in each dept is 30.
4. Our
biggest problem
in developing Good Looking Professional Applications, and we
have not yet upgraded to VS2008, so I guess AJAX for .NET 3.x,
Silverlight and Expression are not an option for the near futures, but
surely, we will have to
upgrade sooner or later, which will take some time because we have to
arrange for training, licensing, budget ...etc.
5. The time frame to build the required applications is
usually tight (and always the users want the application to finish
yesterday). The average period to launch an application after
completing a development cycle is 2-3 months. The application goes
under continuous improvements over 6-10 months, and in some cases, it
will span over a couple of years.
Below is some info I found based on my research, on how to build good looking web applications:
1. Using CMS Tools like DotNetNuke from: http://www.dotnetnuke.com/. and.or Umbraco from:
http://www.umbraco.org/
, where such tools are very good in building attractive UI, but usually, as per my personal opinion, I do not recommend using such tools for cases like ours, because of the following:
1.1. They do a lot of things for you that you don't need, which causes BLOATED Output and possible performance issues.
1,2, They may impose some annoying limitations, which may force
you to perform some unusual tricks to make them happen, if that is
possible in the first place. So the time you saved to build the UI, has
been wasted in finding solutions for tricks.
1.3. They may require certain configuration which is not available, or will cause unwanted results.
1.4. They require a special learning curve. Each tool has its own
technique. I prefer to spend my time learning the original APS.NET
infrastructure instead.
1.5. They duplicate the functionality
provided by SAP Portal, and the effort needed to implement and learn how
to use this tool will be wasted.
1.6. For DNN, it generates a Huge number of objects
for SQL Server Database and Web Parts/Files/Folders under IIS, ie, it is
a Bloated Engine: Each time you create a web site for an application, it
will create a large number of objects which you have no control over, and
if you mix different web application in the same web site, it will confusing.
---> I am interested in your feedback about such CMS tools please, and how it compares to CSLA.NET ?
2. There is
also many other ASP.NET Starter Kits. or CSK and and the like, some of which
seems less complex than DNN and umbraco. I need your input on such
tools and how they are different from CSLA.NET. The related link:
http://www.asp.net/community/projects/
3, I also found the Enterprise Library from: http://msdn2.microsoft.com/en-us/library/aa480453.aspx. It looks very promising. But, it has no reference
to Web Templates, Master Pages, Style sheets, Themes, Site Navigation,
Dynamic Menus and User Interface in Greneral.
4. I
have done some research, and found the following links to which have ready
Web Templates for Master Page, Themes, Style Sheets, Menus
...etc...:
http://msdn2.microsoft.com/en-us/asp.net/aa336603.aspx
http://msdn2.microsoft.com/en-us/asp.net/aa336602.aspx
http://www.ex-designz.net/template/default.asp
http://www.beansoftware.com/ASP.NET-Tutorials/Globalisation-Multilingual-CultureInfo.aspx
http://www.asp.net/community/control-gallery/browse.aspx?category=22
We have found a lot of web templates and Master Pages Samples, and Menu and Navigation Templates... but, the problem is that they are Static, we need to do some work to replace the static menus with Menu and Navigation Controls of ASP.NET. Do you have any feedback on this issue ? Any alternative way ?
5. For Authentication and Authorization,
I was looking for a way to use Windows Authentication, and User Defined
Role Based Authorization (using GenericPrincipal instead of Windows NT
Groups), and I found this link which a sample code that will help me achieve
my requirement:
http://weblogs.asp.net/dneimke/archive/2003/09/29/29499.aspx
And, I will use the info from this link:
http://msdn2.microsoft.com/en-us/library/tksy7hd7.aspx
to build the required authorization
module.
6. I also found Ajax Control Toolkit which looks very promissing for UI. How does it compare to CSLA.NET ?
Our Requirements:
1. We are in bad need for a method, technique, easy to use tool, or what ever you want to call it, we are looking for a way to standardize and streamline the development of Web Applications among the Team Members. The objective is to reuse the work completed by others and have consistent way of developing application in all aspects, so that it will be easy to hand-over the work from one team member to another
2. Rich User Interface. I do not
mean FLASH, Silverlite and the like, I mean good looking and professional web application
(look and feel and UI). To
be more specific,
this covers: Master Pages, Themes, Style sheets, Site Navigations,
Dynamic Menus (with User Roles), ... etc. and it does not have
to be fully automated. As you know, it is really not easy to work with
CSS, you must agree with me, don't you ? While CSS Editor/Builder makes
it a little bit easier, you still need to have the Artistic Skills to
be able to imagine what colors you need.
3. Standardize Authentication and
Authorization across all applications. We are mainly using Windows Authentication,
and for Authorization, I want to use user-defined Roles
and assigning roles to users, and control menu access and system functions
using roles.
4. Complete the development in relatively a short period: Rapid Application Development,
Your feedback, comments and recommendations will be greatly appreciated.
Regards ...
Tarek.
From the sounds of it you are really looking for a UI framework and not an 'application framework' like CSLA. CSLA will help you build the plumbing of the application such that it will be scalable and flexible, but in and of itself it will not help you make your application more professional looking.
For that you should checkout the controls companies like Telerik and Infragistics...I know many of Teleriks controls are still .Net 2.0 but look and behave remarkably 3.5ish.
Hope that helps.
Ryan
We have an application that combines several "chunks of framework" from different sources into one coherent whole, of which CSLA was one.
The Enterprise Libraries provide a good set of "plumbing" code upon which you can build a CSLA based set of business objects (we used the data access app, cache and crypto blocks).
To build a UI on top of all that we used the Smart Client software factory which provides a framework for creating desktop apps. There is a web client equivalent which, combined with AJAX, should provide a good basis for rich web client applications.
Although there was a steep learning curve, once the team 'got it' we had a good base to work against. You will need to pick and choose between all the options out there; one of the really useful things about CSLA, apart from all the built in goodies like n-level undo and data binding, is that it imposes a standard pattern on the way business objects are built by developers so the team have a simple template to work inside.
RikGarner:We have an application that combines several "chunks of framework" from different sources into one coherent whole, of which CSLA was one.
The Enterprise Libraries provide a good set of "plumbing" code upon which you can build a CSLA based set of business objects (we used the data access app, cache and crypto blocks).
To build a UI on top of all that we used the Smart Client software factory which provides a framework for creating desktop apps. There is a web client equivalent which, combined with AJAX, should provide a good basis for rich web client applications.
Although there was a steep learning curve, once the team 'got it' we had a good base to work against. You will need to pick and choose between all the options out there; one of the really useful things about CSLA, apart from all the built in goodies like n-level undo and data binding, is that it imposes a standard pattern on the way business objects are built by developers so the team have a simple template to work inside.
Most of the UI controls we used were out-of-the-box Windows Forms ones, although we did write a couple of controls ourselves. The smart client stuff is at http://msdn2.microsoft.com/en-us/library/aa480482.aspx.
I haven't had a chance to use the Web client software factory yet, although I expect to use it in the near future; it's msdn page is http://msdn2.microsoft.com/en-us/library/bb264518.aspx.
It does have support for master pages and probably other similar goodies too (it's been evolving for a couple of years now so I expect it will be pretty full-featured).
RikGarner:Most of the UI controls we used were out-of-the-box Windows Forms ones, although we did write a couple of controls ourselves. The smart client stuff is at http://msdn2.microsoft.com/en-us/library/aa480482.aspx.
I haven't had a chance to use the Web client software factory yet, although I expect to use it in the near future; it's msdn page is http://msdn2.microsoft.com/en-us/library/bb264518.aspx.
It does have support for master pages and probably other similar goodies too (it's been evolving for a couple of years now so I expect it will be pretty full-featured).
Great !
I hope that CSLA.NET and WCSF do not overlap, or of they do overlap, it will be minimal. I do not want to confuse the team members about which framework to use for what part ??!!
So, as per my understanding, we will use CSLA.NET for developing the Business Logic and WCSF for the Front End, UI ...etc. Is my understanding correct ?
Tarek.
Yes, that is what I am suggesting. You should make it clear that CSLA should be the basis of your business logic layer and that WCSF should be the framework you use to build your user interface. In practice I think you will find that easier than you might imagine.
It will probably be a good idea to have your business logic (built upon CSLA) in a different project from your UI. This has a couple of advantages; if there was ever a need, you could reuse your business logic dll for a winforms app. Also, you may find some of your team members tend to prefer working on one side or the other or have an aptitude in one area over the other.
I downloaded the CSLA.NET for ASP.NET 2.0, and tried to follow the instructions, but I have some errors.
Please see the details in this post:
http://forums.lhotka.net/forums/22456/ShowThread.aspx#22456
I appreciate your help.
Tarek.
@RikGarner:
Can you shed some light on what your experience has been with the integration of CSLA and the SCSF? I am considering make use of the SCSF on top of our CSLA-based BOs but I have heard from others that it was not a easy/simple prospect.
Thanks.
The integration between CSLA and the UI framework was fine - most of the issues we had were due to the steep learning curve on the SCSF. It is a big framework with a lot of things to get your head around but once the picture starts to emerge from the mist it is an excellent platform on which to build an application.
We compounded the issue by using team members with no experience of CSLA or of the back end database (Oracle)
In the end we didn't end up customising any of the guidance package stuff and just used the framework 'as-is'.
I'm happy to answer any specific questions if you have them.
Cine:To me this looks like the standard inversion of control problem. Take an interface as parameter when you create your BO. The interface should have a function called getStaffList that returns a datatable, this way your BO does not need to know who, how or what is in control of fetching the object.
I am not sure if I made I was able to explain the problem I am facing corectly!
In the normal situation, the data is supposed to be stored in one Database say only from Adabas. So, the SQL String looks like the following:
"select StaffID, StaffName, StaffAge, Salary from AdabasTable;"
(Note: This is a simplistic example, of course, the actual case is mor complicated).
But the above cannot be done becuase the "Salary" is stored in different Database, in SQL Server, which requires another connection string.
One way to solve this problem, is to define a Linked Server in SQL Server, use OpenQuery() function to open the Adabas Table in SQL Server, and use one SQL String to join the tables between Adabas and SQL Server. But this methods defeets the value of OOP, as you may have already built a class to retrieve the first part, and all what you need to do is to get second part of the data from the other Database. The ideal way is to define another class and re-use the functionality of the first class, but I cannot figure out how to do that exactly.
So, we can simply build a Staff Class as follows:
(Note: The syntax my not be 100% correct, this is just for clarification purposes)
public class clsStaff1
private _StaffID as String
private _StaffName as String
private _StaffAge as Integer
private Salary as double
public propert ReadOnly StaffID() as String
get
return _StaffID
end get
end property
...bla bla bla ...
... bla bla...
... same for StaffName, StaffAge, and Salaray ... read only is needed...
public shared function getStaffList() as DataTable
con = open connection to Adabas Table
SQLStr = "select StaffID, StaffName, StaffAge from AdabasTable"
Execute the SQL String and return the DataTable using Adaptor for example !
end function
end class
The question is: How to define another class "clsStaff2" the re-uses the first class (inherits) and just add the the "Salary" from SQL Server Table ?
I think one way to do that is to do the Join between the 2 DataTables in the VB Code, is this possible ?
Is this approach practical in the first place ?
Tarek.
Good news ! The error was resolved, and I managed to run PTWeb Project and PTWin Project successfully.
I am now working on developing a model/demo using CLSA.NET Framework with one of the applications, and I need help to get started.
Please allow me to post a different thread for each requirement, in order to make it easier to track and follow.
I will stop posting in this thread for getting help on how to use CSLA.NET to implement certain programming requirements. I am happy to receive any other comments in this thread which is related to the original subject.
Tarek.
Copyright (c) Marimer LLC