我有各种不同的方法,它们都需要在继续自己的实现之前执行相同的功能。现在我可以在每个方法中实现这些功能,但我想知道是否有一种方法可以利用attributes来做到这一点?举一个非常简单的例子,所有的网络调用都必须检查网络连接。publicvoidGetPage(stringurl){if(IsNetworkConnected())...else...}这可行,但我必须为每个使用网络的方法调用IsNetworkConnected方法并单独处理它。相反,我想这样做[NetworkCall]publicvoidGetPage(stringurl){...}如果网络不可用,则调用错误方法并忽略G
问这个问题的原因是我一直想知道如何将所有这些不同的概念拼接在一起。有很多关于DDD、依赖注入(inject)、CQRS、SOA、MVC的示例和讨论,但关于如何以灵活的方式将它们组合在一起的示例并不多。我的目标:开发无需修改或无需修改即可独立运行的模块更改或重新设计UI应该尽可能简单(即UI应该尽可能少做,并且“愚蠢”使用记录在案的模式和原则为了更容易提出具体问题,主要架构现在看起来像这样:该示例显示了如何向员工添加备注。员工管理是一种有界上下文。员工有几个属性,其中一个ICollection.绑定(bind)上下文在我的理解中,分离代码的逻辑位置。每个BC都是一个模块。大多数时候,我发
我们其中一款产品的架构是典型的3层解决方案:C#客户端WCF网络服务SQLServer数据库客户端从网络服务请求信息。Web服务访问数据库以获取信息并将其返回给客户端。问题来了。其中一些查询可能需要很长时间,而且我们事先不知道哪些查询会很慢。我们知道有些请求通常比其他请求慢,但如果有足够的数据,即使是最简单的请求也可能很慢。有时使用查询或运行大量数据的报告。在大量数据减慢查询速度之前,查询只能优化到目前为止。如果数据库中的查询达到SQLServer中的最大查询超时,数据库查询将终止,Web服务将错误返回给客户端。这是明白的。我们可以处理这些错误。客户端正在等待网络服务调用完成。如果数据
几周前我开始了一个WinForms项目,因为我真的不知道我想要什么功能,所以我只是一路添加它们。这现在造成了一个可怕的困惑,我的MainForm是一个大泥球,例如一些重要的状态更改是由UI元素触发的,以至于我必须调用控件的OnChange事件才能更改数据库中的某些状态.简而言之:我刚刚开始了一个新项目,我想在其中采用更好的方法。我只是不知道哪个是“好”的。在ASP.netMVC中,我发现MVVM模式非常有用,但在桌面上,MVVM似乎只适用于WPF,不适用于WinForms。另一种方法是三层架构:我有我的数据库类,它目前直接与UI对话。我现在创建一个新的静态类(“ApplicationS
我们当前的项目遇到了循环依赖问题。我们的业务逻辑程序集正在使用SharedLibrary程序集中的类和静态方法。SharedLibrary包含一大堆辅助函数,例如SQLReader类、枚举器、全局变量、错误处理、日志记录和验证。SharedLibrary需要访问Business对象,但Business对象需要访问SharedLibrary。老开发者通过复制共享库中业务对象的功能解决了这种明显的代码味道(非常反DRY)。我已经花了一天时间尝试阅读有关解决此问题的选项,但我走到了死胡同。我对重新设计架构的想法持开放态度,但只是作为最后的手段。那么我怎样才能拥有一个可以访问业务对象的共享助手
我的数据库中有几个产品表:产品类型产品类别产品类别项目产品库存按照我现在的看法,我可以制作IProduct,它具有以下方法:查找所有类型()FindAllCategories(inttypeId)FindAllItems(intcategoryId)或者,我可以将它们分开以模仿表结构:IProductType、IProductCategory等。是否有一个比另一个更好的理由? 最佳答案 存储库的理念是将每个存储库的责任委派给单个实体。在这种情况下,建议为每个实体创建一个存储库。您也可以选择大型存储库,但这不是最佳解决方案。最后,您将
我正在考虑两种不同的类设计来处理一些存储库是只读的而其他存储库是可读写的情况。(我预计不需要只写存储库。)类设计1--在基类中提供所有功能,然后在子类中公开适用的功能publicabstractclassRepositoryBase{protectedvirtualvoidSelectBase(){//implementation...}protectedvirtualvoidInsertBase(){//implementation...}protectedvirtualvoidUpdateBase(){//implementation...}protectedvirtualvoid
关闭。这个问题需要更多focused.它目前不接受答案。想改善这个问题吗?更新问题,使其仅关注一个问题editingthispost.3年前关闭。Improvethisquestion我正在为内部客户开发应用程序。其中一项要求是,它的开发方式使其有可能被出售给其他组织。该应用程序是一个筹款组织的跟踪应用程序,该组织将管理他们的捐赠、捐助者、参与者和事件。我已经知道我需要开发一个用于身份验证的插件架构(授权将在内部处理)并从外部目录中获取人口统计数据。该应用程序将构建在ASP.NET/C#/Linq/SQLServer上。在这一点上,我并不是真的愿意支持替代数据库,但我认为如果有必要,我
在为我的ASP.NET项目实现存储库模式时,我遇到了一些无法解决的问题。所以我有几个关于如何以正确的方式实现存储库模式的问题。根据我的经验,我认为只有在我的应用程序中没有行为的类/模型,在它们的存储库旁边并不是好的OOP。但是,这就是我实现存储库模式的方式。我只是在任何需要存储库实例的地方制作,以执行一些操作。这种方法的结果是我所有的域类都没有行为。它们只是没有方法的保存数据的对象。我的老师对我说,我用的是瘦模型,我应该努力做胖模型。作为对该反馈的回应,我在类中实现了一些业务逻辑,但遇到了一些问题:场景:我的User类有一个Friends列表,其中包含User对象,代表某个用户的fri
假设我们在数据模型中有四个实体:Categories、Books、Authors和BookPages。还假设Categories-Books、Books-Authors和Books-BookPages关系是一对多的。如果从数据库中检索类别实体实例——包括“Books”、“Books.BookPages”和“Books.Authors”——这将成为一个严重的性能问题。此外,不包括它们将导致“对象引用未设置为对象的实例”异常。使用多个Include方法调用的最佳实践是什么?编写单个方法GetCategoryById并将所有项目包含在其中(性能问题)编写单个方法GetCategoryById