我有一个ASP.Net应用程序,它第一次访问时需要非常长的时间来启动.我做了一些跟踪,发现这个函数花了57秒:
Boolean System.Web.Compilation.WebDirectoryBatchCompiler.CompileNonDependentBuildProviders(ICollection)
而该功能依次调用以下一个6次:
Void System.Web.Compilation.WebDirectoryBatchCompiler.CompileAssemblyBuilder(AssemblyBuilder)
我的问题是System.Web.Compilation.WebDirectoryBatchCompiler.CompileAssemblyBuilder做什么的?我的Web应用程序已经编译好了,我不知道它为什么要在启动时进行任何类型的编译工作.这是正常的吗?有什么事我不知道吗?
有没有办法通过反射在JavaScript中调用对象上的函数(或属性)?
让我们说在运行期间,我的代码已经确定objectFoo确实有一个名为'bar'的属性.现在我的代码知道了,接下来要做的就是调用它.通常我会这样做:var x = objectFoo.bar.但是'bar'是在运行时确定的,所以我需要使用反射来调用它.
请参阅我的示例代码:
var testObject = new SomeClass();
using (testObject)
{
//At this point how can the testObject implicitly know
//if it is placed inside a 'using' scope?
// In other words, how can testObject know that
// .SomeAction() is being called from within a 'using' scope?
testObject.someAction();
}
Run Code Online (Sandbox Code Playgroud) 现在使用Adobe,您可以将Flash/Flex编译到iPhone和iPad.与MonoTouch相比如何?
Adobe解决方案是否真的编译为本机iOS代码?或者它只是一个运行代码的iOS Air容器,它能够通过Air容器访问natife iOS调用?我想知道Adobe与MonoTouch相比有什么不同.
我只是想知道这两种技术之间的差异.如果有的话.或者它们原则上的工作方式完全相同.
我正在开发一个C#程序,需要加载一些javascript代码,解析它并对代码中的字符串文字进行一些处理(比如用其他东西覆盖它们).
我的问题是,我很难设计一种优雅的方法来首先在javascript代码中找到字符串文字.
例如,看看下面的示例javascript代码.你是否看到Stack Overflow的代码highliter甚至能够在代码中挑选出字符串文字,并使它们变成红色?
我想基本上做同样的事情,除了我不会将它们变成不同的颜色,但我会对它们进行一些处理,并可能用完全不同的字符串文字替换它.
var dp = {
sh : // dp.sh
{
Utils : {}, // dp.sh.Utils
Brushes : {}, // dp.sh.Brushes
Strings : {},
Version : '1.3.0'
}
};
dp.sh.Strings = {
AboutDialog : '<html><head><title>About...</title></head><body class="dp-about"><table cellspacing="0"><tr><td class="copy"><p class="title">dp.SyntaxHighlighter</div><div class="para">Version: {V}</p><p><a href="http://www.dreamprojections.com/syntaxhighlighter/?ref=about" target="_blank">http://www.dreamprojections.com/SyntaxHighlighter</a></p>©2004-2005 Alex Gorbatchev. All right reserved.</td></tr><tr><td class="footer"><input type="button" class="close" value="OK" onClick="window.close()"/></td></tr></table></body></html>',
// tools
ExpandCode : '+ expand code',
ViewPlain : 'view plain',
Print : 'print',
CopyToClipboard : 'copy to clipboard',
About : '?', …Run Code Online (Sandbox Code Playgroud) 是否有一个Windows工具可用于检查通过特定ODBC数据源的任何SQL命令?
我们有一种情况,我们在 API 上调用一个相当昂贵的函数。让我们称之为API.ExpensiveCall()
这ExpensiveCall()在 Web 应用程序中经常被调用。虽然对于一个用户来说并不明显,但当您有 5 个左右的用户同时使用时,它会变得明显。
我们想缓存这些结果。但由于API.ExpensiveCall()对我们来说本质上是一个黑匣子,我们无法使缓存无效,知道何时刷新。
所以我们提出的解决方案是创建一个 Windows 服务,它会简单地API.ExpensiveCall()每十秒调用一次,然后将结果保存到 Web 应用程序已经在使用的本地数据库中。
这样无论网站上有 1 个用户还是 20+ 个用户都没有关系,ExpensiveCall()每 10 秒只调用一次。它是API.ExpensiveCall()所连接的外部系统上非常受控制的负载。
问题
我们的项目经理不同意这一点。出于某种原因,他认为每 10 秒定时刷新是一个坏主意,因为在他看来,这会给外部系统带来太多负载。
但是,如果我们对此不采取任何措施,并且保持原样而不进行任何缓存,则不仅会降低 Web 应用程序的性能,而且肯定会在外部造成每秒超过 1 次的 ExpensiveCall系统。这个数字会随着 Web 应用程序上的用户数量成倍增加。
我想问你这种缓存方式真的很糟糕吗?您是否听说过其他系统使用这种缓存方法?如果这是一个坏主意,当系统对您来说是一个黑匣子时,是否有其他更好的方法来缓存系统的结果?
编辑:
您的回复似乎表明我应该使用 ASP.Net 的内存缓存机制的超时功能。
我喜欢超时的想法。我现在看到的唯一(小)问题是,当超时到期并且是时候调用 ExpensiveCall() 时,它将成为阻塞调用。与查询本地表相反,本地表通过在单独的进程中不断刷新来保持最新。这是我觉得投票想法很有吸引力的地方。尽管我必须承认每 10 秒进行一次轮询确实感觉很奇怪,这就是为什么我对此持观望态度。
我想知道ServiceStack注册路由的最佳做法是什么.
我已经阅读了一些在AppHost中这样做的地方,因为它将路线定义与DTO分离.但我看到的大多数例子都是使用装饰器模式.
哪个更好?是否有任何争论使用一个而不是另一个?
在我的设计中,我有从数据库中获取实体的Repository类(它是如何做的并不重要).但是为了将实体保存回数据库,使存储库也这样做是否有意义?或者更有意义的是创建另一个类(例如UnitOfWork),并让它有责任通过让它接受实体来保存东西,并通过调用save()它来告诉它继续前进并发挥它的魔力?
使用声明为类的字段而不是本地范围的锁定对象之间有区别吗?
例如:使用lockObject1或lockObject2以下示例之间是否有区别?
public class Test()
{
private Object lockObject1 = new Object();
public void FooBar()
{
lock(lockObject1)
{
//Thread safe area 1
}
var lockObject2 = new Object();
lock(lockObject2)
{
//Thread safe area 2
}
}
}
Run Code Online (Sandbox Code Playgroud)
似乎大多数示例似乎总是瞥见所选锁定对象的范围的重要性.
asp.net ×3
c# ×3
javascript ×2
.net ×1
adobe ×1
apache-flex ×1
caching ×1
iis ×1
ios ×1
locking ×1
odbc ×1
parsing ×1
reflection ×1
servicestack ×1
sql ×1
windows ×1
xamarin.ios ×1