Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 7 of 7
  1. #1
    New to the CF scene
    Join Date
    Jan 2017
    Posts
    3
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Solution Architecture Design

    I'm involved in a project that has some strange design proposals. I'm curious about other peoples thoughts and how others have approached things.

    Assumptions are, we are using MVC, UNITY DI, Entity Framework and when specified SOAP WCF.

    Typically I've seen what I think is a standard approach:

    Projects
    DataLayer, DataInterface, BusinessLayer, BusinessInterface, Models (Persistence), ViewModels and an MVC Project.

    MVC uses UNITY to say what interfaces use what implementation on startup and the controller constructors have the interface injected and set to a private readonly variable. Everything is great. However, the projects get compiled into DLLs which are referenced by the Web project which is hosted on the same server.


    Next idea:

    You might want to separate the logic processing from the web site, so instead create a WCF Project that uses UNITY and specifies what interfaces and implementations to use. Then your MVC project can have a service reference to WCF project. Then if you wanted you can place the WCF service on different machines.


    Proposed idea:

    Wrap the datalayer in WCF and the businesslayer in WCF. So MVC has a reference and makes calls to the BusinessLayerWCF. The BusinessLayer wrapped in the BusinessLayerWCF gets its data by having a reference and makings calls to the DataLaterWCF. I can not see any benefit for this.


    In addition it's being proposed to use Entity Framework (which I like) but the models are being split between databases. Eg, Customer data in a database, Bookings in another etc etc Potentially 2 dozen or more. To me this almost defeats one of the points of an ORM, being able to navigate between linked objects. Being split between databases then looses FKs and referential integrity between tables. It seems like a major ball ache! I understand you might want to separate load between databases but I can't see this being a favoured form of practice either.




    So, either I don't have a firm grasp of the technologies involved or / and I have genuine concern over the approach being suggested.

    Thoughts?

    (Forgive spelling and grammar, I'm rushing)

  2. #2
    Senior Coder deathshadow's Avatar
    Join Date
    Feb 2016
    Location
    Keene, NH
    Posts
    2,310
    Thanks
    2
    Thanked 334 Times in 324 Posts
    My biggest concern would be all the terms being thrown around like they were marketspeak buzzwords -- without ANY mention of what it is all this garbage (no offense) is supposed to actually DO! What's the CONTENT? What are the USERS going to be doing IN IT? How is all that scripting going to gracefully degrade for accessibility? Do you even CARE about accessibility (oh wait, WCF and .NET, of course you don't)

    But then I'm in a specific minority that views MVC as being a bad approach for web architecture, since websites are NOT event driven between the ACTUAL view (html/css) and the controller side (pretty much everything that runs on the server). It's a flawed approach unless you're actually making native crApplets, which sadly often ties you to ONE platform both server and client-side.

    I'd have to know WHAT it is all this is even supposed to do and WHY, before I could really weigh in; you just rambled off a bunch of technologies that for MOST projects are nothing more than code bloat, or a level of developer ineptitude stemming from the people working on it not knowing enough about the underlying language to do anything without the training wheels.

    With much of it being Microsoft technologies and typically IIS only? Sets off my BS alarm since hosting on Windows is like using *nix as a desktop. Just because it can be done doesn't make it a great idea. In my experience the moment someone starts talking about using .NET for building web related anything, RUN!

    That and I'm not a fan of having anything I deploy online tied to a specific OS platform.

    Though -- is this a web applet? Hybrid? Native app?

    Again though, you prattled off a bunch of tech like they were "proactive paradigms" without actually saying what the goal is! THAT'S WORRYING! It treads into the same territory as the sleazy marketers who have their alleged "designers" (aka artists under the DELUSION they know what design is) start screwing around in Photoshop before they even know what the content of the site is. I've got the nasty feeling your development process/team has that horse straining to push the cart. A bunch of dev's that all have their favorite pet technologies slapping them together without a clear goal or overview.

    What is all this supposed to ACTUALLY DO?!? You haven't said what it does, but it sounds like you're already throwing 50 times the code needed to do... whatever it is... at the "problem".
    Last edited by deathshadow; 01-12-2017 at 12:09 PM.
    I would rather have questions that can't be answered, than answers that can't be questioned.
    http://www.cutcodedown.com

  3. #3
    New to the CF scene
    Join Date
    Jan 2017
    Posts
    3
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Thanks for replying.

    The requirement ultimately is to have a web based administration system built with Enterprise Architecture design.

    I'm just a simple Microsoft stack developer that over the years has learnt the basic techniques of layering and dependency injection. So personally I do favour MVC. My concern is from the WCF Services down.

    We have someone designing a system, that waffles on with analogies, throws around acronyms and buzzwords and talks about scale-ability etc etc. Worryingly for me I've seen no evidence he is competent at development or has actual experience building such a system.

    I'd guess building a web system using ASP.NET (MVC) that there would be a general design pattern that the majority use. I wondered how the proposed approach in the question differs from other peoples norm.

  4. #4
    Senior Coder deathshadow's Avatar
    Join Date
    Feb 2016
    Location
    Keene, NH
    Posts
    2,310
    Thanks
    2
    Thanked 334 Times in 324 Posts
    Still the question remains, administering WHAT?

    I'm from the school of development where the software architecture is built to match the task -- "design patterns" and their ilk are handy tools, but no one pattern or practice will meet the needs of all data, users, interactions, and so forth. To me, a good developer needs to be flexible enough to choose the tool that fits the task -- the problem is a LOT of developers learn things like MVC, or objects, or WCF, and automatically assume it's the tool for every job. It's like when you have a hammer, suddenly every problem looks like a nail.

    That's why "content first" web development appealed to me early on as it fit with the development mindset I'd been using for the two decades before HTML was a twinkle in TBL's eye. You figure out WHAT you are doing, you take your data or a reasonable facsimile of future data, you chart out how users are going to interact with that data, then you progressively enhance the data with the functionality using whatever tool best suits the job. These days it seems so many developers dive for a slew of frameworks and tools before they even have a clear picture what's actually going to be done, what's actually even needed to do it, and instead just uses whatever their current pet favorite it is, no matter how big a sledge they need to cram that square peg into the round hole.

    It also plays to one of the core concepts I had drilled into my head (by a Catholic nun of all people) from very early on in learning to program -- The less code you use, the less there is to break. -- a LOT of the things you described while all well and good on paper or as a concept in a classroom environment, more often than not just result in fat, bloated, slow, unreliable, unstable, and ultimately annoying software that is agonizing to maintain and lacks -- to use that term you mentioned -- scalability.

    But you're using .NET and using the full Microsoft development stack, so a LOT of the concepts I learned as good practice are pretty much thrown out the window in favor of "how bloated a mess can we make this by just layering endless off the shelf garbage atop each-other". Sorry if that sounds a little harsh, but really when it comes to any practical software development that's often the case given the technologies you've mentioned.

    To me, even just saying "web based administration system built with Enterprise Architecture design" reeks of buzzwords because it still doesn't say WHAT is actually to be done. PARTICULARLY the word "Enterprise" that thanks to overuse (Much like how people abused "web 2.0" for something it never meant) has for all intents and purposes become the same as saying it is going to be a totally proactive paradigm. WHAT is being administered? How are you administering it? What's the data? What are users going to do with the data? How many users will be accessing the data at once? Is this a web app? Is it a native app? Is the data local, shared, or hosted? Is this something users are going to need to install a client or native software to even use?

    You may simply have not felt the need to say it, or you're hiding it for a good reason like having an original idea, but without those details it sounds like you're skipping right past the actually important parts of development into screwing around with a bunch of unrelated off the shelf bloat that any competent coder probably wouldn't need -- or use -- in the first place.

    Though to be fair, I'm very old-school on things like this; goes with having started out programming RCA 1802 machine language in the '70's. When you only have 128 bytes of RAM and no save capability, you end up with a somewhat different perspective on how software should be written than the "Visual Basic Generation"... The laugh being the VB generation and now the .NET generation seem to be bringing back a LOT of the bad practices that made the mainframe development industry seem like it was run by sleazy scam artists the moment microcomputers took off. If I didn't know any better, I'd swear today's software developers are charging by the K-LoC again.
    I would rather have questions that can't be answered, than answers that can't be questioned.
    http://www.cutcodedown.com

  5. #5
    Administrator VIPStephan's Avatar
    Join Date
    Jan 2006
    Location
    Halle (Saale), Germany
    Posts
    10,822
    Thanks
    6
    Thanked 1,292 Times in 1,262 Posts
    Quote Originally Posted by Voodovo View Post
    The requirement ultimately is to have a web based administration system built with Enterprise Architecture design.
    Yeah, well, that sounded to me like the prototypical instance of the X Y problem. And I still haven’t understood anything from your explanation of the requirement. I’m way younger than deathshadow and not a software developer but I do agree with his argumentation and approach to creating software of any kind (and a website or web based application can be regarded as that).

    First think about the data you have and/or you are going to process, then think about the architecture to build around that in order to achieve the tasks at hand most effectively and with as little code as necessary. So, what data are you going to process and what is the expected outcome of that processing?

  6. #6
    New to the CF scene
    Join Date
    Jan 2017
    Posts
    3
    Thanks
    0
    Thanked 0 Times in 0 Posts
    You're correct, I am being purposefully vague about what is being maintained because it's related to the company I'm working for.

    I'm a little surprised that a post in ASP.NET discussion has caught the attention of individuals who seem to have a dislike for it. ;-)

    I appreciate your feedback.

  7. #7
    Senior Coder deathshadow's Avatar
    Join Date
    Feb 2016
    Location
    Keene, NH
    Posts
    2,310
    Thanks
    2
    Thanked 334 Times in 324 Posts
    Quote Originally Posted by Voodovo View Post
    I'm a little surprised that a post in ASP.NET discussion has caught the attention of individuals who seem to have a dislike for it. ;-)
    Many of us just go to whatever shows up in the "new threads" section... which on vBull doesn't really even tell you what forum section a thread is in -- so it's easy to not notice particularly when the question is so... vague.

    But I understand the 'can't really discuss the real details' part when it comes to work. Sadly, those details are precisely what should be hammered out in great detail BEFORE technologies are chosen. It gets too easy to say "we'll use this, this, this and this!" without asking "do we need this, this, this, and this?!?"

    I've seen far too many projects sunk under the weight of that type of decision making over the years.
    I would rather have questions that can't be answered, than answers that can't be questioned.
    http://www.cutcodedown.com


 

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •