小编Art*_*ess的帖子

用于MVC4应用的统一或unity.mvc4

我想将DI添加到我的类库中,这是MVC4 Web应用程序的一部分.所以我可以选择Unity,structuremap,ninject.我选择了Unity,因为它在Asp.Net示例中提到过.

当我搜索Nuget for Unity时,我发现Unity有多种变体.哪一个适合我的库,Unity或Unity.MVC4

c# design-patterns dependency-injection c#-5.0 asp.net-mvc-4

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

扩展Windows服务

我正在寻找有关如何扩展当前在我公司运行的Windows服务的一些输入.我们正在使用.NET 4.0(可以并且将来会在某个时候升级到4.5)并在Windows Server 2012上运行它.

关于服务
该服务的工作是查询日志表中的新行(我们正在使用Oracle数据库),处理信息,创建和/或更新其他5个表中的一堆行(让我们称之为跟踪表) ),更新日志表并重复.

日志记录表具有大量XML(每行最多可达20 MB),需要在其他5个跟踪表中进行选择和保存.始终以每小时500,000行的最大速率添加新行.
跟踪表的流量要高得多,从最小的一行中的90,000个新行到每小时最大表中可能有数百万行.更不用说那些表也有更新操作.

关于正在处理的数据
我觉得这一点对于根据这些对象的分组和处理方式找到解决方案非常重要.数据结构如下所示:

public class Report
{
    public long Id { get; set; }
    public DateTime CreateTime { get; set; }
    public Guid MessageId { get; set; }
    public string XmlData { get; set; }
}

public class Message
{
    public Guid Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
  • 报告是我需要选择和处理的记录数据
  • 对于每条消息,平均有5个报告.在某些情况下,这可以在1到数百之间变化.
  • 消息有很多其他集合和其他关系,但它们与问题无关.

今天Windows服务我们几乎没有管理16核服务器上的负载(我不记得完整的规格,但可以肯定地说这台机器是野兽).我的任务是寻找扩展和添加更多机器的方法,这些机器将处理所有这些数据而不会干扰其他实例.

目前,每个Message都有自己的Thread并处理相关报告.我们批量处理报告,按其MessageId分组,以便在处理数据时将数据库查询的数量减少到最少.

限制

  • 在这个阶段,我可以使用我认为合适的任何架构从头开始重新编写此服务.
  • 如果实例崩溃,其他实例需要能够接收崩溃的实例.没有数据可以丢失.
  • 此处理需要尽可能接近插入数据库的报告的实时性.

我正在寻找有关如何构建此类项目的任何意见或建议.我假设服务需要是无状态的,还是有办法以某种方式同步所有实例的缓存?我应该如何在所有实例之间进行协调,并确保它们不处理相同的数据?如何在它们之间平均分配负载?当然,如何处理实例崩溃而不完成它的工作?

编辑
删除了无关的信息

c# windows-services scalability horizontal-scaling

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

带有select/from方括号的Foreach?

我最近在查看包装类并用Google搜索以下页面... http://wiki.developerforce.com/page/Wrapper_Class

虽然我理解了包装类,但我对以下内容感到困惑......

public List<cContact> getContacts() {

    if(contactList == null) {

        contactList = new List<cContact>();

        for(Contact c: [select Id, Name, Email, Phone from Contact limit 10]) {

            // As each contact is processed we create a new cContact object and add it to the contactList
            contactList.add(new cContact(c));
        }
    }
    return contactList;
}
Run Code Online (Sandbox Code Playgroud)

特别是......

for(Contact c: [select Id, Name, Email, Phone from Contact limit 10]) { ... }
Run Code Online (Sandbox Code Playgroud)

什么是选择和来自?我在哪里可以查看foreach中的更多信息?

我知道LINQ和select,from,where等等......但我之前从未见过_ this _ syntax.它是什么以及如何更多地研究这种语法?

c# foreach apex-code

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

如何使用 mongoose 将查询结果返回给变量

我仍处于 Node.js 和 Moongoose 的学习阶段,我有一个场景

  • 我正在从表单提交中获取值(ABC)。这是一个用户名
  • 然后我在用户集合(用户)中搜索该名称
  • 使用 ref 获取该用户并将其 ObjectID 写入另一个模式(文章)中。

我的逻辑:

article.owner = User.findOne({ 'name' : 'ABC' })
    .exec(function (err, user){
         return user
    })
Run Code Online (Sandbox Code Playgroud)

但它没有返回结果。我参考了其他一些答案并尝试过,async.parallel但我仍然无法在文章架构中保存 ABC 用户的 objectID,因为article.owner我总是为空。

请建议我任何其他更好的方法。

mongoose mongodb node.js

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

ASP NET Web API路由模板

我有一个名为Agency的实体跟随api

GET     http://localhost:37331/api/agency?start=1&limit=10&status=1
GET     http://localhost:37331/api/agency/2
POST    http://localhost:37331/api/agency 
PUT     http://localhost:37331/api/agency
DELETE  http://localhost:37331/api/agency/4
POST    http://localhost:37331/api/agency/activate/3
POST    http://localhost:37331/api/agency/deactivate/3
GET     http://localhost:37331/api/agency/types
Run Code Online (Sandbox Code Playgroud)

我使用的路线模板是

        config.Routes.MapHttpRoute(
            name: "ControllerActionIdApi",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { },
            constraints: new { id = @"\d+" }
        );
        //
        config.Routes.MapHttpRoute(
            name: "ControllerActionApi",
            routeTemplate: "api/{controller}/{action}"
        );
        //
        config.Routes.MapHttpRoute(
            name: "ControllerIdApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { },
            constraints: new { id = @"\d+" }
        );
        //
        config.Routes.MapHttpRoute(
            name: "ControllerApi",
            routeTemplate: "api/{controller}"
        );
Run Code Online (Sandbox Code Playgroud)

显然第二和第三之间存在歧义.我有一个解决方法,将id放入查询字符串

GET     http://localhost:37331/api/agency?id=2
DELETE  http://localhost:37331/api/agency?id=4
Run Code Online (Sandbox Code Playgroud)

我认为一定有聪明的方法.你能就此提出建议吗?

谢谢

asp.net routes asp.net-web-api asp.net-web-api-routing

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

无法在string.Format()中传递null值

我有一个ComboBox名称,cmbCity其中dataSource为DisplayMember"CityName"(字符串类型)和ValueMember"ValueID"(数字类型).

现在更新dataTable我有查询

string query = string.Format("Update TableName Set StringTypeColmName = '{0}' , NumberTypeColmName = {1}", 
                             "StringValue", 
                             !string.IsNullOrEmpty(cmbCity.Text) ? cmbCity.SelectedValue : DBNull.Value);`. 
Run Code Online (Sandbox Code Playgroud)

如果用户选择值表单cmbCity,它的工作正常cmbCity.SelectedValue,如果用户不选择任何值,我得到的值然后我试图在数据库中为该字段传递空值但是在格式化字符串后,我得到的值就像

Update TableName Set StringTypeColmName = 'StringValue' , NumberTypeColmName = " 
Run Code Online (Sandbox Code Playgroud)

在此输出字符串null值不存在,最后在执行查询时我得到了异常Syntax error in UPDATE statement..任何帮助如何在输出查询中添加空值.我正在使用MS-Accesss数据库和VS2010.

c# ms-access winforms

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

分页在MVC Webgrid中不起作用

我正在使用MVC WebGrid。我从4天开始陷入困境。我已经检查了每个博客以及关于stackoverflow的每个问题,但是没有任何效果。当我单击任何页码时,我的WebGrid消失。我正在创建一个搜索控件。单击搜索按钮后,ajax.beginform将在控制器上调用一个方法,然后使用局部视图更新div。部分视图由webgrid(由结果组成)组成。webgrid的代码如下:

@{
    var grid = new WebGrid(canPage: true, rowsPerPage: 5, ajaxUpdateContainerId: "grid");
    grid.Bind(list, rowCount: list.Count, autoSortAndPage: true);

    grid.Pager(mode: WebGridPagerModes.All);
}
<div id = "grid">
    @if (list[0].Title == null)
    {
        <span>No Record to display</span>
    }
    else
    {
        @grid.GetHtml(tableStyle: "gridTable",
                      headerStyle: "gridHead",
                      footerStyle: "gridFooter",
                      rowStyle: "gridRow",
                      alternatingRowStyle: "gridAltRow",
                      columns: grid.Columns(
                      grid.Column("Title", "Title"),
                      grid.Column("Category", "Category")
        ));
    }
</div>  
Run Code Online (Sandbox Code Playgroud)

网格第一次打开很好。但是,当我单击任何页码时,网格就会消失。

请帮我!提前致谢

c# asp.net-mvc

2
推荐指数
1
解决办法
5803
查看次数

Task.Run()会对性能产生任何影响吗?

我有一个调用数据库的方法,如下所示:

BL方法调用DAO方法:

    public async Task<List<Classes>> GetClassesAndAddRules(string classId)
    {
        var classData = await Task.Run( () => _daoClass.GetClasses(classId));

        //logic for adding rule
        //..................................
    }
Run Code Online (Sandbox Code Playgroud)

DAO中的DatabaseCall:

   //*below method takes 1 second approx to return*
    public List<Classes> GetClasses(string id)
    {
        var retVal = new List<Classes>();

        using (var context = new test_db_context())
        {
            var rows = context.GetClassesById(id);
            foreach (ClassesDBComplexType row in rows)
            {
                retVal.Add(Mapper.Map<GetClassesByClassIdOut>(row));
            }
        }
        return retVal;
    }
Run Code Online (Sandbox Code Playgroud)

只是我使用await调用DAO方法有什么性能提升吗?

我的理解是GetClasses()将在一个单独的线程上调用,这样它就不会阻塞并继续处理其他东西.

任何帮助表示赞赏.

c# task-parallel-library async-await c#-5.0 asp.net-mvc-4

2
推荐指数
1
解决办法
1417
查看次数

在VS2012和Win32/64下将静态boost构建链接到静态库

我正在尝试构建一个静态库,作为网络设备的API发布.我可以成功编译和链接库以生成.lib输出文件,并将它们重定位到目录结构中,如下所示:

EyeLib
 L-Include
 |  L-PublicInterface.h
 L-Lib
 |  L-debug
 |  |   L-MyLib.lib
 |  |   L-MyLib.pdb
 |  L-release
 |      L-MyLib.lib
 L-MyLibConfig.cmake
Run Code Online (Sandbox Code Playgroud)

MyLibConfig.cmake文件非常简单,包含:

# the header file is relative to this cmake file, so get the path.
GET_FILENAME_COMPONENT( MyLib_TOPLEVEL_DIR ${CMAKE_CURRENT_LIST_FILE} PATH )
SET( MyLib_INCLUDE_DIR ${MyLib_TOPLEVEL_DIR}/include )

IF( WIN32 )
  FIND_LIBRARY( MyLib_DEBUG_LIBRARY MyLib ${MyLib_TOPLEVEL_DIR}/lib/debug )
  FIND_LIBRARY( MyLib_RELEASE_LIBRARY MyLib ${MyLib_TOPLEVEL_DIR}/lib/release )
  SET( MyLib_LIBRARIES optimized ${MyLib_RELEASE_LIBRARY} debug ${MyLib_DEBUG_LIBRARY} )
ENDIF( WIN32 )
IF( UNIX )
  FIND_LIBRARY( MyLib_LIBRARY MyLib ${MyLib_TOPLEVEL_DIR}/lib )
  SET( MyLib_LIBRARIES "${MyLib_LIBRARY}" )
  MARK_AS_ADVANCED( MyLib_LIBRARY …
Run Code Online (Sandbox Code Playgroud)

boost cmake static-libraries visual-studio visual-studio-2012

2
推荐指数
1
解决办法
8422
查看次数