Steps to create software design and architectures

First things first: MAKE SURE YOU HAVE ALL REQUIREMENTS FOR WHAT YOU ARE DESIGNING FIRST.

Designing without a clear scope of what you are going to do will lead to over engineered design, paralysis and sleeplessness.

If you are designing from scratch, start with requirements for a small prototype, don’t try to design a giant system from the start.

If you already have a working prototype from the previous iteration, keep refining the design, add on for new iteration. Keep iterating until a big system is completed. Again don’t design for a complex system.

Now that all previous points are addressed, I’ve found that it’s great to follow Newton’s approach to solving problems: break them into smaller problems and tackle them one by one.
break big problems to smaller ones, top to bottom, and tackle each one problems at a time, use multiple UML diagram for each problem.

Once you have a list of diagrams and see the interactions between classes, try to reduce couplings where possible, so that the number of dependencies is as small as possible.

If designing for extensibility, create interfaces to separate implementations so components can be swapped out. Be careful not to over design if you don’t need to, it’s better to design to meet requirements first, then add extensibility later on. Let the design evolve instead of trying to over design for future.

Keep iterating so the design evolves to meet all requirements.

Browsing functionality in a referenced binary

Keyword: object browser in Visual Studio

If you are working on a project with some binaries developed by the company previously and you don’t have access to the source code.

Aside from asking your colleague, use Visual Studio’s Object Explorer to browse the API in referenced binaries without the need of the source code.

Cannot bind multiple parameters in Web Api, cannot bind Json parameter

Simple, Web Api 1 doesn’t support multiple parameters.

Also, make sure the route config are correct so that the controller and action can be reached.

To bind Json parameter, use Content-Type: application/json in the request header, make sure the json object is the root object and the model to load from the server user properties instead of fields.

Cannot connect to SQL DB from IIS, connection works from IISExpress

Stackoverflow question/answer: http://stackoverflow.com/questions/20723623/application-cannot-open-sql-connection-when-on-iis

You can either give permission to the app pool from within SQL Server.

Or create a SQL Server user/pass, update the connection string to use User/Pass instead of Integrated Security

Setting up SSL with IIS for development and testing of ASP.NET applications

Note: this will potentially solve the issue when Visual Studio shows the following error upon trying to debug: “Unable to debug the web server… An error occurred on a send.”

The problem can be solved by re-creating and adding a SSL cert to the port 443 binding of the default web application.

 

Follow the following steps:

From IIS, under the local server, open “Server Certificates”. Use an existing cert or create a self-signed cert, give it a name.

Select the Web application(not a virtual directory) that you want to use. Edit the bindings, add a binding for https port 443 and select the certificate you created previously and then save.

Note: when running applications off an existing web application in IIS, make sure to create virtual directories for each app if they are not available, you can do so by going to the project’s properties, under “Using local IIS server”, next to the URL of the app click the button “Create virtual directory”