By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
455,567 Members | 1,651 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 455,567 IT Pros & Developers. It's quick & easy.

Win App Development Program Structure

P: n/a
RBD
Hi all,

I am a a self taught C# programmer. I have been developing custom apps
for a few years now, but they have mostly been very small apps for
individuals or departments. Now I am getting into fairly large custom
apps for small/medium sized companies.

My problem is I have been ok with the small apps, but I dont know how
to structure large apps. I need resources that will teach me how to
structure medium sized applications. I'm talking best practices etc.
Not things like naming conventions, but actual application structure. I
hope I am making sense.

Are there any experienced programmers out there that can point me to
some resources (books, websites, etc.) that will teach me this?

Thanks in advance!

---Richard

Sep 1 '06 #1
Share this Question
Share on Google+
10 Replies


P: n/a
Hello,

I was in the same shoes that you are. Now i'm to a place where some
apps are used by hundreds of people and designing the app is getting to
be pretty important for maintenance and sanity on my part as I am a
lone developer.

I recently came across test driven development (TDD) and O/R mappers,
in addition ive read several books on design patterns. these are some
good starting points to read up on.

There is no definitive source for "best practices", but i've taken a
little from each subject area trying to see what works for other
people. Alot of people will say this works better, or that works better
but it all comes down to what works for YOUR situation.

If you think you need to use something, stop and think of WHY you need
to use it. This will save you from implementing things that are not
needed, leading to code bloat; which i have had the pain of dealing
with a couple of times myself.

I would suggest reading a couple of books on design patterns. Design
patterns explained is one I bought. I believe its by Alan Shalloway.
One pitfall to design patterns though, if you dont understand how a
pattern works then dont use it, as you might mis-use the pattern.

The TDD tool I use is nunit
http://www.nunit.org

O/R Mappers are very handy. They eliminate a great portion of Data
Layer code. I am using NHibernate
http://www.nhibernate.org

It's open source and has a pretty big movement. I havent even scratched
the surface yet with this mapper though, it seems very complex. it has
a number of features that speed up the data layer.

Hope this helps somewhat!

Sean


RBD wrote:
Hi all,

I am a a self taught C# programmer. I have been developing custom apps
for a few years now, but they have mostly been very small apps for
individuals or departments. Now I am getting into fairly large custom
apps for small/medium sized companies.

My problem is I have been ok with the small apps, but I dont know how
to structure large apps. I need resources that will teach me how to
structure medium sized applications. I'm talking best practices etc.
Not things like naming conventions, but actual application structure. I
hope I am making sense.

Are there any experienced programmers out there that can point me to
some resources (books, websites, etc.) that will teach me this?

Thanks in advance!

---Richard
Sep 1 '06 #2

P: n/a
RBD,

To show that dkode is not alone what is somehow an opinion, I agree with the
main intention (and mainly to read in the begin part placed) of his text,
however as well with the rest as that does not fit.

Cor

"RBD" <rd*******@hotmail.comschreef in bericht
news:11**********************@b28g2000cwb.googlegr oups.com...
Hi all,

I am a a self taught C# programmer. I have been developing custom apps
for a few years now, but they have mostly been very small apps for
individuals or departments. Now I am getting into fairly large custom
apps for small/medium sized companies.

My problem is I have been ok with the small apps, but I dont know how
to structure large apps. I need resources that will teach me how to
structure medium sized applications. I'm talking best practices etc.
Not things like naming conventions, but actual application structure. I
hope I am making sense.

Are there any experienced programmers out there that can point me to
some resources (books, websites, etc.) that will teach me this?

Thanks in advance!

---Richard

Sep 2 '06 #3

P: n/a
RBD
Corm Ligthert,

I am not sure what you mean.

Cor Ligthert [MVP] wrote:
RBD,

To show that dkode is not alone what is somehow an opinion, I agree with the
main intention (and mainly to read in the begin part placed) of his text,
however as well with the rest as that does not fit.

Cor

"RBD" <rd*******@hotmail.comschreef in bericht
news:11**********************@b28g2000cwb.googlegr oups.com...
Hi all,

I am a a self taught C# programmer. I have been developing custom apps
for a few years now, but they have mostly been very small apps for
individuals or departments. Now I am getting into fairly large custom
apps for small/medium sized companies.

My problem is I have been ok with the small apps, but I dont know how
to structure large apps. I need resources that will teach me how to
structure medium sized applications. I'm talking best practices etc.
Not things like naming conventions, but actual application structure. I
hope I am making sense.

Are there any experienced programmers out there that can point me to
some resources (books, websites, etc.) that will teach me this?

Thanks in advance!

---Richard
Sep 2 '06 #4

P: n/a
I agree with most of this statement.
But I would stress more about the TDD. Some call it Test Driven
Development, but at our work we call it Test Driven Design, because it
changes the way you approach development. It really is a big turn
around in the way you create your applications. We need TDD because our
web applications are used by thousands of government staff state-wide.
We also use Nunit, and nMock.

Also look into a particular design pattern called "Model View Presenter
(MVP)". We are pushing this extremely hard now and the benefits for
larger applications is massive, in terms of maintainability. Also, you
might want to first look into "Dependency Injection" pattern before
tackling MVP.

Just talking the talk helps you walk the walk when it comes to design
patterns. I would say read the suggested book and become familiar with
the terms. If you don't understand a particular pattern, just post to
this group.
<flameIts way better than the VB group because the quality of
developers here is much higher.</flame(that doesn't include me
naturally!).

Learn about other technologies, both MS and 3rd party. For example, we
use NANT quite a lot as well. And consider a source repositry such as
source safe or csv. Code generators such as 'Code Smith' are useful too
(version 2.8 is free I think) (another one is RDP, but I hate it
personally...)

Some companies like to write a core framework that's usable in all
applications. This might work and serve to increase productivity. We
certainly do this. Some of the things such as user authentication in
2.0 have made some of it redundant though, so there are always wins and
losses with this approach. We also have a core set of database tables
that always have the same name (such as the users, roles, logs, data
dictionary, etc) to be used with the framework.

nHibernate is being used here as well, but I am wondering how much will
be made redundant by the new features LINQ, vNext, and object data
binding (I was hung over in that presentation at Tech Ed and not paying
as much attention as I should have).

Also check out Enterprise library. They are an (unsupported) Microsoft
library of Application Blocks. I think they are trying to make things
easier in terms of speeding up development by wrapping existing .NET
Framework classes. From memory, there's a user authentication one,
encryption, and data layer blocks. Someone else may be able to give
more info and explanation as to how useful they are in speeding up
development (once you overcome the learning hurdle of course).

Thats about all I have to say right now. I'm only typing a long answer
because I'm waiting for someone to answer MY question about web
scraping... see yas.

dkode wrote:
Hello,

I was in the same shoes that you are. Now i'm to a place where some
apps are used by hundreds of people and designing the app is getting to
be pretty important for maintenance and sanity on my part as I am a
lone developer.

I recently came across test driven development (TDD) and O/R mappers,
in addition ive read several books on design patterns. these are some
good starting points to read up on.

There is no definitive source for "best practices", but i've taken a
little from each subject area trying to see what works for other
people. Alot of people will say this works better, or that works better
but it all comes down to what works for YOUR situation.

If you think you need to use something, stop and think of WHY you need
to use it. This will save you from implementing things that are not
needed, leading to code bloat; which i have had the pain of dealing
with a couple of times myself.

I would suggest reading a couple of books on design patterns. Design
patterns explained is one I bought. I believe its by Alan Shalloway.
One pitfall to design patterns though, if you dont understand how a
pattern works then dont use it, as you might mis-use the pattern.

The TDD tool I use is nunit
http://www.nunit.org

O/R Mappers are very handy. They eliminate a great portion of Data
Layer code. I am using NHibernate
http://www.nhibernate.org

It's open source and has a pretty big movement. I havent even scratched
the surface yet with this mapper though, it seems very complex. it has
a number of features that speed up the data layer.

Hope this helps somewhat!

Sean


RBD wrote:
Hi all,

I am a a self taught C# programmer. I have been developing custom apps
for a few years now, but they have mostly been very small apps for
individuals or departments. Now I am getting into fairly large custom
apps for small/medium sized companies.

My problem is I have been ok with the small apps, but I dont know how
to structure large apps. I need resources that will teach me how to
structure medium sized applications. I'm talking best practices etc.
Not things like naming conventions, but actual application structure. I
hope I am making sense.

Are there any experienced programmers out there that can point me to
some resources (books, websites, etc.) that will teach me this?

Thanks in advance!

---Richard
Sep 3 '06 #5

P: n/a

Steven Nagy wrote:
Also look into a particular design pattern called "Model View Presenter
(MVP)". We are pushing this extremely hard now and the benefits for
larger applications is massive, in terms of maintainability. Also, you
might want to first look into "Dependency Injection" pattern before
tackling MVP.
I was under the impression that ASP.NET code-behind pages already use
the MVP design pattern. The aspx UI being View, Code-Behind being the
Presenter and your middle tier being your model.

Sep 5 '06 #6

P: n/a
You might be right... But the code behind still contains all the UI
elements. Doesn't this contradict MVP? Unless you mean the way Visual
Studio 2005 implements partial classes to spread the UI code into the
designer file, getting rid of that pesky spam from the developer's
eyes.. in which case I'd say firstly that its still not MVP because its
the same class still that contains all the UI elements, and secondly,
thats just one implementation, and we don't all use VS2005. Also,
where's the dependency injection? By default we always use design time
tools for database connections and so on. I'm no MVP expert, but
shouldn't those things be injected into the view? I guess the pattern
is always open for interpretation.

I could have misunderstood your posting. Have you got any documented
references about your MVP statement? I'd love to read them.

Cheers,
Steven

Sep 5 '06 #7

P: n/a
If you look up MVC on wikipedia, it describes as the mvc pattern being
very prevalent in .NET because of the reasons I stated, although
wikipedia is open for discussion, so I suppose this is just an example.

Steven Nagy wrote:
You might be right... But the code behind still contains all the UI
elements. Doesn't this contradict MVP? Unless you mean the way Visual
Studio 2005 implements partial classes to spread the UI code into the
designer file, getting rid of that pesky spam from the developer's
eyes.. in which case I'd say firstly that its still not MVP because its
the same class still that contains all the UI elements, and secondly,
thats just one implementation, and we don't all use VS2005. Also,
where's the dependency injection? By default we always use design time
tools for database connections and so on. I'm no MVP expert, but
shouldn't those things be injected into the view? I guess the pattern
is always open for interpretation.

I could have misunderstood your posting. Have you got any documented
references about your MVP statement? I'd love to read them.

Cheers,
Steven
Sep 6 '06 #8

P: n/a
If you look up MVC on wikipedia, it describes as the mvc pattern being
very prevalent in .NET because of the reasons I stated, although
wikipedia is open for discussion, so I suppose this is just an example.
I love wikipedia and treat its contents as the direct words of god. So
I can't dispute the claim it makes about implementation of MVC in .NET.

I can however point out that both the MVC and MVP patterns have
developed considerably in their own rights, and that you can't
necessarily use an argument that applies to MVC as valid for MVP. Some
people are even deriving sub-patterns from both to the point where even
MVP is now a loose concept. Also I can only say that the supposed .NET
implementation (if truely regarded as a partial MVC implementation)
could only be regarded as a minor implementation of the pattern and
that to truely leverage MVP you would still need to understand the
pattern and make steps towards a fuller implementation.

And it doesn't hurt the OP to learn and understand the pattern for the
cases when they are not writing in .NET.

Sep 6 '06 #9

P: n/a
I can see what your saying,

now my question to you is what do you mean by a "Fuller"
implementation. If the example on wikipedia and MVP say that .NET is
already implementing this pattern to some extent, how do I go a step
further to "Fully" implement MVP within ASP.NET.

I admit that I do not yet have a full understanding of MVP and am
trying to get my head around it. I need examples that describe the MVP
pattern to understand it fully.

I guess what I am asking for here is, now that you have given me a
better idea of the pattern in question, give some concrete examples, or
redirect my question to someone else if you cannot provide some good
examples. I would greatly appreciate it as would everyone else.

I can read "definitions" of this pattern till I'm blue in the face, but
without a GOOD example, I'm still poking around in the dark.

I would greatly appreciate it.

Thank you

Sean

Steven Nagy wrote:
If you look up MVC on wikipedia, it describes as the mvc pattern being
very prevalent in .NET because of the reasons I stated, although
wikipedia is open for discussion, so I suppose this is just an example.

I love wikipedia and treat its contents as the direct words of god. So
I can't dispute the claim it makes about implementation of MVC in .NET.

I can however point out that both the MVC and MVP patterns have
developed considerably in their own rights, and that you can't
necessarily use an argument that applies to MVC as valid for MVP. Some
people are even deriving sub-patterns from both to the point where even
MVP is now a loose concept. Also I can only say that the supposed .NET
implementation (if truely regarded as a partial MVC implementation)
could only be regarded as a minor implementation of the pattern and
that to truely leverage MVP you would still need to understand the
pattern and make steps towards a fuller implementation.

And it doesn't hurt the OP to learn and understand the pattern for the
cases when they are not writing in .NET.
Sep 7 '06 #10

P: n/a
Howdy,

Well first the "model" still needs to be implemented by the user in a
way that it has no immediate interaction with an UI. And the Wikipedia
statement mentions that explicitly.
Implementing the model is not as simple as just declaring, filling, and
using a dataset in the code behind (in my opinion). All that code would
be in a seperate class that when instantiated has all dependencies
injected.

Also, there are lots of .NET examples on the web.
This is a great article about how MVP needs a proper implementation:
http://www.codeproject.com/useritems...wPresenter.asp
It includes examples.

Cheers,
Steve

dkode wrote:
I can see what your saying,

now my question to you is what do you mean by a "Fuller"
implementation. If the example on wikipedia and MVP say that .NET is
already implementing this pattern to some extent, how do I go a step
further to "Fully" implement MVP within ASP.NET.

I admit that I do not yet have a full understanding of MVP and am
trying to get my head around it. I need examples that describe the MVP
pattern to understand it fully.

I guess what I am asking for here is, now that you have given me a
better idea of the pattern in question, give some concrete examples, or
redirect my question to someone else if you cannot provide some good
examples. I would greatly appreciate it as would everyone else.

I can read "definitions" of this pattern till I'm blue in the face, but
without a GOOD example, I'm still poking around in the dark.

I would greatly appreciate it.

Thank you

Sean

Steven Nagy wrote:
If you look up MVC on wikipedia, it describes as the mvc pattern being
very prevalent in .NET because of the reasons I stated, although
wikipedia is open for discussion, so I suppose this is just an example.
I love wikipedia and treat its contents as the direct words of god. So
I can't dispute the claim it makes about implementation of MVC in .NET.

I can however point out that both the MVC and MVP patterns have
developed considerably in their own rights, and that you can't
necessarily use an argument that applies to MVC as valid for MVP. Some
people are even deriving sub-patterns from both to the point where even
MVP is now a loose concept. Also I can only say that the supposed .NET
implementation (if truely regarded as a partial MVC implementation)
could only be regarded as a minor implementation of the pattern and
that to truely leverage MVP you would still need to understand the
pattern and make steps towards a fuller implementation.

And it doesn't hurt the OP to learn and understand the pattern for the
cases when they are not writing in .NET.
Sep 7 '06 #11

This discussion thread is closed

Replies have been disabled for this discussion.