Wednesday, April 27, 2005

NHibernate and ASP.NET

If you haven't seen Nhibernate yet, you should really check it out. There are a lot of free ORM tools out there, but this one seems to be the most liked, as far as I've read. I am implementing it in a new project at work and so far I am liking it. A lot.

What I like best is that my Base business object can implement all of the details in Saving, Updating, and deleting objects... all I have to do is make sure and create the xml mapping file and all is taken care of for me.

I do have some design concerns though, as I don't want my front-end coupled to NHibernate at all. The UI developer shouldn't even have to know the workings of the object persistance, he/she should just call BusinessObject.Save() and let the Data Layer handle it.

So, following some advice on TSS and Code Project I decided to abstract the nitty-gritty into a static class.

Ooh, did I just say static? That must be wrong... Static classes are not very reliable in a web application, as you don't control it's lifetime at all. So I have some basic code that generates the necessary configuration, loads my persistant classes into NHibernate, and builds the session factory, and this is all static. As far as the application goes, we won't be able to tell it isn't working because the static members will just be recreated once they are lost. I'm concerned about the performance hit that we will suffer because of this.

I also want to avoid tying it to the Application bag, because that introduces a coupling between the UI and the Class library.

I'm sort of stumped at this point, and I haven't read anything yet that gives me a better alternative. Can someone recommend a solution?
Monday, April 11, 2005

img Border0 Styleborder1


interior 2 Posted by Hello

img Border0 Styleborder1


yet another Posted by Hello

img Border0 Styleborder1


here's another angle Posted by Hello

img Border0 Styleborder1


I'm selling my car... anyone interested? Posted by Hello
Monday, March 21, 2005

IE / Firefox and Javascript

I'm pretty sure all web developers have been annoyed a time or two (thousand) at the differences in the way Firefox and IE perform with the same HTML / Javascript. I am forced to use IE primarily at work because half of the legacy code is only IE compliant, which is kind of sad.

One recent annoyance I had was a simple one: opening a pop-up window. Here was the code:


<a onclick="window.open('url.html', 'some page', 'toolbar=no, location=no, scrollable=no');" href="#" > link < /a > 


This worked fine in Firefox, but not in IE. IE complained about "invalid argument" ... after about 3 hours of googling I found out that the page title (what I had put as "some page") has to be 1 word for IE to function properly. How retarded is that?

On a side note, checkout these cool extensions for firefox! ... Tidy is my new favorite...

Tuesday, March 08, 2005

Free books from Apress

Thanks to a link from Mykre , I now have some new books to read! Apress is giving out some eBooks for free, and they might just be worth the download! Enjoy!
Friday, March 04, 2005

Team Development with ASP.NET Multiple Projects

I thought I'd share my little setup with the world. I have been googling my ass off trying to find out the best way to do what I need done, but I haven't had much luck.

Basically here was my problem:
  • Multiple Developers accessing the solution -- need multiple projects (this was before source control -- yuck).
  • Different components in VB.NET / C# (can't combine languages until 2.0)
    • the previous code used single file aspx pages...(double yuck)
    • need to maintain common directory structure as on live server
Now I read a solution somewhere that just said to keep adding projects underneath your web projects root directory, and remove the "application" in iis, remove global.asax & web.config and you're good to go. But wait, when you compile it leaves the .dll in the local \bin folder. I tried to set the output directory to the root bin folder, but Visual Studio didn't keep the changes. In fact, when I clicked apply it just reverted to "\bin" instead of " ..\..\bin"
I recieve a (stupid) suggestion from a website to add each project as a reference in the main project -- well this caused all 10 projects to be built each time I compiled... yuck.

Finally, after a few problems of not being able to debug certain dll's, I started at the solution again. Jason Olson recommended I try editing the project file directly with notepad. DAMNIT why didn't I think of this in the first place?!?! It worked like a charm! I'm not sure why Visual Studio compained about the output folder in the first place. In any case, I have been so used to just building all of the projects each time I wanted to compile, that it feels like the build speed is lightning fast!
Saturday, February 26, 2005

annoyances while combining VB.NET and C#

I ran across this annoyance today, probably a bug in Visual Studio. I have a custom collection that encapsulates an arraylist, and it basically has 5 different overloads for the Add() method.

well this is written in VB.NET, while 1 of the instances of this class is in C#. When I added a new overload to the collection, I named it add() instead of Add() (VB.NET takes the first declared name as the correct case usage for variables and methods, so my other methods were changed as well, but the compiler doesn't actually show this change unless you visit the line again -- and hit a carriage return).

My C# project complained no method named Add() existed. Hrm, so I use intellisense to find out that the method is now called add() -- weird. So I change it to add() to get it to compile, then go fix it.

Well the compiler this time complained that there didn't exist an add() method. Ok, now I'm a little upset. This is just stupid. The compiler is obviously confused. I go back in to the VB.NET project, fix the case to read Add(), and I get ANOTHER compile error. This time saying that there was no Add() method. Arg!

Viewing the object in intellisense must've slapped VS back into shape because it showed the correct method: Add(). Rewriting the line verbatim solved the problem and compiled just fine.

Ahh, that's why they say, "Where do you want to go today?" (one of my old professors used to say that....)
Monday, February 21, 2005

I swear I'm the last to know everything....

I must be really out of the loop. Even searching on google before I never ran into this until yesterday: NUnitASP. What a cool extension. I must've been searching on the wrong terms because it's been out for over a year. Anyway it lets you grab pages and test things with full HtppContext so you can really test the front end behavior and be confident in your pages.

Anyway, if there exists such a soul that has not heard/used ASP.NET unit testing before I suggest checking out NUnitASP. There's a pretty easy-to-follow tutorial at http://www.theserverside.net/articles/showarticle.tss?id=TestingASP

Now to write tests for my 100+ pages... /quiver

(on a side note I'm still looking for some practicle examples of testing my class library code with NUnit... I'm missing the bigger picture I think, but how can I easily test a class library that almost primarily deals with database interaction?? )
Tuesday, February 15, 2005

Empires: Dawn of the Modern World

Empires: Dawn of the Moder World

I am ADDICTED to this game! I played the original Empire Earth for a really long time, and this is a pretty good sequel.

One really cool thing is that Empire Earth 2 is coming out pretty soon, and it looks like another good addition to the series. The original EE will probably be offered free from Sierra once it hits stores, so keep an eye out for that.

Playing these types of games makes me think of how good of an example they are for good object oriented design and opportunity for lots of design patterns. I really think a game like this is over my head at the moment, but it's nice to have something to strive for.

Most resell shops will have this game for about $10-$15, so pick it up... it's good.
Loan - Mortgage Calculator - Homeowner Loans - Bad Credit Loans