小编Tyl*_*nks的帖子

MongoDB连接的.NET最佳实践?

我最近一直在使用GitHub上的C#驱动程序玩MongoDB(它的速度非常快).在我正在测试的小单线程控制台应用程序中,一切正常.我可以在8秒内运行单线程添加1,000,000个文档(是的,百万个).如果我使用for循环范围之外的连接,我只能获得此性能.换句话说,我保持每个插入的连接打开,而不是连接每个插入.显然这是做作的.

我以为我会把它调到一个档位,看它是如何与多线程一起工作的.我这样做是因为我需要模拟一个包含多个并发请求的网站.我在15到50个线程之间旋转,在所有情况下仍然插入总共150,000个文档.如果我让线程运行,每个线程为每个插入操作创建一个新连接,性能就会停止.

显然,我需要找到一种共享,锁定或池连接的方法.这就是问题所在.连接到MongoDB的最佳做法是什么?连接是否应该在应用程序的生命周期内保持打开(每次操作都会有很长的延迟打开和关闭TCP连接)?

有没有人有MongoDB的任何现实世界或生产经验,特别是底层连接?

这是我使用为插入操作锁定的静态连接的线程示例.请提供可在Web环境中最大限度地提高性能和可靠性的建议!

private static Mongo _mongo;

private static void RunMongoThreaded()
{
    _mongo = new Mongo();
    _mongo.Connect();

    var threadFinishEvents = new List<EventWaitHandle>();

    for(var i = 0; i < 50; i++)
    {
        var threadFinish = new EventWaitHandle(false, EventResetMode.ManualReset);
        threadFinishEvents.Add(threadFinish);

        var thread = new Thread(delegate()
            {
                 RunMongoThread();
                 threadFinish.Set();
            });

        thread.Start();
    }

    WaitHandle.WaitAll(threadFinishEvents.ToArray());
    _mongo.Disconnect();
}

private static void RunMongoThread()
{
    for (var i = 0; i < 3000; i++)
    {
        var db = _mongo.getDB("Sample");
        var collection = db.GetCollection("Users");
        var user = …
Run Code Online (Sandbox Code Playgroud)

c# performance connection-pooling mongodb mongodb-.net-driver

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

Xamarin Studio构建目标?试图让Fody工作?

我正在尝试让Xamarin Studio使用PropertyChanged.Fody.我通过NuGet安装了Fody,它将Fody.targets放入其NuGet包文件夹中.但是当我构建时,输出永远不会显示目标运行.

如何告诉Xamarin Studio使用Fody构建目标?

谢谢!

c# xamarin.ios xamarin-studio xamarin.forms

10
推荐指数
2
解决办法
2952
查看次数

ASP.NET MVC 2 RC - 使用Data Annotations的客户端验证失败,具有多个属性

在模型上使用Data Annotations时,我遇到了为客户端验证而发出的JavaScript的问题.这是一个模型的示例,它可以很好地处理两个必填字段,然后是发出的JavaScript:

public class LoginUserViewModel
    {
        [Required(ErrorMessage = "Email required")]
        public string EmailAddress { get; set; }

        [Required(ErrorMessage="Password required")]
        public string Password { get; set; }
    }
}

//<![CDATA[
if (!window.mvcClientValidationMetadata) { window.mvcClientValidationMetadata = []; }
window.mvcClientValidationMetadata.push({"Fields":[{"FieldName":"EmailAddress","ReplaceValidationMessageContents":true,"ValidationMessageId":"form0_EmailAddress_validationMessage","ValidationRules":[{"ErrorMessage":"Email required","ValidationParameters":{},"ValidationType":"required"}]},{"FieldName":"Password","ReplaceValidationMessageContents":true,"ValidationMessageId":"form0_Password_validationMessage","ValidationRules":[{"ErrorMessage":"Password required","ValidationParameters":{},"ValidationType":"required"}]}],"FormId":"form0","ReplaceValidationSummary":false});
//]]> 
Run Code Online (Sandbox Code Playgroud)

一旦我在EmailAddress字段上添加了另一个属性(正则表达式属性),JavaScript就不再发出任何规则.请注意,在下面的JavaScript中,只有一个空数组,其中应该是规则.这是改变和脚本.有任何想法吗?

public class LoginUserViewModel
    {
        [Required(ErrorMessage = "Email required")]
        [RegularExpression(@"^[a-z0-9]+([-+\.]*[a-z0-9]+)*@[a-z0-9]+([-\.][a-z0-9]+)*{2,4}$", ErrorMessage = "Invalid email format")]
        public string EmailAddress { get; set; }

        [Required(ErrorMessage="Password required")]
        public string Password { get; set; }
    }

//<![CDATA[
if (!window.mvcClientValidationMetadata) { window.mvcClientValidationMetadata = []; } …
Run Code Online (Sandbox Code Playgroud)

javascript asp.net-mvc jquery-validate data-annotations

0
推荐指数
1
解决办法
1357
查看次数