For now I probably wouldn't worry about DAOs and other related concepts. Build a strong foundation by encapsulating the CFC methods so that they don't rely on any external variables. That'd be a good start. Once you recoil in terror at seeing a CFC method reference application or session or form or (etc), then you're ready to take the next step :)
On Wed, Oct 22, 2008 at 11:09 AM, Rick Faircloth <[EMAIL PROTECTED]>wrote: > Thanks for the overview, Mike. > > I see what everyone's saying about the encapsulation. I'm just trying to > make all the pieces of the puzzle fit. Your tutorial was helpful. It > was a little > advanced in some respects. I just needed to approach the CFC's a little > more carefully, until I could figure out what was going on, before trying > to > really understand the DAO approach. > > I'm sure to have a "eureka" moment at some point, with everyone's help..and > I'm sure it'll be on a Sunday night...my "honey, don't forget to take > out the garbage" night! :o) > > Rick > > Mike Kear wrote: > > Rick, imagine how it would be if (as is fairly common) you have > > business objects (beans) handling single items, and DAO cfcs handling > > all the database interaction back and forth. This is the scenario i > > drew in the tutorials I wrote ... > > > > So in the application scope you have a DAO - just one . sitting in > > RAM waiting to be called on. And as people come and go through the > > site they're causing beans to be created all over hte place to > > manipulate the things they're needing as they move around. > > > > If (as happens frequently in one of my sites) there are 400 > > concurrent users, and only one DAO for this applicatoin, imagine how > > many people are likely to be simultaneously using an "Add()" method in > > the DAO. In those circumstances it's absolutly essential that the > > methods in teh DAO to e threadsafe. That means ALL variables inside > > the methods have to be var'd unless there is a specific reason not to. > > It means you have to build teh DAO carefully so data from one user > > doesn't interfere with the data from the others. But that's also true > > if you only have 3 simultaneous users. You still dont want their > > information - maybe their shopping carts getting intermingled. > > > > But on the other hand if you dont have the DAO sitting in the > > application scope, every time anyone uses that part of the > > application, the DAO has to be instantiated again. There's an > > overhead processing price to pay for doing that. > > > > Here's my rule of thumb. Vary away from it only once you realise > > the implications ... never require a cfc to know anything about the > > outside world. Anything it needs to know, you'll tell it. So > > that means you tell it what the dsn is. you dont ask it to go look > > in the application vars for it. You tell ilt what the different > > values are for the arguments, either by passing in a struct such as > > form struct or by passing in the values individually or by passing in > > a bean. But the cfc doesnt have to go looking for it, and doesnt > > have to know where it came from > > > > This is exactly how most of the built-in functions in coldfusion work. > > The function replace() doesnt have to know anything - you give it > > the information it needs to do its job. the replace() function > > doesnt do much - it does a limited job quickly and efficiently but > > its a small job. that's how to design your methods in you own cfcs > > - small limited functions that dont know anything about the outside > > world apart from what you tell it, and they should be threadsafe so > > you dont have to use up all your ram and processing power with > > bazillions of copies of the same code running at once. > > > > Hope this helps I rather have the feeling that at the moment > > you're thinking the stuff i put in my tutorial is a lot of additional > > typing - it's all too hard and too much work. That's not a problem > > - it was for me too until suddenly the light went on and i had a few > > of those "EUREKA!!" moments. I can disctinctly remember the day i > > finally 'got it' about encapsulation. I was so excited i made the > > mistake of talking about it in an agitated manner to my wife to > > promptly told me to stop being so bloody stupid and put the garbage > > out cos it's garbage night. <g> > > > > > > Cheers > > Mike Kear > > Windsor, NSW, Australia > > Adobe Certified Advanced ColdFusion Developer > > AFP Webworks > > http://afpwebworks.com > > ColdFusion, PHP, ASP, ASP.NET hosting from AUD$15/month > > > > > > > > On Thu, Oct 23, 2008 at 3:39 AM, Rick Faircloth > > <[EMAIL PROTECTED]> wrote: > > > >> I think I'm beginning to understand your reasoning. > >> It's just taking some time for me to get to the "best practices" of CFC > >> usage. > >> Trying to get "anything" to work at first keeps my projects moving, > while > >> beginning to employ different coding techniques. I'm basically trying > to > >> learn by writing code for projects that are going live with these > updates > >> as soon as I can get them working...too busy for much practice. > >> > >> Also, I'm a solo developer and never plan to code while working for > anyone > >> else..so as far as sharing code or compensation, it doesn't matter. My > >> client's > >> don't care, as long as the correct data shows up on their pages. > >> > >> But I am trying to figure out the best way to do all of this. > >> > >> Thanks, > >> > >> Rick > >> > >> Dawson, Michael wrote: > >> > >>> Technically, they both will work. > >>> > >>> However, what if you have a different process of calling the same > >>> function that doesn't use the form scope? > >>> > >>> What if you want to call the same method as a web service? > >>> > >>> Your current system will fail at that time. > >>> > >>> <realitycheck> > >>> Of course, if you fully control your code and no one else will ever use > >>> it, then do what you think works best for you. > >>> > >>> I have some code that might not pass the approval of several people, > but > >>> it works for me and I can understand it. > >>> > >>> If your code is not being compared to others, nor are you being judged > >>> as part of your compensation, it really doesn't matter. > >>> > >>> However, at some point, you will find that following these accepted > >>> principals will become beneficial. That is when it "clicks" and you > see > >>> the light. > >>> </realitycheck> > >>> > >>> > >>> > >>> > >> > > > > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;207172674;29440083;f Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:314267 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4