Click here to Skip to main content
16,015,594 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
We are developing a new .NET system for the business. The system will manage several MVC applications for the users and several services to manage the back end. It will look like this

Front End:
Bidding
Costing
Shipping
To expand in the future.

Back End:
Bid API
Cost API
Shipping API
other services to manage specific tasks in the solution.

Right now we have a single solution for the entire system. I am thinking as this grows, it will become too large to manage efficiently. As part of the evaluation of the current solution, we are considering partitioned solutions. I have not had any luck, outside of MSDN, to see how it works. The MSDN site has deprecated the document.

Has anyone out there set up a large system of applications using partitioned solutions?

What experience has anyone had creating an entire business system using a single .NET solution?

What is the best way to manage the code for a system of applications?
Posted
Comments
Sergey Alexandrovich Kryukov 5-Mar-15 18:33pm    
It's not quite clear what do you mean by "partitioned solution" in this case, but I cannot see how decomposition of the code could be a big problem. This can be a problem of application architecture, but not of some technological or "scientific" innovations. There are many ways to decompose big systems, way too many. More importantly, you can keep it in mind and wisely post-pone until you see your growth trends and better understand the ways of decomposition. Then you will be able to make better and more flexible solutions. "In a single solution" is not the only approach. What experience I have? Roughly speaking, every experience. If should be less done by experience, more by using the brain.
—SA

1 solution

Please see my comment to the question.

I cannot clearly see what do you mean by the document in "MSDN site has deprecated the document". Maybe, this one will work for you:
https://msdn.microsoft.com/en-us/library/ee817674.aspx[^].

But frankly, you don't really need such document. (Please see my comment again, last clause before the signature where I explain what's really critically needed :-).) You only need to understand how MSBuild work and have understanding of project growth, decision-making, refactoring and complexity control. As to MSBuild, you can learn it all:
https://msdn.microsoft.com/en-us/library/dd637714.aspx[^],
https://msdn.microsoft.com/en-us/library/0k6kkbsd.aspx[^].

If you analyze it all, you will see that you can choose to develop your own project types, which can really be needed, to develop and support different build tools (in particular, make sure they are build before you use them, all build technologies are about it: dependencies, time stamps, declarative definitions used by build and automatically determined order of operations). You can have master projects which can have projects as their members, but, alternatively, other solutions, which can be useful for having separately developed layers.

I must note that many incorrectly evaluate the roles and possibilities related to solution. First of all, you need to have some one-click build of everything, iterative and complete re-build. Also, you need a mechanism for version increments, deployment, and more. It's important not to mix it all together. For this purposes, a solution can work, but it could also be some master project. It's just important to have one single batch for all components of the project for each of such operations.

But this is not the only role of solution. The solution could also be a developer's entity, which is a point of view at the set of project (which should be a complete sub-set, in terms of ability to build it all, not depending on missing components.) You can have separate solutions just to allow some developer to work at the part of the product, not seeing other projects. On some other stage of development, this solution can be set aside and other solution created. So, you may want to have two different classes of solutions: partial solutions used for development, and the solutions used for total build. You will decide if it should be only one solution, or a set of solutions united by some master project. Your goal is to make sure you have one global product build as on-click artifact.

And finally, you need to develop most important part of the strategy: the ability to post-pone the decision. Good architecture is not the one which is based only good correct decisions. Really good architecture is the one where you can post-pone the decisions and fix your bad decision at lower costs. Don't decide how you structure your growing product for better manageability now. Don' go this way. Instead, sketch the strategy which allows you to make those decisions later, when you can better see the ways the product and your projects grow. Isn't that logical?

—SA
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900