现在有很多依赖 注入框架可供选择.由于您使用的库,您以前经常被迫使用给定的依赖注入框架.但是,Common Service Locator库使库代码独立于注入框架.
学习所有这些所需的时间足以决定使用哪个是不合理的.我不相信我们已经达到了可以讨论最佳依赖注入框架的阶段.那么我应该问什么问题关于项目和我自己来帮助决定在特定情况下使用的最佳依赖注入框架?
了解为什么选择当前使用的依赖注入框架以及您是否仍然对此选择感到满意也很有用.
在比较依赖注入框架的样式时,是否还有一个有用的词汇表?
服务定位器库是否在现实生活中工作,或者您是否被迫在同一项目中使用许多不同的依赖注入框架?
使用每个依赖注入框架对代码进行折射是多么容易,例如ReSharper等工具是否适用于给定的框架?
作为Win32背景下的"硬核"WinForms程序员,我一直使用Spy ++来理解我的应用程序在UI级别上做了什么,包括:
然后我经常在源代码中搜索控件名称,当你不得不在一个你不熟悉的大型应用程序上更改UI时非常有用.
那么我如何对WPF应用程序做同样的事情呢?
(如果需要,您可以假设我可以访问WPF应用程序的源代码,但我更确切地说,该实用程序在不需要应用程序源代码的情况下工作.)
感谢您的回答,我刚刚在StackOverflow中搜索了" Snoop ",并在WPF工具列表中找到了一些问题/答案.
我们的代码如下:
ms = New IO.MemoryStream
bin = New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
bin.Serialize(ms, largeGraphOfObjects)
dataToSaveToDatabase = ms.ToArray()
// put dataToSaveToDatabase in a Sql server BLOB
Run Code Online (Sandbox Code Playgroud)
但是内存蒸汽从大内存堆中分配了一个大缓冲区,这给我们带来了麻烦.那么我们如何在不需要足够的可用内存来保存序列化对象的情况下流式传输数据.
我正在寻找一种从SQL服务器获取Stream的方法,然后可以将其传递给bin.Serialize(),以避免将所有数据保存在我的进程内存中.
同样,为了阅读数据...
更多背景.
这是一个复杂的数字处理系统的一部分,它可以近乎实时地处理数据,寻找设备问题等,进行序列化以便在数据馈送等数据质量出现问题时重新启动(我们存储数据源)并且可以在运算符编辑出错误值后重新运行它们.)
因此,我们更频繁地序列化对象,然后我们对它们进行反序列化.
我们正在序列化的对象包括非常大的数组,这些数组主要是双精度数以及许多小的"更正常"的对象.我们正在推动32位系统的内存限制,并使车库收集器非常努力.(系统中的其他地方正在进行改进,例如重用大型数组而不是创建新数组.)
通常,状态的序列化是追踪内存异常的最后一根 ; 我们的峰值内存使用量是在进行此序列化时.
我认为当我们反序列化对象时会得到大的内存池碎片,我预计在给定数组大小的情况下,还存在大内存池碎片的其他问题.(这还没有被调查过,因为首先看过这个的人是数字处理专家,而不是内存管理专家.)
客户是否使用Sql Server 2000,2005和2008的混合,如果可能的话,我们宁愿不为每个版本的Sql Server使用不同的代码路径.
我们可以一次拥有许多活动模型(在不同的过程中,在许多机器上),每个模型可以有许多已保存的状态.因此,保存的状态存储在数据库blob中,而不是文件中.
由于保存状态的传播很重要,我宁愿不将对象序列化为文件,然后一次将文件放在BLOB中.
我问过的其他相关问题
我只是认为现在通常在数据库服务器上有足够的RAM来缓存你的完整数据库为什么内存数据库中的专家 (例如TimesTen,另见维基百科页面)几年前风靡一时不被使用更多?
似乎随着时间的推移,没有更少的基于磁盘的数据库被使用,例如,现在大多数应用程序都建立在传统的理性数据库上.我原本期望相反,因为RAM已经接近很多服务器的免费.
我问这个问题,因为我刚刚阅读了堆栈溢出架构,页面上写道
这很重要,因为Stack Overflow的数据库几乎完全在RAM中,并且连接的成本仍然太高.
但是,如果使用"指针"和"集合"而不是普通的btree,我认为这不会是一个问题.Btree非常聪明地限制磁盘访问速度,例如它们交换CPU使用以减少磁盘使用.但是我们现在有匹配ram.
但我们仍然需要数据库,就像做自己的一样
很难.
@ S.Lott,鉴于我们都花了这么长时间选择索引,避免加入和调查数据库性能问题.肯定有更好的办法.几年前,我们被告知"内存数据库"是更好的方法.所以在我开始使用其他之前,我想知道为什么其他人不再使用它们.
(我不太可能自己使用TimesTen,因为价格很高(41,500.00美元/处理器)而且我不喜欢和Oracle销售人员交谈 - 我宁愿花时间编写代码.)
也可以看看:
更新:
我问这个问题一个长的时间以前,这几天的Microsoft SQL Server具有" 在内存OLTP ",也就是集成到SQL Server引擎内存优化的数据库引擎.它并不便宜,但对某些工作负载来说似乎非常快.
例如,我如何让VB.NET 静态地键入一个局部变量作为赋值的右侧表达式的静态类型?
为了更好或更坏,我们现在有一个VB.NET编码标准文档,它基于StyleCop强制执行的C#编码标准.
例如
我倾向于认为:
如果它在需求文档中,则应由自动系统检查
我正在寻找(理想上是免费的)工具来检查VB.NET代码上的那些规则,因为这些是没有进入编译输出的样式问题,FxCop没用.
(我会亲自匹配,而我们只是检查像重复的代码和一个合理重要的事情为每个类(所以没有更多的多万人班线!),但我需要保持编码标准文档我希望有一个工具帮助我这样做.)
关于赏金.
我正在寻找一个VB.NET代码检查工具列表,简要总结了每个工具可以做什么及其局限性.如果工具不是免费的,请包含一些理想的费用.
有没有人有使用CodeRush/Refactor的经验!还是用VB.NET的ReSharper来检查这种类型的编码风格问题?
我希望在System.Threading.SynchronizationContext :: SetSynchronizationContext静态方法上设置断点,以便我可以找出何时设置同步上下文.
但是我找不到如何在我没有源代码的方法中设置断点.
(这应该很简单!但是当我尝试从断点窗口设置断点时,它会识别该方法.)
我们不能让我们的客户长时间无法在落叶松中升级到Windows 8.但是,我们的应用需要 "平板电脑"/"触摸"版本.
那么我们如何才能支持Windows 8上的Metro与单个代码库中的当前客户的联系呢?
当WPF出现之后,经过很多微软推出的"推动"并使其在Windows XP上运行之后 - 就像WinRT所讨论的那样.
(我不希望任何解决方案在XP上工作,因为XP支持正在减少.)
" 特征分支 " 是指每个特征在其自己的分支中开发,并且仅在经过测试并准备发运时才合并到主线中.这允许产品所有者选择进入给定货件的功能以及如果更重要的工作进入而部分写入的"停放"功能(例如,客户打电话给MD进行投诉).
" 重构 "正在改变代码以改进其设计,从而降低变更成本.如果不继续这样做,你往往会得到更难以编写测试的代码库.
在现实生活中,总会有客户销售新功能,并且由于政治原因,所有客户都必须看到"他们的"功能组正在取得进展.因此很少有时间没有很多半成品功能坐在树枝上.
如果已经进行了任何重构,那么"特征分支"中的合并变得更加困难,如果不是不可能的话.
我们只是不得不放弃能够进行任何重构吗?
另请参阅" 如何处理重构与合并需求之间的紧张关系?"
.net ×4
vb.net ×2
ado.net ×1
branch ×1
c# ×1
coding-style ×1
database ×1
debugging ×1
refactoring ×1
spy++ ×1
sql-server ×1
transactions ×1
utilities ×1
windows-7 ×1
windows-8 ×1
wpf ×1
xna ×1