有人可以向我解释使用IOC容器而不是简单地将默认实现硬编码到默认构造函数中的优势吗?
换句话说,这段代码有什么问题?
public class MyClass
{
private IMyInterface _myInterface;
public MyClass()
{
_myInterface = new DefaultMyInterface();
}
public MyClass(IMyInterface myInterface)
{
_myInterface = myInterface;
}
}
Run Code Online (Sandbox Code Playgroud)
据我所知,这个类足够支持构造函数注入,因此可以轻松完成单元测试和模拟.除此之外,默认构造函数移除了IOC容器的计算开销(更不用说整个过程更加透明).
我可以看到使用IOC容器的唯一好处是,如果您需要经常切换接口的实现.我错过了什么吗?
关于对象关系映射器有很多信息以及如何最好地避免阻抗不匹配,如果使用对象数据库,所有这些似乎都没有实际意义.我的问题是为什么不经常使用这个?是因为性能原因还是因为对象数据库导致您的数据成为应用程序的专有数据,还是因为其他原因?
我真的很喜欢拥有"漂亮"的URL(例如/Products/Edit/1代替/products.aspx?productID=1),但我对于如何为可以通过大量变量搜索的页面执行此操作感到茫然.
例如,假设您有一个页面,允许用户搜索具有特定名称且靠近特定地址的特定类型的所有产品.你会用很长的"漂亮"网址做到这一点吗?
/Products/Search/Type/{producttype}/Name/{name}/Address/{address}
Run Code Online (Sandbox Code Playgroud)
或者只是使用url params
/Products/Search?productType={producttype}&name={name}&address={address}
Run Code Online (Sandbox Code Playgroud) 假设我有一个简单的ASP.NET MVC博客应用程序,我想允许读者在博客文章中添加评论.如果我想阻止任何类型的XSS恶作剧,我可以对所有注释进行HTML编码,以便在渲染时它们变得无害.但是,如果我想要一些基本功能,如超链接,粗体,斜体等,该怎么办?
我知道的StackOverflow使用大规模杀伤性武器降价编辑器,这似乎是一个伟大的选择.我想要去实现,如果不是因为它支持的事实,双方的HTML和降价这离开它开放的XSS攻击.
假设我有一个控制器动作,用于删除用户购物篮中的某个项目.通过对url~/delete/{id}执行POST来触发此控制器操作.如果我的应用程序上有多个页面将发布到此URL,我该如何构建控制器操作以重定向回发布到它的页面?
我有一个域名,可以很好地使用.it域名(例如redd.it).这适用于我正在构建的Web应用程序,如果它可以为美国的公司带来收入.这是允许的吗?
我正在使用地理编码器 gem为我的一个Active Record模型类添加地理编码功能.这很好用,但我实际上并不希望在单元测试期间触发地理编码.
我已经尝试通过将其添加到我的RSpec测试来删除对地理编码的调用:
before(:each)之前做
User.stub!(:geocode).and_return([1,1])结束
但是,当我运行我的测试时,它仍然似乎在呼唤地理编码.我究竟做错了什么?
仅供参考,如果我在实例级别存根(例如some_user.stub!而不是User.stub!),这一切都有效.
是否有开发人员通常遵循的特定模式?在我的Web应用程序中,我从未真正考虑过它,但ASP.NET MVC路由引擎几乎迫使您至少考虑它.
到目前为止,我已经喜欢控制器/动作/索引结构(例如Products/Edit/1),但我正在努力处理更复杂的网址.
例如,假设您有一个页面列出了用户在其帐户中拥有的所有产品.你会怎么做?在我的脑海中,我可以想到列表页面和编辑页面的以下可能性:
我相信还有很多其他人我都不知道.有什么建议?
假设您有两个表,"Users"和"UserRoles".以下是两个表的结构(表 - 列):
用户 - UserID(int)
UserRoles - UserID(int),角色(字符串)
我想要的是我的域中的"用户"类具有IList角色.如何构建我的Fluent NHibernate映射来实现这一目标?
asp.net-mvc ×3
asp.net ×2
routing ×2
.net ×1
database ×1
domain-name ×1
geocode ×1
nhibernate ×1
oop ×1
rdbms ×1
relational ×1
rspec ×1
ruby ×1
security ×1
stubbing ×1
timeout ×1
url ×1
xss ×1