小编Kri*_*hna的帖子

Windows服务应用程序中的NHibernate会话管理

我正在开发和作为Windows服务运行的应用程序.还有其他组件包括一些WCF服务,客户端GUI等 - 但它是访问数据库的Windows服务.

因此,该应用程序是一个长期运行的服务器,我想提高其性能和可伸缩性,我希望改善数据访问等.我发布了另一个关于二级缓存的帖子.

这篇文章是关于访问数据库的长期运行线程的会话管理.我应该使用线程静态上下文吗?如果是这样,是否有任何关于如何实施的例子.

网络上每个使用NHibernate的人似乎都非常关注Web应用程序风格的体系结构.对于非Web应用程序设计,似乎缺乏文档/讨论.

目前,我的长期运行线程执行此操作:

  1. 调用3或4个DAO方法
  2. 验证返回的分离对象的状态.
  3. 如果需要,更新状态.
  4. 调用几个DAO方法来持久化更新的实例.(传入对象的id和实例本身 - DAO将再次从DB中检索对象,并在提交事务之前设置更新的值和session.SaveOrUpdate().
  5. 睡觉'n'秒
  6. 重复一遍!

因此,以下是我们为每个DAO方法使用的常见模式:

  • 使用sessionFactory.OpenSession()打开会话
  • 开始交易
  • db工作.检索/更新等
  • 提交trans
  • (例外情况下的回滚)
  • 最后总是处理事务和session.Close()

对于DAO类的每个方法调用都会发生这种情况.我怀疑这是我们这样做的某种反模式.

但是,我无法在任何地方找到足够的方向来改进它.

请注意,虽然这个线程在后台运行,做其中的东西,有来自WCF客户端的请求,每个客户端可以自己进行2-3个DAO调用 - 有时查询/更新长时间运行的线程处理的相同对象.

任何有关改进我们设计的想法/建议/指示将不胜感激.如果我们能够进行一些很好的讨论,我们可以将它作为一个社区维基,并可能从http://nhibernate.info链接到这里

克里希纳

nhibernate

12
推荐指数
1
解决办法
6038
查看次数

WCF服务授权模式

我正在实现一个安全的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)

现在,有几个问题:

  1. 我们在授权检查之前验证entityId(例如检查null /空值等)还是INSIDE授权检查?换句话说,如果每个方法都应该包含授权检查,那么这是一个好的模式吗?哪个应该首先发生 - 参数验证或授权?

  2. 当授权检查遍布这样的地方时,我们如何对WCF服务进行单元测试,并且我们在单元测试中没有OperationContext!?(假设我试图在没有任何WCF设置的情况下直接测试这个服务类实现).

有什么想法吗?

.net c# wcf authorization

7
推荐指数
3
解决办法
1万
查看次数

AIR/Actionscript中没有这样的表SQLITE_SEQUENCE

我正在尝试使用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'.

我在搜索周围找到的只有这一个人,他到处找到他能找到的地方 - 只留下没有答案: 这里 , 这里这里

有任何想法吗?

air sqlite actionscript actionscript-3

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

绑定到XAML中的Window.Current.Bounds.Width

我在LayoutAware页面上有一个弹出控件.

我真正想要的是弹出窗口填满屏幕.

我认为解决方案是使用Window.Current.Bounds.Height/Width来设置弹出控件内部网格上的相应属性.

我不想使用代码隐藏文件来设置这些属性.我希望能够绑定到XAML中的Window.Current.Bounds.Height.

我可以这样做吗?

有没有更好的方法让弹出窗口填满屏幕?

xaml microsoft-metro windows-runtime winrt-xaml

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

我们可以将Nullable <DateTime>用作XAML中的DependencyProperty用于Metro风格的应用程序

我正在尝试将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# xaml microsoft-metro windows-8 winrt-xaml

3
推荐指数
1
解决办法
1635
查看次数