Dedicated Server In Seperate Project

We are making a multiplayer game and are concerned about dedicated server performance.

What would the best client-server setup be? It is important that the server handle most or all gameplay interactions to minimize hackability.

Would it be worth it to have the ‘Client’ and ‘Server’ be in separate projects so that each has highest performance? Particularly the server rendering as little as possible?
How do you sync network view ids, RPCs, and other information between different unity projects?

We realize that there are many different ways to do networking and just want to get some advice on what people think are the best methods.

The way we setup our servers for Fields of War, we had the server and the client in different projects, both for performance and security reasons (hacking, cheating, sensitive information etc.)

We had a problem with synchronizing NetworkViewID initially, because if you have a NetworkView in the scene, it will get a unique SceneID.
We ended up not having any NetworkView component that does state snchronization pre-made in the scene, and instead we instantiate all of them at run-time.
The server tells the clients what to instantiate, and which ViewID it should have, it is also the only place where any ‘real’ data values are kept, such as weapons damage, players health etc.

This way we have maximum authority and security on the server side, and much more focused and small game/server builds.
For instance, the navigation mesh exists only on the server, as clients do not perform any AI calculations while no actual mesh data is kept on the server side, only collision data.

TL;DR - I’d say it’s worth it to separate development of the server and client, especially when security and performance matter. It’s not that big a headache.

Thought this was a solution to my problem, but then i realized this answer is not applicable to UNET, but to the legacy network solution in Unity,