Making my life easier

Posts   
 
    
Jeff M
User
Posts: 250
Joined: 04-Aug-2004
# Posted on: 12-Mar-2006 21:50:19   

Hi all.

I'm developing an enterprise level, mission critical application that uses remoting, ASP.Net, web services, messaging, etc. A monster.

I'm using VS.Net 2005 Team Suite and 1. Developers Express components (simply the best) 2. Resharper beta build 233 (despite its quirks, I can't live without it) 3. LLBLGen (best ORM, bar none - and I've evaluated them all)

I'm evaluating: 1. NCache from AlachiSoft (immature but potentially powerful. Expensive.) 2. Genuine Channels (this intimidates me because it provides very powerful low-level capabilities that pretty much go over my head. Especially in light of such poor documentation).

What are you all using?

Jeff

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39798
Joined: 17-Aug-2003
# Posted on: 14-Mar-2006 11:01:23   

I don't see the purpose of NCache. What does it solve? It seems to cache objects, but to access them, you have to cross a remoting boundary, making it slower than db access or am I missing something?

Frans Bouma | Lead developer LLBLGen Pro
cds avatar
cds
User
Posts: 20
Joined: 01-Feb-2006
# Posted on: 15-Mar-2006 01:11:21   

We've recently implemented a smart-client application using LLBLGen Pro (my first LLBLGen Pro project, after coming from Hibernate in Java) and remoting using Genunie Channels.

I can thoroughly recommend both tools. Genuine Channels is pretty intimidating to start with but once you get used to it, it works well. (Especially with compression turned on - though the sharpziplib library contains a bug that means it doesn't work well with LLBLGen - but I developed a fix for it). The Genuine Channels documentation leaves a lot to be desired though, as does the sample source code.

However, in the end, we've been successful with it, producing a fast efficient client that was pretty easy to develop using these tools.

Craig

Barry
User
Posts: 232
Joined: 17-Aug-2005
# Posted on: 15-Mar-2006 02:13:53   

cds wrote:

We've recently implemented a smart-client application using LLBLGen Pro (my first LLBLGen Pro project, after coming from Hibernate in Java) and remoting using Genunie Channels.

I can thoroughly recommend both tools. Genuine Channels is pretty intimidating to start with but once you get used to it, it works well. (Especially with compression turned on - though the sharpziplib library contains a bug that means it doesn't work well with LLBLGen - but I developed a fix for it). The Genuine Channels documentation leaves a lot to be desired though, as does the sample source code.

However, in the end, we've been successful with it, producing a fast efficient client that was pretty easy to develop using these tools.

Craig

We are using Genuine Channels too, it is good and stable.

What bug does shareziplib have and not work well with LLBLGen? Could you mind give me some information about it.

Thank you very much.

cds avatar
cds
User
Posts: 20
Joined: 01-Feb-2006
# Posted on: 15-Mar-2006 06:49:23   

Sharpziplib contains a bug that throws an exception when it's trying to decompress a byte[0] which we encountered using a RowVersion for concurrency in SQL Server. When you're sending a new entity from the client to the server the RowVersion field will be empty (and set to a new byte[0]). When the server tries to decompress it it doesn't know how to deal with a byte[0].

The specific fix I implemented is detailed here:

http://community.sharpdevelop.net/forums/post/3971.aspx

The guy who maintains sharpziplib is very busy so can't confirm the fix is correct in all situations but it's running in production for me and hasn't caused a problem yet.

HTH

Craig

Jeff M
User
Posts: 250
Joined: 04-Aug-2004
# Posted on: 15-Mar-2006 17:13:30   

cds wrote:

Sharpziplib contains a bug that throws an exception when it's trying to decompress a byte[0] which we encountered using a RowVersion for concurrency in SQL Server. When you're sending a new entity from the client to the server the RowVersion field will be empty (and set to a new byte[0]). When the server tries to decompress it it doesn't know how to deal with a byte[0].

<Laughing> The error message "Don't know what to do" is hardly very reassuring. And look at the code there: that's pretty low-level (read: scary) stuff. Pretty intimidating to us GL4 hackers.

!!!

Jeff

cds avatar
cds
User
Posts: 20
Joined: 01-Feb-2006
# Posted on: 16-Mar-2006 01:28:28   

Yeah, I agree it is pretty low-level stuff and you do have to know a lot (or learn a lot) about networking to use Genuine Channels (I previously did a project with plain .NET Remoting) but GC is easier and gives you nice features like being able to easily deliver events from the server back to the client.

Jeff M
User
Posts: 250
Joined: 04-Aug-2004
# Posted on: 18-Mar-2006 00:20:51   

Otis wrote:

I don't see the purpose of NCache. What does it solve? It seems to cache objects, but to access them, you have to cross a remoting boundary, making it slower than db access or am I missing something?

Good point. I've asked AlachiSoft the same question and haven't heard back. Yet.

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39798
Joined: 17-Aug-2003
# Posted on: 18-Mar-2006 09:10:09   

Jeff wrote:

Otis wrote:

I don't see the purpose of NCache. What does it solve? It seems to cache objects, but to access them, you have to cross a remoting boundary, making it slower than db access or am I missing something?

Good point. I've asked AlachiSoft the same question and haven't heard back. Yet.

Alachisoft... don't get me started. simple_smile

Frans Bouma | Lead developer LLBLGen Pro
Posts: 497
Joined: 08-Apr-2004
# Posted on: 22-Mar-2006 13:10:35   

Get FinalBuilder, its a GodSend when it comes to automating the build process wink