我刚刚发现,ASP.Net Web应用程序中的每个请求在请求开始时都会获得一个Session锁,然后在请求结束时释放它!
如果这对你造成影响,就像我一开始对你而言,这基本上意味着以下几点:
任何时候ASP.Net网页需要很长时间才能加载(可能是由于数据库调用速度慢等),并且用户决定他们想要导航到另一个页面,因为他们厌倦了等待,他们不能!ASP.Net会话锁强制新页面请求等待,直到原始请求完成其缓慢的负载.Arrrgh.
任何时候UpdatePanel加载缓慢,并且用户决定在UpdatePanel完成更新之前导航到另一个页面......他们不能!ASP.net会话锁强制新页面请求等待原始请求完成其缓慢的负载.双Arrrgh!
那有什么选择呢?到目前为止,我想出了:
我真的不敢相信ASP.Net微软团队会在版本4.0的框架中留下如此巨大的性能瓶颈!我错过了一些明显的东西吗 为会话使用ThreadSafe集合有多难?
我刚刚开始研究.Net 4.0中新的"System.Threading.Tasks"的好处,并且想知道是否有任何构建支持限制一次运行的并发任务的数量,或者是否应该手动处理.
EG:如果我需要调用100次计算方法,有没有办法设置100个任务,但只有5个同时执行?答案可能只是创建5个任务,调用Task.WaitAny,并在前一个任务完成时创建一个新任务.我只是想确保如果有更好的方法,我不会错过任何一招.
基本上,有没有内置的方法来做到这一点:
Dim taskArray() = {New Task(Function() DoComputation1()),
New Task(Function() DoComputation2()),
...
New Task(Function() DoComputation100())}
Dim maxConcurrentThreads As Integer = 5
RunAllTasks(taskArray, maxConcurrentThreads)
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
我是MVC的新手.据我所知:
业务逻辑在哪里?
获取大型企业应用程序:
MVC Web应用程序在此基础上(在代码和项目结构方面)的适当方式是什么?
我已经看到模型文件夹中的所有内容的示例似乎不适合非常大的应用程序.
谢谢你的建议!
我想将PartialView呈现为HTML字符串,以便将其返回到SignalR ajax请求.
就像是:
SignalR Hub(mySignalHub.cs)
public class mySignalRHub: Hub
{
public string getTableHTML()
{
return PartialView("_MyTablePartialView", GetDataItems()) // *How is it possible to do this*
}
}
Run Code Online (Sandbox Code Playgroud)
Razor PartialView(_MyTablePartialView.cshtml)
@model IEnumerable<DataItem>
<table>
<tbody>
@foreach (var dataItem in Model)
{
<tr>
<td>@dataItem.Value1</td>
<td>@dataItem.Value2</td>
</tr>
}
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
HTML(MySignalRWebPage.html)
<Script>
...
//Get HTML from SignalR function call
var tableHtml = $.connection.mySignalRHub.getTableHTML();
//Inject into div
$('#tableContainer).html(tableHtml);
</Script>
<div id="tableContainer"></div>
Run Code Online (Sandbox Code Playgroud)
我的问题是我似乎无法在Controller之外渲染PartialView.甚至可以在Controller外部渲染PartialView吗?能够利用Razor附带的令人敬畏的HTML生成能力将是非常好的.
我错了吗?还有另外一种方法吗?
我们目前正在评估CQRS和事件采购架构.我试图了解使用这种设计的维护含义是什么.我正在努力寻找答案的两个问题是:
1)如果在应用程序启动并运行一段时间后,有新的要求在ReadModel数据库上向ViewModel添加其他字段会发生什么?比如,CustomerList ViewModel上需要Customer Zip Code,而以前不是.因此,可以轻松地将额外列添加到ViewModel数据库,但是如何填充这些列?据我所知,唯一的方法是清除读取数据库,并从头开始重放所有事件以构建备份ReadModel数据库.但是,如果应用程序已启动并运行数月或数年(我们希望如此),该怎么办?这可能是数百万个要重播的事件,只是为了添加zipcode列的数据.
如果由于任何技术原因,ReadModel数据库不同步,或者我们想要添加新的ReadModel数据库,我也会有同样的担忧.看起来应用程序的版本越旧,使用的越多,更难和更昂贵的是获得最新的readmodel.或者我在某个地方错过了一招?像ReadModel快照一样?
2)如果在重放所有数百万个事件以构建备份读取数据库之后会发生什么,一些数据与预期不符(即看起来不对).据认为,在事件存储或非规范化例程中某处可能存在错误可能导致这种情况(似乎如果在编码中有一件事可以依赖,那就是错误).怎么去调试这个!这似乎是一项不可能的任务.或许,再次,我错过了一个技巧.
我有兴趣听到任何一直在运行这样的系统的人,以及维护和升级路径如何为您解决.
感谢您的任何时间和意见.
我对可用的SQL Server服务数组感到非常困惑,并且很难找到简短的入门读物.
我是一名很长时间的ASP.Net开发人员,他多年来一直在生产ASP.Net应用程序.这些通常基于SQL服务器和一系列自定义表和视图.
就在最近,我有必要做一些超越直接的报告,所以我开始研究SQL Server Reporting Services(SSRS).这样做我觉得我打开了潘多拉的盒子.
有报告服务,集成服务,分析服务,商业智能等等.这让我想知道他们都做了什么,如果我能(或应该)利用这些工具来做一些繁重的工作.net应用.
我对微软的直接研究工作扼杀了我难以理解的营销和业务发言.我搜索过的谷歌没有全面了解这些工具是什么,或者它们是否相互配合,甚至不应该使用哪种工具.我理解这些选项的最大问题之一是它们对我来说似乎都是一样的!
所以,所有这一切都说,如果某种鞋底可以让我直截了当并指出我正确的方向,我将非常感激:)
sql-server ssas reporting reporting-services business-intelligence
有没有办法不使用linqtosql获取特定列而不必使用匿名类型并单独指定每个返回的文件?
我们使用SQLMetal生成dbml文件,该文件包含将查询数据结果放入其中的所有类型.但是,当linq查询中包含select列时,结果将转换为匿名类型,而不是dbml文件中声明的类型.我想从特定表中选择除一个列之外的所有列,但仍然在相关的dbml类型中返回结果.
任何想法都赞赏.
当然,当然,有一种方法可以配置.Net HttpWebRequest对象,以便在调用HttpWebRequest.GetResponse()并返回任何300或400状态代码时不会引发异常?
Jon Skeet 不这么认为,所以我几乎不敢问,但我发现很难相信没有办法解决这个问题.在某些情况下,300和400响应代码是有效的响应.为什么我们总是被迫承担例外的开销?
也许有一些模糊的配置设置逃避了Jon Skeet?也许有一种完全不同类型的请求对象可以使用但没有这种行为?
(是的,我知道你可以抓住异常并从中获得响应,但我想找到一种不必要的方法).
谢谢你的帮助
我刚刚开始第一次制作自定义MSBuild脚本.我看到有两个标准选项可用于扩展功能:MSBuild Extension Pack和MSBuild社区任务.
我正在寻找一些关于这些之间存在差异的指导,以及为什么我会使用其中一个,甚至两个.我用Bing搜索了Bing,但看不到树木的木头.任何指导赞赏.
.net msbuild build-automation msbuildcommunitytasks msbuildextensionpack
我有一个使用DualHttpBindings回调的wcf服务.该服务在找到它们时将客户端(用于长时间运行的搜索)的搜索结果数据推回.
这在.Net 3.5中运行良好.自从我更新到.Net 4.0以来,它实际上杀死了一个实际上杀死了IIS工作进程的System.Runtime.FatalException.我不知道如何开始解决这个问题.任何建议表示赞赏
结果事件日志中的信息粘贴在下面:
发生未处理的异常,并终止该过程.
应用ID:/ LM/W3SVC/2/ROOT/CP
进程ID:5284
>异常:System.Runtime.FatalException
>消息:对象引用未设置为对象的实例.
堆栈跟踪:System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc&rpc)at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc&rpc)at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)at System.ServiceModel.Dispatcher. System.Runtime.Fx上System.ServiceModel.Dispatcher.ChannelHandler.AsyncMessagePump(IAsyncResult结果)的System.ServiceModel.Dispatcher.ChannelHandler.HandleRequest(RequestContext请求,OperationContext currentOperationContext)上的ChannelHandler.DispatchAndReleasePump(RequestContext请求,Boolean cleanThread,OperationContext currentOperationContext) System.Runtime.AsyncResult上的.AsyncThunk.UnhandledExceptionFrame(IAsyncResult结果).在System.Runtime.InputQueue中完成(Boolean completedSynchronously)
1.AsyncQueueReader.Set(Item item) at System.Runtime.InputQueue1.Disatch()位于System.ServiceModel.Channels.ReliableDuplexSessionChannel.ProcessDuplexMessage(WsrmMessageInfo info)中的System.ServiceModel.Channels.ReliableDuplexSessionChannel.HandleReceiveComplete(IAsyncResult结果),位于System的System.ServiceModel.Channels.ReliableDuplexSessionChannel.OnReceiveCompletedStatic(IAsyncResult结果).位于System.ServiceModel.Channels.ReliableChannelBinder的System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)上的Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult结果)System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame上的1.InputAsyncResultOnInputComplete(IAsyncResult结果)(IAsyncResult) System.Runtime.InputQueue上的System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)1.AsyncQueueReader.Set(Item item) at System.Runtime.InputQueue1.Disatch()在System.Runtime.IOThreadScheduler.ScheduledOverlapped.IOCallback(UInt32 errorCode,UInt32 numBytes,NativeOverlapped*nativeOverlapped)
处于System.Runtime.Fx.IOCompletionThunk.UnhandledExceptionFrame(UInt32错误,UInt32 bytesRead,NativeOverlapped*nativeOverlapped)
. Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode,UInt32 numBytes,NativeOverlapped*pOVERLAP)> InnerException: > System.NullReferenceException
消息:对象引用未设置为对象的实例.
StackTrace:位于System.Web.AmpNet上的System.Web.HttpApplication.ThreadContext.Enter(Boolean setImpersonationContext)中的System.Web.HttpApplication.OnThreadEnterPrivate(Boolean setImpersonationContext),位于System.Web.AspNetSynchronizationContext的System.Web.AspNetSynchronizationContext.CallCallbackPossiblyUnderLock(SendOrPostCallback回调,对象状态).System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc&rpc)中的 CallCallback(SendOrPostCallback回调,对象状态 )
.net ×5
architecture ×3
asp.net ×3
asp.net-mvc ×2
exception ×2
iis ×2
c# ×1
cqrs ×1
linq ×1
linq-to-sql ×1
msbuild ×1
performance ×1
reporting ×1
session ×1
signalr ×1
sql-server ×1
sqlmetal ×1
ssas ×1
task ×1
wcf ×1