با قدرت گرفتن جاوا اسکریپت، نیازهایی مانند کوئری گرفتن در سمت کلاینت، کش کردن دادهها در سمت کلاینت، ردیابی تغییرات، اعتبارسنجی مدلها، ذخیره کردن گروهی از عملیاتها (Save Batch)، تعامل با Web Api .Net یا Node Js، قابلیت کار کردن با No Sql و... افزایش یافته است و تمام این کارها توسط breeze امکان پذیر میباشد. breeze با هر سرویس دهندهای که بتواند از طریق http و با فرمت json عملیات خود را انجام دهد، میتواند ارتباط برقرار کند.
breeze مطابق با استاندارد ECMAScript 5 نوشته شدهاست؛ از اینرو بر روی اکثر مرورگرهای جدید به خوبی اجرا میشود.
در این قسمت به برخی از توانایی های 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");
2- کوئریهای breeze با
promises عملیات خود را انجام میدهند:
var promise = manager.executeQuery(query)
.then(querySucceeded)
.fail(queryFailed);
* breeze مانند entity framework قابلیت ردیابی تغییرات را دارا میباشد:
if (manager.hasChanges()) {
manager.saveChanges().then(saveSucceeded).fail(saveFailed);
}
// listen for any change to a customer
customer.entityAspect.propertyChanged.subscribe(somethingHappened);
3- انقیاد دادهها با Angular /
Knockout /
Backbone را دارا میباشد:
<!-- 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; });
4- درbreeze امکان کوئری گرفتن به همراه entityهای مرتبط وجود دارد:
/* 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);
5- در breeze کوئریها میتوانند از سرور و یا کش درخواست شوند:
// execute query asynchronously on the server
manager.executeQuery(query).then(querySuccess).fail(queryFail);
// execute query synchronously on local cache
var customers = manager.executeQueryLocally(query)