小编Ste*_*ven的帖子

Xamarin,Autofac,NavigationService和BeginLifetimeScope

在xamarin应用程序中,有关使用autofac的lifescopescope以及何时使用它们的初学者问题。

如本文所述(https://nblumhardt.com/2011/01/an-autofac-lifetime-primer/),autofac文档(http://docs.autofac.org/en/latest/ (lifetime /),他们在不从根容器中解决问题,而是使用单独的lifescope并根据工作单位进行思考的过程中付出了很多努力,因为autofac保留了对一次性对象的引用,即使它们不再使用,直到它们被创建的范围都被废弃为止,因此存在内存泄漏的危险。

但是,在开发Xamarin应用程序并查找示例时,我找不到这种用法的示例,也没有想到将IoC容器用作服务定位器anitpattern,何时使用?(https://xamarinforms.wordpress.com/tag/dependency-injection/

这些文章展示了一个“最佳实践”示例,该示例在xamarin应用程序中设置导航并解析必要的视图模型,并将其设置为与页面的绑定上下文:https : //developer.xamarin.com/guides/xamarin-forms/enterprise-application- pattern / navigation /https://developer.xamarin.com/guides/xamarin-forms/enterprise-application-patterns/mvvm/#automatically_creating_a_view_model_with_a_view_model_locator 不知道这是xamarin形式的最佳实践还是最佳方法。

但是,当这些视图模型由autofac实例化并且这些模型之一依赖于可抛弃的类时,会发生什么呢?

当请求viewModel时,将解析一个与页面匹配的新实例,并将其放在导航堆栈中。因此,在浏览页面时,堆栈变得越来越大,autofac会保留对所有一次性对象的引用,并且在应用程序的生命周期中(所有内容都可以从主容器中解析出来,没有使用单独的作用域)可能会持续很长时间。这里有遇到内存问题的风险吗?如果仍然存在引用这些未使用对象的风险,何时将所有这些未使用对象收集为垃圾?可能我对这实际上是如何工作缺少某种理解,或者在用法上犯了一个错误,但请注意https://developer.xamarin.com/guides/xamarin-forms/enterprise-application-patterns/navigation/中的InternalNavigateToAsync方法 只是导航到另一个页面时将页面添加到堆栈中。

PS。在侧面说明,这看起来不错(scope.Resolve):

using(var scope = container.BeginLifetimeScope())
{
  for(var i = 0; i < 100; i++)
  {
    var w = scope.Resolve<Worker>();
    w.DoWork();
  }
}
Run Code Online (Sandbox Code Playgroud)

并且来自(http://docs.autofac.org/en/latest/register/registration.html和其他一些地方。):

using(var scope = container.BeginLifetimeScope())
{
  var reader = container.Resolve<IConfigReader>();
}
Run Code Online (Sandbox Code Playgroud)

是在autofac文档中使用的,我想这最后一个是错字了吗?(container.Resolve而不是scope.Reslove,它周围有一个useless(?)范围块,无论如何在这个范围块内从主容器中解析...

dependency-injection autofac object-lifetime xamarin

5
推荐指数
1
解决办法
573
查看次数

Web引用配置问题

我正在努力如何配置网址引用的URL.

情况就是这样.我有:旧的asp.net webservices <----- c#项目编译成dll <-----引用dll的网站(c#项目以前不在那里,但我将所有代码重构为一个单独的项目)

因此,网站代码调用c#项目的代码来获取结果,然后调用Web服务.

在c#项目中添加Web引用时,我输入了webservices的URL位置(http://192.168.10.1/TestServices.asmx?wsdl.然后生成包含webservices的url的app.config文件.

如果我将Web引用设置为静态,则不应使用配置,这是有效的.现在,如果我将web引用设置为动态,则应该使用配置,但由于这是一个正在编译为dll的项目,并且该网站没有app.config,而是我将配置从app.config设置为my web.config appSettings节点,我将URL更改为另一个Web服务(http://192.168.10.2/TestServices.asmx.

在c#项目中添加Web引用时,网站仍然会从Web引用指向的旧URL获取结果,因此看起来在URL Behavious设置为Dynamic时未使用配置设置.

我可能在这里错过了一些微不足道的东西吗?

这是app.config中的内容:

<applicationSettings>
     <XXXX.Properties.Settings>
      <setting name="XXXX_TestServices_TestServices" serializeAs="String">
       <value>http://192.168.10.1/TestServices.asmx</value>
      </setting>
     </XXXX.Properties.Settings>
    </applicationSettings>
Run Code Online (Sandbox Code Playgroud)

这是我放在web.config中的内容:

<appSettings>
     <add key="XXXX_TestServices_TestServices" value="http://192.168.10.2/TestServices.asmx" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)

所以,现在它总是有趣和信息/教育当在问题的打字和双重检查和搜索相关的问题,你最终自己解决问题..无论如何我发布它的答案,因为我没有找到一个确切的答案通过结合其他2个问题和博客文章.

web-services web-reference web-config asmx

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

Application Insights 采样会采样掉异常吗?

应用程序见解采样文档 ( https://learn.microsoft.com/en-us/azure/application-insights/app-insights-sampling ) 声明如下:

“例如,如果您的应用程序针对失败的请求发送额外的遥测项目(例如从此请求记录的异常和跟踪),则采样不会拆分此请求和其他遥测数据。它要么将它们全部保留或丢弃。”

很难想象,但这是否意味着如果采样算法需要减少正在完成的日志记录量,则某些异常或导致异常的更好请求可能会被忽略并且不会被记录?我发现很难将其放在正确的上下文中,只是开始了解应用程序并尝试找出所有可能性。我知道这对于过滤掉性能指标等遥测百分比非常有价值,但对于例如实际的 webapi 请求..?

我已经读过这个问题,但我的疑问仍然存在: Azure App Insights Sampling (ItemCount)

azure azure-application-insights

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