小编nds*_*dsc的帖子

MVVM:绑定到Model,同时保持Model与服务器版本同步

我花了很多时间尝试为以下挑战找到一个优雅的解决方案.我一直无法找到解决问题的解决方案.

我有一个简单的View,ViewModel和Model设置.为了便于解释,我会保持简单.

  • Model有一个名为TitleString类型的属性.
  • Model是在DataContext的View.
  • ViewTextBlock这就是数据绑定到Title的模型.
  • ViewModel有一个名为方法Save(),将保存ModelServer
  • Server可推到所做的更改Model

到现在为止还挺好.现在我需要进行两项调整才能使模型与a保持同步Server.服务器的类型并不重要.只要知道我需要调用Save()才能将模型推送到Server.

调整1:

  • Model.Title属性将需要调用RaisePropertyChanged(),以转换为所做的更改ModelServerView.这很好用,因为它Model是DataContextView

还不错.

调整2:

  • 下一步是调用Save()保存从所做的更改ViewModelServer.这是我被卡住的地方.当模型被更改时,我可以处理调用Save()的Model.PropertyChanged事件,ViewModel但这会使它回显服务器所做的更改.

我正在寻找一个优雅而合理的解决方案,如果有意义,我愿意改变我的架构.

c# silverlight domain-driven-design prism mvvm

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

MVVM:修改模型,如何正确更新ViewModel和View?

案件

说我有一个Person班级,一个PersonViewModel和一个PersonView.

将属性更新PersonViewPerson模型很简单.PersonViewModel包含一个Person对象,并具有PersonView绑定到的公共属性,以便更新Person模型.

然而.

想象一下,Person模型可以更新Service.现在需要将属性更改传达给PersonViewModel然后再传递给PersonView.

我就是这样解决的:

对于Person模型中的每个属性,我将引发PropertyChanged事件.PersonViewModel订阅了PropertyChanged事件Person.PersonViewModel然后会引发另一个PropertyChanged以更新PersonView.

这对我来说似乎是最明显的方式,但我有点想把这个问题抛到那里,希望有人能给我一个更好的方法.这真的很简单,还是有更好的方法将模型标记为已修改并更新ViewModel上的相应属性?

附加

PersonView的DataContext的是PersonViewModel.Person从JSON填充并在其生命周期内多次更新.

随意为我的特定情况建议架构更改.

回答

我将aqwert标记为我问题的答案,因为它为我提供了我已经提出的解决方案的替代方案.

c# silverlight domain-driven-design prism mvvm

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

对SQLiteOpenHelper感到困惑并创建多个表

我觉得Android开发人员关于在SQLite中保存数据的准则确实缺乏.当谈到多个表时,我很困惑一般指南是什么.

我目前有两个管理器向UI公开(CRUD)两组不同的实体.

我是:

在每个Manager中创建一个私有类SQLiteOpenHelper.每个Helper都有自己的onCreate用于自己的TABLE?

要么

创建一个创建两个TABLE的单个公共类SQLiteOpenHelper?

我没有看到使用一个在另一个之上的明显优势,但我看到它们都被使用了.Android对此有何看法?

database sqlite android sqliteopenhelper

9
推荐指数
1
解决办法
6208
查看次数

报告从存储库到UI的进度的好方法是什么

我正在寻找一种关于如何干净地向UI层报告进度的好方法,或者至少是一些见解.

我的情况是这样的:我有一个RepositoryInfrastructure Layer其与通信Data Layer.虽然这两个正在工作,UI但目前还没有发生什么事情的线索,只是被动地等待结果(使用Observable)

我的第一个想法是公开UI绑定到的存储库中的事件.但我觉得这可能会变得非常混乱.我很想知道你们是如何解决这个问题的.

c# design-patterns repository system.reactive

7
推荐指数
2
解决办法
729
查看次数

JavaScript泄漏内存(Node.js/Restify/MongoDB)

更新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.内存使用似乎增长速度较慢,但​​泄漏仍然存在.


我一直在努力寻找这种泄漏现在几天.

我正在使用RestifyMongoose运行API ,并且对于每个API调用,我至少进行一次MongoDB查找.我有大约1-2k用户在一天内多次点击API.

我试过了什么

  • 我已将我的代码隔离到仅使用Restify并使用ApacheBench来发出大量请求(100k +).测试期间内存使用率保持在60MB左右.
  • 我已经将我的代码隔离到只使用Restify和Mongoose并以与上面相同的方式测试它.内存使用率保持在80MB左右.
  • 我已经使用ApacheBench在本地测试了完整的生产代码.内存使用率保持在80MB左右.
  • 我已经按时间间隔自动转储了堆.我最大的堆转储是400MB.我只能看到有大量的字符串和数组,但我无法清楚地看到它的模式.

那么,可能出现什么问题呢?

我只使用一个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);
Run Code Online (Sandbox Code Playgroud)

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 …
Run Code Online (Sandbox Code Playgroud)

javascript memory-leaks mongoose node.js restify

7
推荐指数
1
解决办法
1710
查看次数

在CRM 2013中打开订单有时会显示空白页面

有时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>
Run Code Online (Sandbox Code Playgroud)

这将继续发生,直到我摆弄缓存或打开另一个组织.我仍然不确定究竟是什么解决了它.我在订单表单上有自定义代码,但我经常会在几天内没有收到错误.知道我怎么能找到这个错误的原因,以及它是否与我的自定义代码或CRM 2013中的错误有关?

谢谢.

crm dynamics-crm dynamics-crm-2013

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