我正在开发和作为Windows服务运行的应用程序.还有其他组件包括一些WCF服务,客户端GUI等 - 但它是访问数据库的Windows服务.
因此,该应用程序是一个长期运行的服务器,我想提高其性能和可伸缩性,我希望改善数据访问等.我发布了另一个关于二级缓存的帖子.
这篇文章是关于访问数据库的长期运行线程的会话管理.我应该使用线程静态上下文吗?如果是这样,是否有任何关于如何实施的例子.
网络上每个使用NHibernate的人似乎都非常关注Web应用程序风格的体系结构.对于非Web应用程序设计,似乎缺乏文档/讨论.
目前,我的长期运行线程执行此操作:
因此,以下是我们为每个DAO方法使用的常见模式:
对于DAO类的每个方法调用都会发生这种情况.我怀疑这是我们这样做的某种反模式.
但是,我无法在任何地方找到足够的方向来改进它.
请注意,虽然这个线程在后台运行,做其中的东西,有来自WCF客户端的请求,每个客户端可以自己进行2-3个DAO调用 - 有时查询/更新长时间运行的线程处理的相同对象.
任何有关改进我们设计的想法/建议/指示将不胜感激.如果我们能够进行一些很好的讨论,我们可以将它作为一个社区维基,并可能从http://nhibernate.info链接到这里
克里希纳
我正在实现一个安全的WCF服务.使用用户名/密码或Windows凭据进行身份验证.该服务托管在Windows服务进程中.现在,我正在尝试找出为每个服务操作实现授权的最佳方法.
例如,请考虑以下方法:
public EntityInfo GetEntityInfo(string entityId);
Run Code Online (Sandbox Code Playgroud)
您可能知道,在WCF中,有一个OperationContext对象,您可以从中检索调用方/客户端传入的安全凭据.现在,在调用方法的第一行时,身份验证已经完成.但是,如果决策取决于输入数据本身,我们如何实施授权?例如,在上述情况下,说'admin'用户(其权限等存储在数据库中),允许获取实体信息,不允许其他用户...我们在哪里进行授权检查?
假设我们把它放在方法的第一行,如下所示:
CheckAccessPermission(PermissionType.GetEntity, user, entityId) //user is pulled from the current OperationContext
Run Code Online (Sandbox Code Playgroud)
现在,有几个问题:
我们在授权检查之前验证entityId(例如检查null /空值等)还是INSIDE授权检查?换句话说,如果每个方法都应该包含授权检查,那么这是一个好的模式吗?哪个应该首先发生 - 参数验证或授权?
当授权检查遍布这样的地方时,我们如何对WCF服务进行单元测试,并且我们在单元测试中没有OperationContext!?(假设我试图在没有任何WCF设置的情况下直接测试这个服务类实现).
有什么想法吗?
我正在尝试使用AIR/ActionScript/Flex 4.5在SQLITE中重置自动增量字段的种子.
我正在做通常应该工作的事情:
DELETE FROM SQLITE_SEQUENCE WHERE NAME = 'myTable'
Run Code Online (Sandbox Code Playgroud)
我检查过数据库实际上包含一个SQLITE_SEQUENCE表.我可以通过Firefox SQLITE插件(SQLite Manager)直接执行上述语句而不会出现错误.
但是,当我尝试使用actionscript执行相同操作时,我收到错误:
没有这样的表'SQLITE_SEQUENCE'.
我在搜索周围找到的只有这一个人,他到处找到他能找到的地方 - 只留下没有答案: 这里 , 这里 和 这里
有任何想法吗?
我在LayoutAware页面上有一个弹出控件.
我真正想要的是弹出窗口填满屏幕.
我认为解决方案是使用Window.Current.Bounds.Height/Width来设置弹出控件内部网格上的相应属性.
我不想使用代码隐藏文件来设置这些属性.我希望能够绑定到XAML中的Window.Current.Bounds.Height.
我可以这样做吗?
有没有更好的方法让弹出窗口填满屏幕?
我正在尝试将DateTime?属性用作DependencyProperty,以便我可以在Metro风格的应用程序中将其绑定到XAML中.
但是,当应用程序运行时(在调试模式下),我收到绑定错误,并且日期不会显示在我的控件中:
错误:转换器无法将类型'System.DateTime,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的值转换为'DateTime>'; BindingExpression:Path ='Model.Date'DataItem ='MyProject.Common.ViewModel.TransactionViewModel,MyProject,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'; target元素是'MyProject.Controls.DatePicker'(Name ='null'); target属性为'SelectedValue'(类型'DateTime>').
依赖属性定义如下:
public static readonly DependencyProperty SelectedValueProperty =
DependencyProperty.Register("SelectedValue",
typeof (System.Nullable<System.DateTime>),
typeof(DatePicker),
PropertyMetadata.Create(default(DateTime?)));
Run Code Online (Sandbox Code Playgroud)
在XAML页面中,它用作:
<local:DatePicker
Margin="0,10"
SelectedValue="{Binding Model.Date, Mode=TwoWay}"
FontSize="21.333"/>
Run Code Online (Sandbox Code Playgroud)
有关如何解决这个问题的想法,并在控件中显示日期并绑定两种方式?
c# ×2
winrt-xaml ×2
xaml ×2
.net ×1
actionscript ×1
air ×1
nhibernate ×1
sqlite ×1
wcf ×1
windows-8 ×1