这可能是一个错误的问题,但是,在asp.net Web应用程序上复制大量负载的最佳方法是什么?有没有简单的方法来模拟特定页面上的许多请求?或者最好是使用分析器跟踪单个请求,然后在性能良好的情况下解决这个问题?
了解Web应用程序与服务器规范的协作效果会很好.我希望能够在我的测试服务器上模拟大量流量,这样我就可以确定生产服务器是否足够好(特别是使用iis/asp.net而不是db性能).
我正在与存储库进行一些努力.我正在使用C#和NHibernate.我的问题是:我的存储库在调用save或get之前应该做多少?
例如,我有一个用户类,它是一个聚合根.我想调用一个名为"register"的方法,它将添加用户并根据业务规则设置一些默认值,并创建一些其他实体,这些实体也是"用户"根的子部分(即地址,组等).我应该打电话吗?
userRepo.Register(newUser);
Run Code Online (Sandbox Code Playgroud)
这将是(忽略明显的问题):
Regsiter(User newUser){
newUser.SomeProp = "Default Data";
Group g= new Group;
g.SomeProp2 = "Default Data";
newUser.Groups.Add(g);
Session.Save(g);
Session.Save(newUser);
}
Run Code Online (Sandbox Code Playgroud)
或者我应该将注册放在业务层中并让它做:
Regsiter(User newUser){
newUser.SomeProp = "Default Data";
Group g= new Group;
g.SomeProp2 = "Default Data";
newUser.Groups.Add(g);
userRepo.Register(newUser, g);// this does session.save on both objects.
}
Run Code Online (Sandbox Code Playgroud)
两者似乎都有些错误.
什么是正确的方法?
编辑-------------------------------
感谢所有的回复.我不能决定谁是最合适的,因此接受哪个答案.
通常每个人都在说将业务规则放在另一层.这是有道理的,但我不确定组的数据调用 - 因为组不是聚合根,他们不应该有自己的存储库,所以我如何添加和保存它们?在我的项目中,将一个组添加到用户的组集合中不会自动在数据库中创建该组; 我还需要在对象上调用session.save.所以我把它作为userRepo.SaveGroup(g)放入用户仓库?
如果我在另一个层中有一个createGroup(),那么它将需要使用它自己的repo或用户.还是我很厚?
c# nhibernate domain-driven-design repository repository-pattern