在我处理的应用程序中,任何业务逻辑错误都会导致抛出异常,并且调用代码会处理异常.这种模式在整个应用程序中使用并且运行良好.
我有一种情况,我将尝试从业务层内部执行许多业务任务.对此的要求是一个任务的失败不应导致进程终止.其他任务仍然可以执行.换句话说,这不是原子操作.我遇到的问题是,在操作结束时,我希望通过抛出异常来通知调用代码确实发生了异常.请考虑以下psuedo-code代码段:
function DoTasks(MyTask[] taskList)
{
foreach(MyTask task in taskList)
{
try
{
DoTask(task);
}
catch(Exception ex)
{
log.add(ex);
}
}
//I want to throw something here if any exception occurred
}
Run Code Online (Sandbox Code Playgroud)
我该扔什么?我在职业生涯之前遇到过这种模式.在过去,我保留了所有异常的列表,然后抛出包含所有捕获的异常的异常.这似乎不是最优雅的方法.重要的是从每个异常中保留尽可能多的细节以呈现给调用代码.
思考?
编辑:解决方案必须用.Net 3.5编写.我不能使用任何beta库,或Bradley Grainger(下面)提到的.Net 4.0中的AggregateException 对于抛出的集合异常将是一个很好的解决方案.
是否存在比双精度"更大"的本机c ++变量类型?
float是7
double是15(当然取决于编译器)
有没有更大的本机,甚至非本机?
我应该把它作为一个论坛,但想到这里有人可能知道答案.我正在尝试在家庭vista机器上安装sql server 2008但每次检查时都会告诉"重启计算机失败",以确保满足预先要求.我已重新启动计算机,甚至已安装/安装.net 3.5 sp1.
我找到的唯一线程是:http://forums.microsoft.com/msdn/showpost.aspx?posttid = 3656807&siteid = 1&sb = 0&d = 1&at = 7&ft = 11&tf = 0&pageid = 1
该论坛上的最后一篇文章指出,有一种方法可以"强制"(使用命令提示符),有一种方法可以绕过重新启动检查.
有谁知道可以用什么命令来绕过rebook check?
我正在寻找一种通过互联网处理大型数据集的设计模式,并定期更新这些对象.我正在开发一个应用程序,它将一次在UI中显示数千条记录.此外,这些对象上的各种属性非常短暂,需要在客户端上进行更新,以使用户了解系统中这些记录的更改状态.我有一些想法如何处理这个问题,但想到可能有一个处理这种情况的设计模式(或模式).
限制:
关于如何解决这个问题的全部或部分的想法?就像我提到的那样,我已经考虑了一些想法,但到目前为止,我所做的一切都没有让我对这个项目的成功有一个很好的感觉.
编辑:
我认为困难的部分实际上归结为两件事,我可能需要两种截然不同的模式/做法/策略:
有几种设计模式可用于其他一切.
编辑2:
感谢Silverlight中各种"推送"实现的链接.我可以发誓套接字已从Silverlight中取出,但根据下面的答案找到了Silverlight 3参考.这对我来说真的不是一个大问题,而且我没有花太多时间研究,所以我正在编辑原始文本.无论是通过民意调查还是通过推送进行更新,一般的设计问题仍然存在.很高兴知道我有选择权.
编辑3:推动技术的后续行动.
我怀疑Silverlight WCF双工实现是类似于彗星的推送.这不会扩展,并且有很多关于它在现实世界中如何不存在的文章.
Silverlight中的套接字实现以多种方式瘫痪.看起来它在我们的场景中将毫无用处,因为Web服务器可能位于任何给定的客户端防火墙后面,不允许非标准端口,并且Silverlight套接字不会连接到80,443等.
我仍在考虑以有限的方式使用WCFduplex方法,但看起来轮询将成为答案.
编辑4:找到一个模式来解决我的一半问题
我发现这个模式(PDF)说明了使用迭代器模式从服务器检索数据页并将它们呈现为一个简单的迭代器.在.Net中我想象这将实现为IEnumerable(示例代码在Java和Oracle SQL中).我特别感兴趣的是异步页面预取,基本上缓冲结果集客户端.使用5k对象时,所有内容都不会同时出现在屏幕上,因此我可以使用一种策略,即不会立即获取所有内容,而是从UI中隐藏实现细节.应用程序将检索的核心对象位于数据库中,然后需要其他查找才能完全填充这些对象.这种方法似乎是一种快速将一些数据输出到客户端的好方法.
我现在正在考虑使用这种模式+某种代理对象模式,它监听结果集的增量并相应地更新对象.这里可以采取一些策略.我可以加载所有数据前期,然后发送变化的增量(这可能需要在子系统中一些额外的代码,以提供改变的通知).这可能是我的第一种方法.我还在寻找.感谢到目前为止的所有想法.
我的团队正在考虑使用IndexedDb来缓存用户会话中的数据.这些数据可以足够大,以便能够在浏览器中保留它以供以后使用,而不必在每次用户需要时下载它,这将是真正的性能提升.
我担心IndexedDb的安全问题.有问题的数据不是超级敏感的,但我们需要用户/通行证来获取它.我担心如果用户的笔记本电脑被盗,这些数据可能会被访问.这些文件是否在文件系统上未加密?
模型应该只是数据结构吗?MVC中的服务(数据访问,业务逻辑)在哪里?
让我们假设我有一个显示客户订单列表的视图.我有一个控制器类来处理视图控件(按钮等)上的点击.
控制器应该启动数据访问代码吗?单击Think按钮,重新加载订单查询.或者这应该通过模型层?
任何示例代码都会很棒!
几年前我曾经在VB6中编程,我真的很喜欢它,因为它非常简单快速,当VB.net出现时,我放弃它因为它们改变了很多东西.我想知道这些年后是否有一种新的语言或IDE可以比VB6更容易,更快速地进行编程.我对学术/个人问题不是很感兴趣,例如非常高的性能,通过操作系统的强大移动性,开源等等.我想知道是否有什么东西可以编写中小型桌面应用程序.以一种非常简单快捷的方式.
如果我的英语不是很清楚,请原谅.
编辑回答尼古拉斯:嗯,我必须承认我没有太多尝试VB.Net,我有点失望,因为我必须学习很多新东西,而且我已经学习了很久以前的VB6(在那一刻).
我试图弄清楚如何通过配置来模拟数据,就像我在Ember Mirage中但在Angular 2中一样.我知道我可以使用DI和MockBackend从头开始构建一些东西来拦截HTTP中的调用并返回数据.Angular 2或Angular 2 CLI是否内置了我缺少的东西,或者是一个标准的软件包呢?
我的团队正在转向Mercurial.我们的项目都有一个配置文件(web.config或app.config,以及一些bat文件 - 我们是一个C#商店).这些文件必须是存储库的一部分.当开发人员克隆存储库时,需要对其配置文件进行本地更改才能使其正常工作.例如,项目的配置文件可能需要连接字符串到开发人员的数据库,或其他特定于环境的信息.我们不希望这些更改最终存储在存储库中.我们不时会对这些需要进入存储库并分发给团队并最终分发给客户的配置进行更改.
我们配置或使用Mercurial的最简单方法是什么,以便这些文件不会被意外提交?我希望被迫明确提交这些文件,但是来自repo的合并会自动降级到更新中.
这必须是其他人面临的问题,但作为Mercurial的新手,我们都不知道最好的解决方案.
编辑:
一个类似的问题,可能会分享一些常见的解决方案,但与此问题不同,可以在以下位置找到:条件Mercurial忽略文件
如果其他问题可能提供您正在寻找的答案,我会将此包括在内.
c# ×3
.net ×2
angular ×1
angularjs ×1
c++ ×1
exception ×1
indexeddb ×1
installation ×1
javascript ×1
mercurial ×1
newsletter ×1
silverlight ×1
sql-server ×1
types ×1
variables ×1
vb6 ×1
wcf ×1