Sunday, May 01, 2005

Hear my email on .NET Rocks!

Carl Franklin from .NET Rocks! chose my email to read on the next show. Tune in and listen...

For my prize I got to pick from their section of "useless crap", and I chose the big-ass coffee mug... because I can always use more coffee! (I guess I am not dorky enough to wear a skin tight baseball shirt or truckers hat that says ".NET Rocks!" on it... )

If you aren't a regular listener, you should really try it out, most of the time you'll learn a thing or two new, and it's sometimes pretty funny. My favorite shows were with Scott Hanselman & Rory Blyth and Bill Vaughn & Rocky Lohtka. Here's a hilarious quote from the show:

"I'm done with objects."

- Rocky Lohtka on .NET Rocks at Dev Connections 2005

Thursday, April 28, 2005

NHibernate and ASP.NET - Part 2

After some toying around, I have my first object Saving/Updating/Deleting and using a GetAll method to bind to a Datagrid. All of this with about 5 or 6 lines of UI code! Yummy!

I still have some design concerns to wrinkle out, though. Here's how I have mine set up:

public class NHManager
{
public NHManager()
{
//load config

//create session factory
}
}


public abstract class BusinessBase
{
private static NHManager _mgr = null;
[ThreadStatic()]
protected static NHManager Manager
{
get
{
if( _mgr == null)
_mgr = new NHManager();
return _mgr;
}
}

private ISession _session = null;
protected ISession CurrentSession
{
get
{
if( _session == null )
{
//see if context contains it
if( HttpContext.Current[NHSESSION] == null )
//key is a constant
{

//this is the first access for this request,
//load the object

_session = Manager.OpenSession();
HttpContext.Current[NHSESSION] = _session;
}
else
{
//it exists in this request
_session = HttpContext.Current[NHSESSION]
as ISession;
}
}
//make sure it's connected
if(! _session.IsConnected)
_session.ReConnect();
return _session;
}
}
}


Is there anything glaringly wrong about the above sample? I am expecting a little flaming due to the [ThreadStatic()] in my ASP.NET Application, but is it really that bad since my manager object is WORM (Write Once Read Many) ???

I welcome suggestions and comments (now that they will actually work :P )

New template

Well I gave up on the old template because I recently was told that nobody can reply to any of my posts! I wonder what this has to do with the template that I was using, but I think that was the culprit. Maybe people actually do read this after all. :)
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....)
Remortgage - Renegade motorhomes - Credit Counseling - Credit Card Consolidation