The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.
For the last couple of years I have simply not needed to think about the architecture of a project, I have worked on one core codebase that has been pretty much set up. I've created smaller projects, mostly internal stuff and kept them to a decent standard but now I want to start thinking about the architecture, frameworks and design patterns.
I have been looking into Entity Framework Code First, using a tiered architecture (repository pattern) and throwing stuff like membership, enterprise libary (for logging and security). Code first simply because I want to try it, EF because it is something I want to be experienced in.
So my questions are how do you choose how you architect a project, do you use the same design patterns, principles and frameworks if the scope allows? Do you like to stick to a certain architecture and use the same frameworks if again the project scope allows?
Do you like to stick to a certain architecture and use the same frameworks
I use the same architecture, patterns, and frameworks just by virtue of the fact that all of my boilerplate code (pre-built interfaces, base classes, extension methods, etc...) are already built for a specific toolset. If I change from NHibernate to EF, or from Unity to Ninject (as a couple of examples) I'd have to re-write a lot of that. Not that I can't do that - my common library isn't *that* big - I would just need some rather compelling improvements to justify it.
And since I already have a lot of that boilerplate stuff written, all of my projects end up having the same architecture. Even my little one-off apps use the repository pattern because I only have to write a handful of lines of code and a mapping XML file and I'm ready to persist to a DB (assuming my one-off app has to persist to a DB).
- Type of Project: Highly Scalable, Highly Available, Complex, Simple, Multiple Devices, Multiple Platforms, Small, In-House, Device Specific
- Team Size: Small but Good, Small but OK, Large but Good, Large but OK
- Timeline: Enough, Not-Enough, Insane, Side Project
You shouldn't follow the same software design everywhere. You can't keep creating software with 3-tier with repository patterns, sometimes it's overkill, sometimes it's time consuming. Sometimes no one from the team wants to learn new technology i.e. Code First. So it depends...
This kind of framework exists already, done properly, for example in DevExpress XAF (eXpressApp Framework).
By done properly, I mean that it has it all, you only concentrate on your business:
1. You design the business model, UML style: All types of relations are supported: 1-1, 1-n, n-m, parent-child, etc.
2. You click the “Compile” button.
3. You get:
- the WinForms business application
- the Web application,
built automatically, designed like you would have done it (maybe even better...), totally configurable, even at runtime.
- The database is generated (or updated) for you, with proper tables, fields, indexes, constraints, etc., be it MSSQL, Oracle, you name it (for 12 different RDBMs).
4. As a bonus, you get: User, Roles, Authorization (per class, record or even at the field level), Active Directory login, Auditing, dynamic layout of lists and detail layouts, localization (even at runtime), reporting, etc... the list goes on: you name it, they have it, top notch support included.
Most of the features are runtime configurable. For example, you can create reports at runtime, in a full fledged award winning visual designer.
It is compatible with Entity Framework, although it proposes the DevExpress XPO by default, with which I believe you can better fine tune specific use cases.
The library comes at around 2200 $ per developer. When I demonstrated it to a colleague, he thought that it could cost 100.000 of $, no joke.
Note that a XAF project is nothing other than a standard .NET project, you are not bound to any hypothetic limits that XAF would impose you.
Download the full XAF framework (one month trial), including their award winning controls DevExpress[^]
Disclaimer: I am not a DevExpress employee. I use their control set daily in my daytime job as an employee of a small software shop and as a hobbyist at night. The DevExpress tools, including XAF, help me every day to solve my business cases.
Today when I think about architecture I think that a good architecture should be able to support a reliable system at least 5 years. I think mostly about abstraction, identify abstract points in the system and build a structure to allow a more easily maintence and building, without close the system to extensions, your structure should have points of extension.
Those who fail to learn history are doomed to repeat it. --- George Santayana (December 16, 1863 – September 26, 1952)
Those who fail to clear history are doomed to explain it. --- OriginalGriff (February 24, 1959 – ∞)
Last Visit: 10-Aug-20 9:38 Last Update: 10-Aug-20 9:38