我花了很多时间尝试为以下挑战找到一个优雅的解决方案.我一直无法找到解决问题的解决方案.
我有一个简单的View,ViewModel和Model设置.为了便于解释,我会保持简单.
Model有一个名为TitleString类型的属性.Model是在DataContext的View.View有TextBlock这就是数据绑定到Title的模型.ViewModel有一个名为方法Save(),将保存Model到ServerServer可推到所做的更改Model到现在为止还挺好.现在我需要进行两项调整才能使模型与a保持同步Server.服务器的类型并不重要.只要知道我需要调用Save()才能将模型推送到Server.
调整1:
Model.Title属性将需要调用RaisePropertyChanged(),以转换为所做的更改Model由Server到View.这很好用,因为它Model是DataContextView还不错.
调整2:
Save()保存从所做的更改View对Model上Server.这是我被卡住的地方.当模型被更改时,我可以处理调用Save()的Model.PropertyChanged事件,ViewModel但这会使它回显服务器所做的更改.我正在寻找一个优雅而合理的解决方案,如果有意义,我愿意改变我的架构.
说我有一个Person班级,一个PersonViewModel和一个PersonView.
将属性更新PersonView到Person模型很简单.PersonViewModel包含一个Person对象,并具有PersonView绑定到的公共属性,以便更新Person模型.
然而.
想象一下,Person模型可以更新Service.现在需要将属性更改传达给PersonViewModel然后再传递给PersonView.
我就是这样解决的:
对于Person模型中的每个属性,我将引发PropertyChanged事件.PersonViewModel订阅了PropertyChanged事件Person.PersonViewModel然后会引发另一个PropertyChanged以更新PersonView.
这对我来说似乎是最明显的方式,但我有点想把这个问题抛到那里,希望有人能给我一个更好的方法.这真的很简单,还是有更好的方法将模型标记为已修改并更新ViewModel上的相应属性?
该PersonView的DataContext的是PersonViewModel.Person从JSON填充并在其生命周期内多次更新.
随意为我的特定情况建议架构更改.
我将aqwert标记为我问题的答案,因为它为我提供了我已经提出的解决方案的替代方案.
我觉得Android开发人员关于在SQLite中保存数据的准则确实缺乏.当谈到多个表时,我很困惑一般指南是什么.
我目前有两个管理器向UI公开(CRUD)两组不同的实体.
我是:
在每个Manager中创建一个私有类SQLiteOpenHelper.每个Helper都有自己的onCreate用于自己的TABLE?
要么
创建一个创建两个TABLE的单个公共类SQLiteOpenHelper?
我没有看到使用一个在另一个之上的明显优势,但我看到它们都被使用了.Android对此有何看法?
我正在寻找一种关于如何干净地向UI层报告进度的好方法,或者至少是一些见解.
我的情况是这样的:我有一个Repository在Infrastructure Layer其与通信Data Layer.虽然这两个正在工作,UI但目前还没有发生什么事情的线索,只是被动地等待结果(使用Observable)
我的第一个想法是公开UI绑定到的存储库中的事件.但我觉得这可能会变得非常混乱.我很想知道你们是如何解决这个问题的.
更新4:通过在函数外部实例化restify客户端(请参阅controllers/messages.js)并在每次请求后调用global.gc(),内存增长速度似乎已经降低了很多(每10秒约500KB).然而,内存使用量仍在不断增长.
Update3:发过这篇文章:https://journal.paul.querna.org/articles/2011/04/05/openssl-memory-use/
值得注意的是,我正在使用HTTPS和Restify.
更新2:将以下代码更新为当前状态.我试过用Express换掉Restify.可悲的是,这没有任何区别.似乎链条末端的api调用(restify - > mongodb - > external api)会导致所有内容保留在内存中.
更新1:我用标准的MongoDB驱动程序替换了Mongoose.内存使用似乎增长速度较慢,但泄漏仍然存在.
我一直在努力寻找这种泄漏现在几天.
我正在使用Restify和Mongoose运行API ,并且对于每个API调用,我至少进行一次MongoDB查找.我有大约1-2k用户在一天内多次点击API.
我试过了什么
那么,可能出现什么问题呢?
我只使用一个API用户完成了上述测试.这意味着Mongoose只能一遍又一遍地抓取同一个文档.与生产的不同之处在于许多不同的用户都在使用API,这意味着mongoose会获得大量不同的文档.
当我启动nodejs服务器时,内存会迅速增长到100MB-200MB.它最终稳定在500MB左右.这是否意味着它会为每个用户泄漏内存?一旦每个用户访问过API,它都会稳定下来吗?
我在下面列出了我的代码,其中概述了我的API的一般结构.我很想知道我的代码或任何其他方法是否存在严重错误,以找出导致高内存使用的原因.
码
app.js
var restify = require('restify');
var MongoClient = require('mongodb').MongoClient;
// ... setup restify server and mongodb
require('./api/message')(server, db);
API/message.js
module.exports = function(server, db) {
    // Controllers used for retrieving accounts via MongoDB and communication with an external api
    var accountController = require('../controllers/accounts')(db);        
    var …有时CRM 2013在打开订单时决定给我以下错误(并向我显示一个空页面,但顶部导航栏保持不变):
<CrmScriptErrorReport>
<ReportVersion>1.0</ReportVersion>
<ScriptErrorDetails>
<Message>Unable to get property 'ClientVariables' of undefined or null reference</Message>
<Line>2</Line>
<URL>/_common/JsProvider.ashx?ids=1959345455-451858892-1713948411-1279630416-1250882489-367493978-19173614-574022791-696891199-2007586035-1552783829&ver=-976933632</URL>
<PageURL>/main.aspx?etc=1088&extraqs=%3f_gridType%3d1088%26etc%3d1088%26id%3d%257b76EB6220-FB46-E311-93F3-00155D5752A9%257d%26rskey%3d674031362&pagemode=iframe&pagetype=entityrecord&rskey=674031362    </PageURL>
   <Function>anonymous(){returnthis.get_$L_0().ClientVariables}</Function>
   <CallStack>
    <Function>anonymous(){returnthis.get_$L_0().ClientVariables}</Function>
   </CallStack>
  </ScriptErrorDetails>
  <ClientInformation>
   <BrowserUserAgent>Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; .NET4.0E; .NET4.0C)</BrowserUserAgent>
   <BrowserLanguage>en-US</BrowserLanguage>
   <SystemLanguage>en-US</SystemLanguage>
   <UserLanguage>en-US</UserLanguage>
   <ScreenResolution>1920x1080</ScreenResolution>
   <ClientName>Web</ClientName>
   <ClientTime>2013-11-11T17:32:05</ClientTime>
  </ClientInformation>
  <ServerInformation>
    <OrgLanguage>1033</OrgLanguage>
    <OrgCulture>1043</OrgCulture>
    <UserLanguage>1033</UserLanguage>
    <UserCulture>1043</UserCulture>
    <OrgID>{54131DE3-6D18-44FD-B4D0-0A9E87DA3E9D}</OrgID>
    <UserID>{E369A31E-3446-E311-93F2-00155D5752A9}</UserID>
    <CRMVersion>6.0.0.809</CRMVersion>
  </ServerInformation>
</CrmScriptErrorReport>
这将继续发生,直到我摆弄缓存或打开另一个组织.我仍然不确定究竟是什么解决了它.我在订单表单上有自定义代码,但我经常会在几天内没有收到错误.知道我怎么能找到这个错误的原因,以及它是否与我的自定义代码或CRM 2013中的错误有关?
谢谢.
c# ×3
mvvm ×2
prism ×2
silverlight ×2
android ×1
crm ×1
database ×1
dynamics-crm ×1
javascript ×1
memory-leaks ×1
mongoose ×1
node.js ×1
repository ×1
restify ×1
sqlite ×1