473,326 Members | 2,048 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,326 software developers and data experts.

Monolith -> layered client/server?

I'm about to start converting my application from a old-style monolith exe
(with flat files and limited database support for sharing some of the data)
to a layered .NET SQL server version. I have decided to do it as a Windows
Forms client application, hooking up to a central SQL Server, and then maybe
later create an asp version of the client if needed.

I have a couple of questions on the setup:

1) The clients will be going through the I-net to reach the SQL Server. I'm
assuming I have to set up a VPN for this for security reasons, right?
Exposing SQL server directly would be bad?

2) If so, is this process transparent to the client program, or do I need to
include some code in the client to establish the connection, etc.? E.i. Can
I just use ADO.NET with a simple IP in the connection string (as I do in my
test project) or do I need some VPN SDK to handle the connection?

3) I'm a bit confused about the server side of the application. The way I
see it now, I only need to have the SQL server on that server machine, and
have the client.exe, BL.dll, DAL.dll on the client machines. Is there a need
for an application specific server/service besides the actual SQL server? If
so, what would its purpose be? I see mention of putting the DAL (and BL?) on
the server, but that could only work if you had a running server/service
program receiving requests from the client programs, right? If I already
have a method of automatically updating the client.exe (and any other files
the client has), would there be any point in not having the BL and DAL on
the client side?

Jesper.
Jul 21 '05 #1
2 2364
IMHO :)

Why not just build ASP.NET system straight off as (non-presentation) code
would be practically the same.

That way you can put as many logical layers (data access, business rules,
whatever) on a server talking to your SQL Server...
AND it would save problems with deployment - users navigate to applicaiotn
via browser with no reason for software updates
AND it wouldn't be a problem for future as you laready have ope eye on an
ASP "version" too...

1) I'd have a specific SQL Server user account for the application and
ALWAYS access the db through that...
Use stored procedures and/or SQL created on the fly by the application if
required. SP's are better for security reaons AND the db can optimise
execution...
Connection details remain secure on the server BUT can be changed easily
should it be required...

2) Client would require db connection info. Using a windows app on the
client MIGHT be problematic if for any reason your db conneciton details
change...
Hence, I reckon ASP.NET is better solution for internal network where all
logic remains in server environment for ease of maintenance...

3) No, you don't NEED anything on the server except the db BUT you are
deploying mulitple instances of your layers to each client...
Why build layers in this case? Yes you are benefitting from logical
extrapolation of functionality but that's about it...
AND you stirring up depolyment problems for new releases (clients out of
synch) and ooh! lots of things...

Better is put layers on server machine and keep thin client for presentation
only - whether Windows Forms or web application...
Advantage of Windows forms? Richer set of controls. No browser requirement...
ASP.NET with subsequent XML/XHTML/JavaScript frontend? Ease of deployment
and maintenance...

You'll end up writing the same back end data access code anyway :)

al*****@yahoo.com

"Microsoft" wrote:
I'm about to start converting my application from a old-style monolith exe
(with flat files and limited database support for sharing some of the data)
to a layered .NET SQL server version. I have decided to do it as a Windows
Forms client application, hooking up to a central SQL Server, and then maybe
later create an asp version of the client if needed.

I have a couple of questions on the setup:

1) The clients will be going through the I-net to reach the SQL Server. I'm
assuming I have to set up a VPN for this for security reasons, right?
Exposing SQL server directly would be bad?

2) If so, is this process transparent to the client program, or do I need to
include some code in the client to establish the connection, etc.? E.i. Can
I just use ADO.NET with a simple IP in the connection string (as I do in my
test project) or do I need some VPN SDK to handle the connection?

3) I'm a bit confused about the server side of the application. The way I
see it now, I only need to have the SQL server on that server machine, and
have the client.exe, BL.dll, DAL.dll on the client machines. Is there a need
for an application specific server/service besides the actual SQL server? If
so, what would its purpose be? I see mention of putting the DAL (and BL?) on
the server, but that could only work if you had a running server/service
program receiving requests from the client programs, right? If I already
have a method of automatically updating the client.exe (and any other files
the client has), would there be any point in not having the BL and DAL on
the client side?

Jesper.

Jul 21 '05 #2
> Why not just build ASP.NET system straight off as (non-presentation) code
would be practically the same.
I have several issues with ASP.NET. My application relies heavily on rich
controls that I currently have no ASP.NET equivalent for. The 'rich' feel is
the number 1 reason my user like my current program. Secondly, I'm a little
worried about scalability and response time when 'flipping though' data
(current responsiveness of the UI is basically instant). If the application
experiences 'pauses' like when clicking links in IE (ranging from 1 second
to ?) and/or page reloads everytime the user changes a value or decides to
view a new range of data, then this is a definataly bad.
1) I'd have a specific SQL Server user account for the application and
ALWAYS access the db through that...
Use stored procedures and/or SQL created on the fly by the application if
required. SP's are better for security reaons AND the db can optimise
execution...
Agreed. Already doing this just for optimal use of connection pooling.
2) Client would require db connection info. Using a windows app on the
client MIGHT be problematic if for any reason your db conneciton details
change...
I agree this can be a problem, although I concider it to be minor in my
case, as I'm going to have a feature that lets clients get updated with
planned server changes. Only unplanned changes will be a problem.
Why build layers in this case? Yes you are benefitting from logical
extrapolation of functionality but that's about it...
AND you stirring up depolyment problems for new releases (clients out of
synch) and ooh! lots of things...


Yes, I'm using layers basically only for the logical seperation. The
deployment issue has been taken care of already, so I don't really concider
it a problem.
Jul 21 '05 #3

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

6
by: Damien | last post by:
Dear All, I'm having LOTS of troubles setting the extensions directory under windows. On my "testing" server (windows XP, IIS), I could set the directory to : extension_dir = ./extensions/ ...
6
by: Brad Clements | last post by:
Now that Thomas is back from vacation ;-) I cannot get the example service to work using Python 2.3 and the latest released py2exe (or the cvs version) on Win2k SP3. I can run the sample service...
21
by: Amanita, Love Ewe | last post by:
You are all a bunch of worthless motherfuckers! = Sharon expects the printer within hers and actually looks. Why will you grasp the ugly worthwhile onions before Satam does? Many proud cats...
5
by: Egor Bolonev | last post by:
import os print os.listdir("\\\\delta\\public") outputs and import os print os.listdir("\\\\delta")
53
by: Andrew Poulos | last post by:
I've got some CSS that looks like this: body { margin: 0; font-family: Arial, Helvetica, sans-serif; font-size: 140.01%; color: #000000; } but IE won't apply the font size to text in table...
21
by: Travis 'Bailo' Bickel | last post by:
Lately, I have been having a bear of a time trying to acquire a Linux driver for my S3/ProSavage chipset -- but that quest is now almost at an end as I have located a noble band of people who are...
23
by: Arapahoe | last post by:
When you really boil it down...in the last 60 years of computing...it's really all been IBM. I mean, I've been reading this book "Hackers" which goes through all the *underground* computer...
13
by: Park Ho-Kyung | last post by:
Hello. I try to extend STL, for example, add member function like trim_left to basic_string<charT, traits, Alloc>. However I am in the despair as soon as I see STL source. I am using STLport...
9
by: Heather | last post by:
I have created a database application consisting of a front end and backend file. Data entry and administration of the application are done at a central location. The next requirement is to be able...
4
by: ng | last post by:
Help, please. I don't even know where to begin. In Access 1.0 days, our comany hired a man to create a sales database for our company. Unfortunately, most of his code was and still is in macro...
0
by: DolphinDB | last post by:
Tired of spending countless mintues downsampling your data? Look no further! In this article, you’ll learn how to efficiently downsample 6.48 billion high-frequency records to 61 million...
0
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
1
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
0
by: ArrayDB | last post by:
The error message I've encountered is; ERROR:root:Error generating model response: exception: access violation writing 0x0000000000005140, which seems to be indicative of an access violation...
1
by: PapaRatzi | last post by:
Hello, I am teaching myself MS Access forms design and Visual Basic. I've created a table to capture a list of Top 30 singles and forms to capture new entries. The final step is a form (unbound)...
1
by: Defcon1945 | last post by:
I'm trying to learn Python using Pycharm but import shutil doesn't work
1
by: Shællîpôpï 09 | last post by:
If u are using a keypad phone, how do u turn on JavaScript, to access features like WhatsApp, Facebook, Instagram....
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.