Click here to Skip to main content
15,887,214 members
Home / Discussions / C#
   

C#

 
AnswerRe: C# Program Structure and File Type Advice Pin
Orjan Westin17-Apr-13 2:34
professionalOrjan Westin17-Apr-13 2:34 
GeneralRe: C# Program Structure and File Type Advice Pin
Jacob Barton17-Apr-13 3:06
Jacob Barton17-Apr-13 3:06 
AnswerRe: C# Program Structure and File Type Advice Pin
Jasmine250117-Apr-13 5:58
Jasmine250117-Apr-13 5:58 
AnswerRe: C# Program Structure and File Type Advice Pin
Gerry Schmitz17-Apr-13 6:10
mveGerry Schmitz17-Apr-13 6:10 
AnswerRe: C# Program Structure and File Type Advice Pin
jschell17-Apr-13 9:16
jschell17-Apr-13 9:16 
AnswerRe: C# Program Structure and File Type Advice Pin
Jacob Barton17-Apr-13 17:03
Jacob Barton17-Apr-13 17:03 
GeneralRe: C# Program Structure and File Type Advice Pin
Orjan Westin17-Apr-13 23:43
professionalOrjan Westin17-Apr-13 23:43 
GeneralRe: C# Program Structure and File Type Advice Pin
Jasmine250118-Apr-13 6:31
Jasmine250118-Apr-13 6:31 
You'll want to use OpenGL - it's a standard in the industry, and using OpenGL will make your code more portable. Also, when building applications of this size, it is important to work from a priority list - and I mean actually write it down. Figure out what is most important, and put your effort there, and use frameworks and RAD tools to do the rest.

Since the interface isn't the important thing here, I would suggest making the interface very simple and using WinForms - it isn't worth it to you to go and learn WPF for this project because the visual interface part will probably be the easiest part of the app, and it's the least critical part too. The calculating of your results is where you want to focus your efforts. You have a large set of objects to design, and you need to focus on that. WinForms will let you design a good interface without putting a lot of effort into it.

On Data Access Layers - this is a design pattern, though there's many names for it. You will almost always create a DAL of some sort. For this application, I personally think you should go with some kind of Object-Relational mapping (another design pattern), such as the Entity Framework. With EF, you can do things two ways, database first or code first. So, you can design all your objects in C# code, then the Entity Framework can build a database for you, to store those objects. You can go the other way too - design a database and the EF can write C# code for the objects defined by the database. As you can see, this lets you focus on the important things about your data, instead of the "trivial" wiring between your app and the database. Object-Relational mapping is a known thing - let the machines do it.

Almost every modern application has a database of some kind, and for many years it's always been a relational database like SQL Server or Oracle. However, for "big data" and repetitive but small calculations, it may be better for you to use a "No SQL" type of database such as Hadoop - but I personally don't think your data will be "big" enough to warrant that. Either way, if you build your data layer as a separate module, you can swap it out later if you need to. That is the primary purpose of a separate data layer - to isolate the rest of the application from the mechanics of dealing with the database server. So basically, to answer your question, YES, you always need a data layer. Whether it will be implemented by a SQL server, No Sql server, or file system is unknown at the moment, but there will be a persistence layer of some kind for your data so you can save and load. It is important to think of it as a separate layer right from the start.

I'll let you do the Googling (EF, ORM, No SQL, etc), but are you starting to understand why apps like this are typically built by teams?

Oh also, please "reply" to our messages - I would have missed that your discussion was continuing because if you don't "reply" to us, we don't get emails. I came back here because I found your question interesting and well-stated, and that's rare.
GeneralRe: C# Program Structure and File Type Advice Pin
Gerry Schmitz18-Apr-13 11:15
mveGerry Schmitz18-Apr-13 11:15 
AnswerRe: C# Program Structure and File Type Advice Pin
GuyThiebaut18-Apr-13 0:27
professionalGuyThiebaut18-Apr-13 0:27 
AnswerRe: C# Program Structure and File Type Advice Pin
Clifford Nelson18-Apr-13 5:18
Clifford Nelson18-Apr-13 5:18 
AnswerRe: C# Program Structure and File Type Advice Pin
Jacob Barton19-Apr-13 2:57
Jacob Barton19-Apr-13 2:57 
QuestionThe SetAttribute does not set attribute Pin
Meysam Toluie16-Apr-13 20:22
Meysam Toluie16-Apr-13 20:22 
AnswerRe: The SetAttribute does not set attribute Pin
Jasmine250117-Apr-13 5:45
Jasmine250117-Apr-13 5:45 
GeneralRe: The SetAttribute does not set attribute Pin
Meysam Toluie18-Apr-13 1:30
Meysam Toluie18-Apr-13 1:30 
GeneralRe: The SetAttribute does not set attribute Pin
Jasmine250118-Apr-13 6:04
Jasmine250118-Apr-13 6:04 
GeneralRe: The SetAttribute does not set attribute Pin
Meysam Toluie20-Apr-13 3:02
Meysam Toluie20-Apr-13 3:02 
GeneralRe: The SetAttribute does not set attribute Pin
Jasmine250122-Apr-13 5:24
Jasmine250122-Apr-13 5:24 
AnswerRe: The SetAttribute does not set attribute Pin
OriginalGriff17-Apr-13 8:41
mveOriginalGriff17-Apr-13 8:41 
GeneralRe: The SetAttribute does not set attribute Pin
Meysam Toluie17-Apr-13 19:35
Meysam Toluie17-Apr-13 19:35 
GeneralRe: The SetAttribute does not set attribute Pin
dusty_dex17-Apr-13 23:46
dusty_dex17-Apr-13 23:46 
QuestionWhich Constructor is Better? Pin
Jasmine250116-Apr-13 12:15
Jasmine250116-Apr-13 12:15 
AnswerRe: Which Constructor is Better? Pin
Matt T Heffron16-Apr-13 12:47
professionalMatt T Heffron16-Apr-13 12:47 
GeneralRe: Which Constructor is Better? Pin
Jasmine250116-Apr-13 14:34
Jasmine250116-Apr-13 14:34 
GeneralRe: Which Constructor is Better? Pin
PIEBALDconsult16-Apr-13 15:01
mvePIEBALDconsult16-Apr-13 15:01 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.