|
Thanks for the tip on extensions, I'll look up some more. I'm not quite familiar with extensions yet, so that should be interesting
I think that when you're creating a shell around some classes, like in the case of DB access, you often lose some flexibility or even functionality (depends on what you want with it and how much time and effort you put into creating your shell). But the big pro to doing this is that it saves time and effort later on.
And the question remains if it is even a con that you lose functionality if you weren't using the functionality in the first place. Let's say your company ONLY uses the command object to execute stored procedures (some weird company policy), even for simple select statements, would it really be that bad if you would build a class that does not support the CommandType.TableDirect or Text anymore? Perhaps your company would even encourage it, so people are not even tempted to break the SP's only policy
It's an OO world.
|
|
|
|
|
Naerling wrote: And the question remains if it is even a con that you lose functionality if you weren't using the functionality in the first place.
You only loose functionality if you demand that "only" those routines are allowed to do database-access. I don't see any value whatsoever in such a restriction.
Naerling wrote: Let's say your company ONLY uses the command object to execute stored procedures (some weird company policy)
I'd be looking for a position in a different company - I wouldn't want to work at a carpenters shop where they only use 2-inch nails either, always becomes a mess
Naerling wrote: would it really be that bad if you would build a class that does not support the CommandType.TableDirect or Text anymore?
Yes, simply because you're obviously not familiar with the consequences. There's always a use-case that doesn't fit the "neat" scenario, otherwise you'd bu simply using Microsoft Access (it offers most functionality most db-applications tend to generalize)
What happens when I need to load a lot from the database? You could write routines for all cases, but then you'd prolly end up with more than a "few" routines. That's where objects win over procedural programming; we can recombine with it all as required, and I could replace the database with a plain textfile by providing my own IDbConnection .
I are Troll
|
|
|
|
|
I agree that's a good idea; however, having access to all the individual classes and objects gives the programmer/designer much more flexibility. Perhaps you could write such a class and also create an article showing how useful it would be to the developer community.
I must get a clever new signature for 2011.
|
|
|
|
|
Thanks for your answer. Read my answer to Eddy Vluggens answer. Perhaps you don't want that kind of flexibility or you prefer simple and quick access over flexibility.
I'll see if I can cook up some sample class.
It's an OO world.
|
|
|
|
|
Naerling wrote: Perhaps you don't want that kind of flexibility or you prefer simple and quick access over flexibility.
Not quite; the point I was trying to make was that using such an all powerful database class removes the flexibility that may be needed in some applications. However, in some cases that would not be needed so your proposed class would be the ideal tool. As always it's "horses for courses": use the tool that is most appropriate for the job in hand, but remember that it may not be the best tool for every occasion.
I must get a clever new signature for 2011.
|
|
|
|
|
|
I encourage your quest for knowledge however your youthful inexperience is not allowing you to see the decades of knowledge and refinements to this subject that have proceeded you. You don't understand the concepts necessary to compile a useful library using good OOD techniques, and based on my experience, no one with six months is capable. I was not, and understood that. As Richard was trying to point there are many more considerations that need to be addressed, simply "wrapping" an object or methods in a simple interface (BTW its called a Facade Pattern) isn't enough. You need to consider things like containment or aggregation, extensibility, life-cycle management and disposal.
Although well-written this article adds nothing to the decades old discussion of the subject.
I know the language. I've read a book. - _Madmatt
|
|
|
|
|
Naerling wrote: Article and sample project especially for you
Pity I don't want or need it.
I must get a clever new signature for 2011.
|
|
|
|
|
Richard MacCutchan wrote: I agree that's a good idea; however, having access to all the individual classes and objects gives the programmer/designer much more flexibility.
If I understand that then it is an over generalization.
I doubt there is going to be any measurable subset of people that would need functionality that exists in the area that NHibernate covers which the tool doesn't cover. I suppose it is possible that there is in fact no functionality that it does not expose.
Not to mention of course that just because one uses NHibernate it doesn't preclude one from using a different idiom in that very rare circumstance (if it ever occurs) where it is insufficient.
|
|
|
|
|
Sorry, but I have no idea what you are talking about. What is NHibernate and how is it relevant to my original comment?
I must get a clever new signature for 2011.
|
|
|
|
|
Richard MacCutchan wrote: Sorry, but I have no idea what you are talking about. What is NHibernate and how is it relevant to my original comment?
As I read your comment it was suggesting that a layer reduces access to functionality which would be otherwise available if the layer did not exist.
The OP mentioned database layers as as an example of that. NHibernate is popular open source example of that. It is a .Net port of java Hibernate.
|
|
|
|
|
Naerling wrote: At this point, is anyone really disagreeing with me?
Nope.
Adding abstractions which make your code more easy are always good. But keep it in mind, more generalization will make lot of trouble and you will end up layering over and over to satisfy all the requirements. And these kind of abstractions won't help you on other projects as each project will have different requirements. So if you plan you generalize too much, you will end up writing another ORM tool like hibernate.
An interesting read : Law of leaky abstractions[^]
Best wishes,
Navaneeth
|
|
|
|
|
+5, read the article some time ago, been some valuable explanation
I are Troll
|
|
|
|
|
Thanks for the article. I'll be sure to read it later!
It's an OO world.
|
|
|
|
|
Its a simple design pattern named as "Facade"
There are low level functions available in an API, but you might need to expose simpler interfaces to your "common" users; those who need very generic functionality. For specific cases, the users may take the pain of going deeper, but 95% of time, its not required.
Hence wrapping an intricate functionality into a simple API (the target of Facade design pattern) provides both common as well as specific users the level of functionality desired by them.
OOPS has lots to learn, and the more experience you get, the deeper you can think. Its good you want to get into design in 6 months and you would sure grow up to a happy professional Cheers
(BTW: include design patterns in your quest, they would tell u a lot how things are designed)
|
|
|
|
|
Thanks for your reply.
Actually this topic is already a few weeks old. I have read up on various OOD principles and design patterns and it already helps me in day to day coding. I have not looked into the Facade Pattern a lot yet, but I will certainly do so. The problem with this pattern for me is where do you keep the line between abstract and real implementation. It seems really hard to make a Facade Class 'Closed for Modification, but Open for Extension.'
It's an OO world.
|
|
|
|
|
how to access share without mapping in code behind (windows apps)?
|
|
|
|
|
A unc path? Is this a trick question?
I know the language. I've read a book. - _Madmatt
|
|
|
|
|
|
In gridview if one click means to go one page another row click means it need to go another page like gmailo inbox. am new to .net. Am interst to do this i can't get any idea. plz help le
|
|
|
|
|
1) You must have asked this in ASP.Net forum as this does not pertain to framework.
2) As in GMail, the click on row (mail header), it dynamically loads the contents of mail, relating to that header. I believe that original page is still there in behind.
This can be achieved using Ajax.
You just need to try hands on Grid view first, then Ajax.
|
|
|
|
|
Try something and then post some code here - someone might be able to help you.
The funniest thing about this particular signature is that by the time you realise it doesn't say anything it's too late to stop reading it.
|
|
|
|
|
I need to read/write files(win apps)to a shared drive (network) with a specific user and pass.
How do I do this. I am using .net 2.0
|
|
|
|
|
|
so what you proposed is this simular to this?
If UNCPath.EndsWith("\") Then<br />
<br />
UNCPath = UNCPath.Remove(UNCPath.Length - 1, 1)<br />
<br />
End If<br />
<br />
<br />
Dim nr As NETRESOURCE<br />
<br />
Dim strUsername As String<br />
<br />
Dim strPassword As String<br />
<br />
<br />
<br />
nr = New NETRESOURCE<br />
<br />
nr.lpRemoteName = UNCPath<br />
<br />
nr.lpLocalName = DriveLetter & ":"<br />
<br />
strUsername = My.Settings.ServiceID<br />
<br />
strPassword = My.Settings.ServiceIDPassword<br />
<br />
nr.dwType = RESOURCETYPE_DISK<br />
<br />
<br />
<br />
Dim result As Integer<br />
<br />
result = WNetAddConnection2(nr, strPassword, strUsername, 0)....
|
|
|
|