|
ah! You mean take a lambda expression in my function parameter? I would have never thought of that?
Also, are you saying loading all objects in memory and then searching them would be more efficient than searching a data base? Because I cant use Linq to SQL, I'm using an Access database.
But I'm curious, searching data like this is a common thing in a lot of apps, how do they implement it?
Thanks so much
Gideon
|
|
|
|
|
Do you have to use Access? Could you not replace it with SQL Server CE, which would give you the easy deployment capabilities you get with Access databases, and the ability to use L2S.
|
|
|
|
|
Yes! I already did this whole app(Hotel Management Studio) with sql server 2k5 express. Turned into a 15,000 line mess, mostly because I didn't design it well(or didn't design it all!).
I'm doing the whole thing again and this time building use cases and going through everything right(I think)
Part of my failure was because Access was the perfect solution and when i did it with sqlservr it raised the complexity and especially the networking stuff got crazy, I have to use TCP/IP to open the data base over LAN, with access I can just open the file over a UNC path. Sweet and simple. Just like the app should be, I dont think its such a big app anyway.
If you are wondering what kind of computer programming, I'm one that turned 18 last week , I dont know hardly anything when it comes to good design but I know quite a bit about technology and API(I'm an MCTS :WinDev and I've even done Win32 API)
It would be very helpful if you could comment on Mark's Solution?
Thanks so much.
Gideon
|
|
|
|
|
Diamond Binding's business objects expose a variety of methods for selecting sets of objects. For the simple searching we expose what you described T[] T.FindByColumn(T.Columns.Foo, value). In most apps that I've implemented then its by far the most common useage. If you were implementing your own data layer by hand, then providing FindByColumn, FindAll and for the rare occasions that you need something more complex, select by stored proc. Select by stored proc could work like T[] T.FindUsing(procName, params[]).
The next level of complexity works using NHibernate Expressions - this is a fairly simple API that covers your boolean logic scenarios. This is implemented by a FindBy that takes an Expression object. The "generic" way that this expression is constructed is by using factory methods. so expression = Expression.Or( expr1, expr2 ). Expression.Between(column, low, high), etc. This is do-able in house if you wanted to go for the learning experience - a simple implementation would be to just emit an SQL condition straight from this tree.
We also provide Hibernate Query Language support - HQL could be seen as an "object-orientated" version of SQL, referring to the model, not the DB. So you can do conditions like "order.product.department.name = 'foo'". Linq is on a similar level of complexity to this.
So theres a fair few options. My recommendation (apart from buying our product :P) would be to start with a bunch of Expression style objects for single column search (= != gt lt) and then expose a FindByExpression and perhaps some thin wrappers such as FindByColumn(...) { r FindByExpression(Expression.Eq(...)) }. Then you can build up your "library" of expressions and go from there.
Definitely don't load everything and query in memory. Imagine if you wanted only one out of the million audit records
|
|
|
|
|
hi mark,
Thanks for your reply, I like your solution, could you please elaborate on the Expression objects
Is it something like:
class Expression{
}
Person[] p = Person.FindByExpression(Expression.And("Age>20","Country='Australia'"));
Person[] FindByExpression(Expression exp)
{
_personDataAccess.GetByQuery("SELECT * FROM Persons WHERE " + exp.ToString());
}
Could you correct me if I'm wrong please.
Thanks so much
Gideon
|
|
|
|
|
Roughly correct. A simple implementation would have say:
Expression { virtual ToString() }
ColumnEqExpression : Expression { column, value }
ColumnGtExpression : Expression { column, value }
OrExpression : Expression { Expression left, right }
So you could construct up (and some nicer static methods could make this more readable - see our API)
myExpr = new OrExpression( left = new ColumnEqExpression(name, joe), right = new ColumnGtExpression(age, 20) );
So the ColumnMatchExpression.ToString might* return "name = 'joe'"
OrExpression.ToString might* return left.ToString() + " OR " + right.ToString()
* The expression structure shouldn't actaully return out SQL with ToString. It should be treated as a model - so have an SQLQueryDielectThingo to iterate over it and emit SQL (so you could write an AccessQueryDielect, etc). Also then you would be able to use parameterised queries where appropriate.
|
|
|
|
|
Thanks so much Mark, it all looks good on paper so far!
|
|
|
|
|
Microsoft Architecture Journal has just published its 17th issue. This issue is focused on Distributed Computing. Eight good articles on distributed computing are included in this issue. A pdf copy of this journal is available at
http://www.msarchitecturejournal.com/pdf/Journal17.pdf[^]
|
|
|
|
|
Hello Everyone.
I got a final project for built a webapp security scanner.
I do not have experiences on coding side but i know something on security side.
I ve some questions.
1-Which Coding language is appropriate for building a scanner?
2-Which operating system is more practical?(Phyton with Linux etc.)
3-How must i create the skeleton of my scanner?
(Firstly I ve to crawl all the site before making a scanning.I basically enter my exploits at the end of a web link.After that i wanna analys the result.
www.victimsite.com/MYCODES.php
www.victimsite.com/MYCODES2.php
www.victimsite.com/alert("CSS is possible")
If a scripting possible on the site i must tak a warning.If i got this warning message ,I will save that link for the result and scanning second link.
etc..)
Thanks for your helps.
|
|
|
|
|
if you have found solution please tell me also. I'm looking for some source codes.
|
|
|
|
|
http://ul.to/lzbx7u[^]
Here is the link of my project. If you need further assistance dont hestitate to contact to me. fuatm16@gmail.com.
Take easy !
|
|
|
|
|
I came across this[^] article today while researching scripting languages. Even though it was written 10 years ago, it still seems to be relavant.
The gist is that low-level languages like C and C++ are good for component building. Scripting langauges, on the other hand, are good for glueing the components together. Seems reasonable.
Scripting languages are a bit foreign to me. I mainly use C++ and haven't touched a scripting language.
I'm looking for examples of where low-level languages are used, like the article described, for component building and scripting languages are used to glue them together. What do these examples look like? How are the languages bridged?
It seems to me that what you'd probably wind up with is a highly optimized engine coded in something like C++ with a scripting language used to write, erm, scripts that's read (somehow) and configures the engine for a particular application.
I'm sort of rambling here. Just thinking out loud and looking for insights and further sources of study.
|
|
|
|
|
Leslie Sanford wrote: I came across this[^] article today
Did you notice that it was dated 1998. Scripting is quite old and common today[^]
Leslie Sanford wrote: I'm looking for examples of where low-level languages are used, like the article described, for component building and scripting languages are used to glue them together.
That's going to be any of them. They are all similar in that regard.
Leslie Sanford wrote: How are the languages bridged?
By an engine or interpreter. They can be used at the OS level or even hosted in a process like a web server or web browser. The hosting environment normally supplies components that are relevant to the environment and integrates the scripts with the engine-interpreter and the process.
|
|
|
|
|
Hello,
Most of the articles I found about MVP talk about advantages it has and why we should use it. However, I could not find any guide showing how to actually develop a WinForms application in c# that follows MVP pattern. There are several articles on codeproject but either they talk about ASP.NET or have low rating. The only thing that I managed to find is MVC# - Model-View-Presenter framework for .NET[^] What's your opinion about it? Is the framework a good one for building MVP applications using WinForms? Is there any guide or tutorial explaining how to actually build a WinForms application in c# that follows MVP pattern?
Thank you in advance.
|
|
|
|
|
|
Thanks. Any other resources too keep in mind?
|
|
|
|
|
Hi guys,
I'm about to start a new desktop application. I've to use the following:
.NET - C#
WinForms
Oracle 10g database
In this project will be involved small team about 3 programmers. This application will be used by 15 users at most.
The application is CRM like. It will use Oracle database for retrieving and storing data.
I don't want to build everything from scratch. I have a tough time to decide what tools to use in order to achieve flexible and well structured solution. I've read about SCSF/CAB and Castle Project, but I'm not sure that I'm checking suitable tools.
Can you suggest good design open source projects that use same technologies and Oracle database?
Please help! What tools/Frameworks you would use? What design in your opinion is the best for described application?
Thanks in advance.
|
|
|
|
|
hi,
(I want someone to check if my idea is utterly stupid or ok??)
I have a mid complex app for a hotel that needs a fine grained user security system. In other words an admin should be able to deny/grant specific access to users like Ability to make a Reservation or the ability to print reports.
Now, I'm thinking the business objects could take something like:
enum UserPrivileges { various privileges....... };
IPrivilegedUser
{
public UserPrivileges Privileges
{
get;
}
}
The user class inherits from this interface, the business objects could take this user in a function and return true/false as per the needed privileges, or maybe throw an exception:
User user1 = new User(); //class User inherits from IPrivilegedUser and loads the right privileges from the DB
Reservations.LoadPrivileges(user1);//check the returned value..??
Reservations.EditReservation() // calling this should fail if the privileges are not enough!?
Is this a good enough design, will it break apart somewhere or is there a better way to do this?
Declarative security like CAS in .NET would be an overkill since its not a very large app, but I do need the design to be flexible enough so that if the app does grow big I'm not in a mess.
Thanks
Gideon
|
|
|
|
|
2 words. MembershipProvider. RoleProvider.
These providers will more than take care of your needs.
|
|
|
|
|
aren't those classes for ASP.NET?
I'm doing a Windows Desktop application.
|
|
|
|
|
Doesn't matter - you can use them with desktop apps as well - I've done it.
|
|
|
|
|
|
Hello there,
I am currently working on a project with a 3-tier datamodel.
The client will connect by a WCF as a custom services (NOT using IIS)
The Goal is to handle in a "central" way the data handeling an validation.
I looked at different technology's but I cannot put all the pieces togetter
I looked at using Datasets at the Business tier:
Which can nicly validate data on columns and rows
I looked also to DAAB as the Data tier. But looks to limited to me. But Maybe I am wrong
So decided to look to the Entity framework. Which looks nice to me. But it lacks data validation.
So though to combine that with Datasets but no idea how to do this.
Thx.
|
|
|
|
|
We tend to do this by using a custom validation engine, which hooks into the business layer, and provides configurable rulesets. Done properly, this is a highly flexible and highly scalable architecture.
|
|
|
|
|