با قدرت گرفتن جاوا اسکریپت، نیازهایی مانند کوئری گرفتن در سمت کلاینت، کش کردن دادهها در سمت کلاینت، ردیابی تغییرات، اعتبارسنجی مدلها، ذخیره کردن گروهی از عملیاتها (Save Batch)، تعامل با Web Api .Net یا Node Js، قابلیت کار کردن با No Sql و... افزایش یافته است و تمام این کارها توسط breeze امکان پذیر میباشد. breeze با هر سرویس دهندهای که بتواند از طریق http و با فرمت json عملیات خود را انجام دهد، میتواند ارتباط برقرار کند.
breeze مطابق با استاندارد ECMAScript 5 نوشته شدهاست؛ از اینرو بر روی اکثر مرورگرهای جدید به خوبی اجرا میشود.
برای مرورگرهای قدیمی میتوان کتابخانه es5-shim.js and es5-sham.jsرا قبل از تگ اسکریپت breeze js قرار داد.
در این قسمت به برخی از توانایی های breeze اشاره کوتاهی میکنیم و در مقالات بعدی پیاده سازی آنرا در قالب angular js /Web Api .net خواهیم داشت:
1- کوئریهای breeze اکثر امکانات linq را دارا میباشد؛ مانند شرطهای ساده، شرطهای پیچیده، Sorting ،Paging،Projections و Filterکردن برخی از پراپرتیها که بسیار مشابه linq میباشد:
var query = breeze.EntityQuery .from("Customers") .where("CompanyName", "startsWith", "A") .orderBy("CompanyName");
var promise = manager.executeQuery(query) .then(querySucceeded) .fail(queryFailed);
if (manager.hasChanges()) { manager.saveChanges().then(saveSucceeded).fail(saveFailed); } // listen for any change to a customer customer.entityAspect.propertyChanged.subscribe(somethingHappened);
<!-- Angular template --><li data-ng-repeat="emp in employees"><label>{{emp.FirstName}}</label><label>{{emp.LastName}}</label></li> // bound to employees from query manager.executeQuery(breeze.EntityQuery.from("Employees")) .then(function(data) { $scope.employees = data.results; });
/* Query with related entities using expand */ // query for orders of customers whose name begins "Alfreds" // include their customers & child details & their detail products breeze.EntityQuery.from("Orders") .where("Customer.CompanyName", "startsWith", "Alfreds") .expand("Customer, OrderDetails.Product") .using(manager) .execute().then(querySucceeded).fail(queryFailed);
// execute query asynchronously on the server manager.executeQuery(query).then(querySuccess).fail(queryFail); // execute query synchronously on local cache var customers = manager.executeQueryLocally(query)