我想将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
我正在寻找有关如何扩展当前在我公司运行的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)
今天Windows服务我们几乎没有管理16核服务器上的负载(我不记得完整的规格,但可以肯定地说这台机器是野兽).我的任务是寻找扩展和添加更多机器的方法,这些机器将处理所有这些数据而不会干扰其他实例.
目前,每个Message都有自己的Thread并处理相关报告.我们批量处理报告,按其MessageId分组,以便在处理数据时将数据库查询的数量减少到最少.
限制
我正在寻找有关如何构建此类项目的任何意见或建议.我假设服务需要是无状态的,还是有办法以某种方式同步所有实例的缓存?我应该如何在所有实例之间进行协调,并确保它们不处理相同的数据?如何在它们之间平均分配负载?当然,如何处理实例崩溃而不完成它的工作?
编辑
删除了无关的信息
我最近在查看包装类并用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.它是什么以及如何更多地研究这种语法?
我仍处于 Node.js 和 Moongoose 的学习阶段,我有一个场景
我的逻辑:
article.owner = User.findOne({ 'name' : 'ABC' })
.exec(function (err, user){
return user
})
Run Code Online (Sandbox Code Playgroud)
但它没有返回结果。我参考了其他一些答案并尝试过,async.parallel但我仍然无法在文章架构中保存 ABC 用户的 objectID,因为article.owner我总是为空。
请建议我任何其他更好的方法。
我有一个名为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)
我认为一定有聪明的方法.你能就此提出建议吗?
谢谢
我有一个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.
我正在使用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)
网格第一次打开很好。但是,当我单击任何页码时,网格就会消失。
请帮我!提前致谢
我有一个调用数据库的方法,如下所示:
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()将在一个单独的线程上调用,这样它就不会阻塞并继续处理其他东西.
任何帮助表示赞赏.
我正在尝试构建一个静态库,作为网络设备的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