我目前正在开发一个 ASP.NET MVC 3 项目,并且正在 VS2010 上设置解决方案文件。
我不确定标准方法是什么。我正在使用以下方法
- Company.Dept.Data(包含 dbml 文件 - 数据模型)
- Company.Dept.Business(业务逻辑)
- Company.Dept.Web(包含 ASP.NET MVC3 网络应用程序)
前两个是类库,最后一个是 MVC3 Web 应用程序。还有什么推荐吗?
我目前正在开发一个 ASP.NET MVC 3 项目,并且正在 VS2010 上设置解决方案文件。
我不确定标准方法是什么。我正在使用以下方法
前两个是类库,最后一个是 MVC3 Web 应用程序。还有什么推荐吗?
没有单一的“标准”方法。这完全取决于您的项目以及您尝试使用该软件解决的问题。您提出的拥有 2 个类库和 1 个 Web 项目的结构是肯定的一种方法。
如果您打算使用控制反转容器进行任何类型的依赖注入,您可能还需要考虑为接口创建一个“API”项目,为实现接口契约的具体类创建一个“Impl(ementation)”项目。
呼应danludwig,确实没有标准。我更喜欢根据功能分解库和命名空间。Company.Db 是我用于与数据库交互的库,Company.Mail 是我围绕 Postmark 邮件服务的包装器,等等。
然后我倾向于将类似的库分组到单个存储库中。所以源代码控制中的“存储”存储库包含 Company.Db、Company.Caching、Company.FileStorage 等。我有另一个存储库“消息”包含 Company.Mail 和 Company.SMS(用于与 Twilio 交互以发送文本消息) . 当我使用新的应用程序或新服务(可能是移动客户端的 WCF 端点)进行分支时,我可以只下载“消息”存储库,并且我拥有所有用于与用户通信的类库。
一个应用程序看起来像
Company.Application.Webite
\Libraries\Messaging
\Libraries\Messaging\Company.Mail
\Libraries\Storage
\Libraries\Messaging\Company.Db
\Libraries\Messaging\Company.Caching
\Libraries\Web
...
Company.Application.Wcf
\Libraries\Messaging
\Libraries\Storage
\Libraries\Messaging\Company.Db
\Libraries\Messaging\Company.Caching
...
这样,无论是通过网站还是通过移动应用程序注册,Company.Mail.MailServices.SendWelcomeEmail() 都会发送完全相同的欢迎电子邮件,并且没有代码重复。
这是否适合您,甚至是否有意义,谁知道呢。我也改变了这个方案一百次,试图找到一个适合我的开发风格/工作流程的布局。我不会担心或压力太大,因为无论你选择什么,你都会找到你喜欢它的东西,你会找到你讨厌它的东西。我有时会陷入花更多时间试图让一切“完美”的陷阱,而不是仅仅编码和改变我不喜欢的东西。