小编Mar*_*iss的帖子

WCF Streaming和maxReceivedMessageSize

为什么在实现WCF流式传输时maxReceivedMessageSize属性相关?由于缓冲和持久性由流的消费者处理,为什么WCF关注单个服务操作可能需要多长时间?

我正在开发一个项目,可以处理从服务器到客户端的大型文件.我认为WCF流是一个很好的选择,因为它应该允许处理理论上无限的文件大小.我的客户端和服务器都将transportMode(在绑定上)设置为"Streamed",并将消息设计为包含Streams.但是,这还不够,因为我收到一个CommunicationException,表明我需要增加maxReceivedMessageSize属性.遵循异常的建议,神奇地增加属性可以使一切工作完美.

我担心WCF迫使我"限制"我的服务/客户端可以处理多少,即使流媒体应该是"无限的".如果出现的文件恰好大于我的绑定配置,则会发生相同的CommunicationException.我不明白为什么WCF会随意限制我处理大文件的能力,"何时"和"如何"发送和存储这些文件现在是"我的"业务,因为我有一个流消费但我希望.

我错过了什么吗?

streaming wcf buffering maxreceivedmessagesize

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

Ninject 3.0.1.10缺少IKernel.Get

我刚刚使用NuGet将Ninject从v3更新到v3.0.1.10,它破坏了我的代码.我找不到IKernel.Get,或者我依赖于新库中任何地方的相关方法.我已经浏览了Ninject网站和博客,并且发现很短,我找不到详细的更改日志.我注意到有一个Resolve IEnumerable方法......这是现在检索对象的唯一方法吗?Generics和单实例Resolve/Get方法发生了什么变化?

dependency-injection ninject inversion-of-control

6
推荐指数
2
解决办法
2199
查看次数

如何防止泄漏抽象?

我正在编写一个 Active Directory 包装器,试图遵循 SOLID 和其他最佳实践。该接口当前是“IActiveDirectory”。

我现在遇到的问题是实现 ActiveDirectory 必须实现 IDisposable 来处理在这个包装器中创建和处理的一些资源,我不知道如何在尝试对接口进行编码时解决这个问题,等等。 . 我不想创建有漏洞的抽象(即用 IDisposable 装饰 IActiveDirectory。)由于底层依赖项的性能,我无法使服务细化(即将资源的创建/处置范围限定为方法调用)。

我目前有一个工厂,以便 IActiveDirectory 的消费者可以按需创建一个工厂,但我需要一种干净、方便的方式让消费者用信号通知资源已完成。

如何在不泄露资源包装器抽象的情况下为消费者提供合同(即接口)?我应该只公开没有接口的实现吗?我的消费者或我的 DI 容器是否有办法管理此服务的生命周期?

c# dependencies abstraction code-injection

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

当两个线程在同一时间ATTEMPT锁定同一个资源时会发生什么?

当两个线程试图以完全相同的微秒锁定同一个对象时(或者可以测量CPU切片或指令的最小时间长度),会发生什么?

两个线程甚至可以在完全相同的并发时间执行指令,还是不可能使用今天的硬件?

我正在研究一个处理多线程的项目,任何线程都可以击败另一个线程到终点线,可以这么说.很自然地,问题是"当他们同时锁定时会发生什么?" 必须得到IMO的解决.

.net multithreading locking

4
推荐指数
2
解决办法
1737
查看次数

WPF DataGrid SelectedItem绑定在项目更改后停止工作

我的问题/情况非常类似于Wpf DataGrid SelectedItem在单元格编辑后失去绑定但我没有使用任何"自定义"WPF框架.我有一个实现模型INotifyPropertyChangedIEditableObject,并绑定到一个网格ObservableCollection<T>.网格的SelectedItem属性绑定到VM上的属性.

有了一个断点,ViewModel.SelectedItem当我在网格中选择不同的行时,我可以看到我的属性发生了变化.但是,当我更改行上的值时,ViewModel.SelectedItem不再设置该属性,因为我将焦点更改为行.上面链接中标识的解决方案不起作用,因为我没有使用自定义WPF框架,只是裸WPF.

有任何想法吗?

// View model area
public IPurchaseorderItem SelectedItem
{
    get 
    { 
        return _selectedItem;
    }

    set
    {
        if (_selectedItem != value)
        {
            _selectedItem = value;
            SelectItemCommand.NotifyCanExecuteChanged();
            RemoveItemCommand.NotifyCanExecuteChanged();
        }
    }
}

// XAML SelectedItem binding
<views:NoBindingGroupDataGrid SelectedItem="{Binding SelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"  

// Special Grid to clear binding groups (read on a similarly themed SO question/answer)
internal sealed class NoBindingGroupDataGrid : DataGrid
{
    private bool _editing …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml mvvm

4
推荐指数
1
解决办法
5051
查看次数

C# 布尔值比较错误?

这怎么可能?这两个值都在内存中,并且在设置了这两个值后在断点处暂停执行。我很高兴找到一个 if 语句,该语句检查当值实际上相同时要执行的两个布尔值是否不同。因此,我在同一断点处使用“立即窗口”进行了更深入的研究。

在此处输入图片说明

出于好奇,我停止了程序,并且(就在我注意到这种不一致的原始调试点)我插入了几行代码:

var one = true;
var two = true;
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我破坏了 C# 还是什么?同一方法调用范围内的两对布尔值(我仔细检查了它们的 .GetType() 返回布尔值)如何使用相等运算符不一致?

尽管这无关紧要,但第一对(其中 double equals 方法返回错误的结果)是在可能会或可能不会更改属性值的方法调用之前和之后使用 PropertyInfo.GetValue(object target) 收集的在目标上。我使用了两次 GetValue 以确保在“做某事”之前更改了属性的值。

我在多次执行程序时得到相同的结果,所以我不认为这是执行环境的侥幸。

c# struct equality

-1
推荐指数
1
解决办法
669
查看次数