标签: jaydata

在2011年为iOS/Android开发HTML5离线存储解决方案

问题:

我需要一个设备不可知(例如HTML5)解决方案,用于在手机或平板电脑类型设备(例如iOS/Android)上离线存储和查询250,000多行数据.我的想法是让人们在没有任何蜂窝数据连接的偏远地区工作,他们需要对这些数据运行查询并在离线时进行编辑.部分地,它将基于地理位置,因此如果他们所在的区域中有资产(使用GPS),那么它将显示这些资产并让它们被编辑.当他们返回办公室时,他们可以将数据同步回办公室服务器.

我从Web标准的角度来看这个问题的原因基本上是通过在HTML5中编写一次来节省金钱和时间,然后它可以跨多个平台工作,而不是在Objective C和Java中编写两次.此外,如果你写的是平台不可知的东西,那么你就不会被锁定,并且当每个人都搬到新的船上时,不要随船离开.我们有一个类似的应用程序为Windows Mobile 5编写,现在它没用,因为该平台已经死了.

设备上的脱机数据库需要是:

  • 快速(响应时间不超过2秒)
  • 可能执行连接并与能够查询数据库的其他表建立关系
  • 选择一定范围内的数据或标准,例如通过基于GPS读数的x&y坐标.

选项:

HTML5本地存储:

对于少量数据<5,000键/值,如果将其转换为JSON,甚至可以在其中存储数组/对象.

缺点:

  • 即使在高端机器上,超过10,000行,浏览器也会慢慢爬行.
  • 无法对数据执行复杂查询以提取所需数据,因为您必须遍历整个存储并手动搜索它.
  • 可存储的存储量限制

Web SQL数据库:

  • 符合要求.
  • 快速运行250,000行查询(1-2秒)
  • 可以创建复杂的查询,连接等
  • Safari,Android和Opera支持,因此适用于iOS和Android设备

缺点:

  • 截至2010年11月已弃用
  • 跨目录攻击的安全漏洞.这不是一个问题,因为我们不会在共享主机上

IndexedDB的:

键/值对象存储类似于本地存储,除了索引.

缺点:

  • 慢速运行200,000行(15-18秒)的查询
  • 无法运行复杂的查询
  • 无法与其他表连接
  • 主要手机或平板电脑设备不支持,例如iPad/Android
  • 标准不完整

这留下了实现已弃用的Web SQL方法的唯一选择,该方法可能仅工作一年左右.IndexedDB和本地存储目前无法使用.

我不确定Mozilla和Microsoft如何推荐Web SQL数据库标准,以及为什么W3C会让它发生.据称他们之间拥有77%的桌面浏览器市场.在先进的移动设备上,Mozilla和微软几乎没有影响力,因为Safari,Opera和Android拥有超过90%的市场份额.Mozilla和微软如何决定在最有可能使用离线存储的移动市场中应该使用哪种标准没有任何意义.

Mozilla评论中,为什么他们想要使用IndexedDB而不是主要关注"开发者美学",他们不喜欢在JavaScript中运行SQL的想法.我不是买它.

  1. 目前提出的标准较差,并且是一种非常基本的NoSQL实现,速度很慢,甚至不支持数据库中人们需要的高级功能.有许多样板代码来建立数据库并获取数据,但是他们声称人们会在其顶部编写一些很好的抽象库,它们将提供更高级的功能.截至2011年10月,他们无处可见.

  2. 他们已经弃用了现有的Web SQL标准,该标准实际上可以在主要的移动设备/平板电脑浏览器中实现.虽然主流移动浏览器无法提供"新"和"更好"的标准.

  3. 我们作为开发人员应该在未来3 - 5年内使用什么,这时IndexedDB规范可能会变得标准化,具有更多功能,在主要的移动/平板电脑浏览器中实现,还有一些很好的库可以让事情变得更容易?

W3C应该保持Web SQL数据库标准并行运行,并解决问题.它已经支持主要的移动平台,并且运行良好.事实上,Mozilla和微软作为拥有最多桌面浏览器份额的两家公司能够取消这一标准是非常可疑的,可能会被视为阻碍移动网络平台进展的尝试,直到他们能够赶上并提供针对iOS/Safari和Android的竞争解决方案.

总之,任何人都有我的问题的解决方案,适用于手机/平板电脑设备的iOS/Android.也许是一个很好的包装器API,它可以在后台使用多个数据库实现并具有查询功能,它允许您选择哪个数据库具有优先级.我已经看过像草坪椅这样的东西,但我很确定它只允许你默认使用本地存储,然后再回到其他存储.我想我宁愿使用Web SQL(默认情况下),然后使用较慢的选项.

对解决方案的任何帮助都非常感谢,谢谢!

javascript html5 web-sql indexeddb jaydata

74
推荐指数
3
解决办法
1万
查看次数

如何使用Html/Javascript消费OData服务?

我们的项目目前使用Silverlight来使用Odata服务.这使得生活变得非常简单,因为我们可以引用OData服务,从而为我们提供生成的服务引用/实体.

但是,我们是否应该转向Html(html5)进行讨论.如果我们做出这个改变,我想知道会发生什么.我们当然会利用像jQuery这样的框架.

  • 我主要关心的是如何通过JavaScript/jQuery使用相同的OData服务.
  • 我们如何反序列化/序列化从这个OData服务返回的实体?
  • 我们的数据合同是否应该是硬编码的(如果是这样,这对我们来说真的是不可接受的)?

谢谢!

javascript jquery odata jaydata breeze

19
推荐指数
2
解决办法
3万
查看次数

BreezeJS vs JayData用于ASP.NET MVC上的SPA开发

作为一名网络开发人员,我最近发现了与KnockoutJS合作的乐趣,但是当谈到使用服务器时,我几乎完全独立.我已经考虑过BreezeJSJayData的CRUD功能和批处理操作,但我仍然不确定哪一个最适合我.

我现在专注于使用EF的ASP.NET MVC开发,但我可能稍后转向其他平台,因此我不希望局限于一个特定的框架.在这方面,JayData提供了许多BreezeJS的提供商,如OData,webSQL,IndexedDB,localStore,Facebook和YQL,这几乎是压倒性的.BreezeJS确实支持OData,但仅限于消费.

但是,我可能没有想到的易用性,文档和其他关键功能如何?

感谢您帮助我在他们之间做出选择.

asp.net entity-framework knockout.js jaydata breeze

15
推荐指数
1
解决办法
7213
查看次数

不添加要插入移动数据库的第一个项目

我在Telerik Platform移动应用程序中使用JayData.JayData的优秀人才解决了我想要做的事情:

http://jsfiddle.net/JayData/zLV7L/

 var savefeedIfNotExists = function (feed) {
            //create jQuery promise
            console.log("create deferred for " + feed.FeedID)

            var def = new $.Deferred();

            //async thread 
            pnrDB.PNRFeeds.filter('it.FeedId == ' + feed.FeedID).count(function (count) {

                console.log("Add Feed - " + feed.FeedName);

                if (count == 0) {
                    var f = new PNRFeed({
                        FeedId: feed.FeedID,
                        FeedName: feed.FeedName,
                        ImageName: feed.ImageName,
                        FeedActive: feed.IsActive,
                        OrderNumber: parseInt(feed.OrderNumber) + 1
                    })

                    pnrDB.PNRFeeds.add(f);

                    console.log("Resolve for - " + feed.FeedName);
                    //promise.resolve() indicates that all async operations have finished
                    //we add the ADD/SKIP …
Run Code Online (Sandbox Code Playgroud)

javascript jquery telerik kendo-ui jaydata

10
推荐指数
1
解决办法
518
查看次数

javascript中oData端点的动态查询

好吧,标题有点拗口,但它说明了我在寻找什么.我有一个oData端点,我有兴趣看看是否有任何项目(最好是开源,可能基于datajs?)让我指向终点,它给了我一个网格,分页和我的最终用户能够进行动态查询(如,添加新的查询参数和刷新网格).

想看看它是否值得一试,看看是否有其他人在我自己走下去之前一直走在这条路上.

javascript odata datajs jaydata breeze

6
推荐指数
1
解决办法
2108
查看次数

在JayData中查询

我想查询一个简单的sqLite数据库并获取所有值并将其打印在一个<div>.数据库表只有人"名称"和相应的"联系号码"作为列.请解释这样做的逻辑.

jaydata

6
推荐指数
1
解决办法
742
查看次数

任何PHP框架都实现了ODATA协议?

是否有任何PHP框架实现odata协议,原生或扩展?

我需要在客户端上使用breezejs,我希望我不必自己实现odata的所有服务器端工作.

如果没有这样的东西,有没有替代breezejs?

jaydata不是另类,因为实际上它还需要服务器端实现odata协议,因此它们太相似了.

休息服务(如angularjs中的restangular)也不是替代品(至少对我来说不是).它们只提供breezejs或jaydata的一部分服务.例如,他们不提供缓存数据,更改跟踪或复杂的丰富查询选项.

有任何想法吗?

谢谢

php odata laravel jaydata breeze

6
推荐指数
1
解决办法
7144
查看次数

IndexedDb - 检查表是否存在并包含数据

当我的应用程序第一次运行时使用 IndexedDB,我用一些数据填充它,我想确保在创建数据库和表时它们还不存在。

我可以在 JavaScript 中查询表的长度以查看它是否包含数据吗?

html javascript indexeddb jaydata

5
推荐指数
2
解决办法
1万
查看次数

Breeze.js键入实体

有没有办法使用Breeze创建类型化实体,就像JaySvcUtil为JayData工作一样?这是否包括Typescript支持 - 在Breeze框架中是否还有一般的Typescript支持?

jaydata typescript breeze

5
推荐指数
2
解决办法
4058
查看次数

Jaydata与.net Odata Server

我正在使用jaydata作为客户端和.net odata作为服务器,但是当我请求服务器时,它给出了501未实现的错误,当我搜索它时,问题是CORS [Cross Origion Resouse Sharing]有没有办法启用CORS在odata服务器或IIS ???

我的代码很简单,只需创建带有服务的上下文,并获取一个解决方案就是在web.config中放置specail config部分

 <httpProtocol>
     <customHeaders>
      <add name="Access-Control-Allow-Origin" value="*" />
    </customHeaders>
 </httpProtocol>
Run Code Online (Sandbox Code Playgroud)

但这并没有解决问题

我的Chrome浏览器在此过程中

记住我使用odata [RESTFUL]服务和jaydata作为客户端

odata cors jaydata

5
推荐指数
1
解决办法
576
查看次数