Please stick with me as this question may be long! We're currently in the process of architecting and prototyping a web based app where I work. It's a big app with a lot of intricacies and complexities and a lot of data.
Front-end technology wise, we are going to be building a SPA using Durandal, Knockout and TypeScript (to write all our JavaScript and jQuery code).
The back-end has been very carefully thought out and architected. Simplified, we will have a suite of application services (using nHibernate, AutoFac and others) that will be using a carefully designed domain model. A WebAPI will then use the methods in the application services to present the data back to the front end.
An obvious thought when building a SPA with a lot of DB interaction is to consider Breeze. There are a lot of well documented reasons why Breeze is brilliant. The problem is, we're not sure it fits in our architecture. None of us have used Breeze beyond some simple prototypes so if anyone can help answer the following questions, we would be very grateful!
1 - Are we correct in assuming that using Breeze by default would bypass our business logic and go directly to nHibernate or the DB? If this assumption is correct, are there ways to bypass it? Any advice / links? Our thought was that we would have to write an adapter for Breeze to route through to our business logic and provide the metadata back to Breeze. This then presents other issues like having partially and fully hydrated models in different parts of the system, projecting foreign keys. This is quite a contentious issue for us!
2 - One of the many reasons for using TypeScript is to give us static typed objects with intellisense. Are we correct in assuming if we used Breeze, we wouldn't have this out of the box?
3 - We don't want any caching at all. Is it possible to completely switch off this part of Breeze?
4 - If we're not using the querying feature (we're definitely not, we have a plan for searching that means using the Breeze querying feature alongside it is not an option), we're not using the caching feature and we can put things in place (such as a T4 template to automatically generate the TypeScript objects from DTO's) to help with the speed of development and reduction of code that Breeze can allow, are we negating the point of using Breeze?
I have done lots of searching, but all I can find is why Breeze should be used. While I admit it's fantastic, from my understanding so far, I'm just not sure it fits our app. Any advice or recommended reading will be greatly appreciated. With Breeze being fairly new on the scene, I'm struggling to find much information!