使用ActiveRecord,您可以定义这样的类:
class Contact
{
private String _name;
public String Name
{
get { return _name; }
set
{
if (value == String.IsNullOrWhiteSpace())
throw new ArgumentException(...);
else
_name = value;
}
}
public Boolean Validate() { ... /* check Name is unique in DB */ }
public Boolean Save() { ... }
public static List<Contact> Load() { ... }
}
Run Code Online (Sandbox Code Playgroud)
虽然这很简单,但我发现我的课程变得非常臃肿,伴随着大量的逻辑组合!
使用分层/域设计,您可以定义相同的类,如:
class Contact
{
[Required(AllowEmptyStrings=false)]
public String Name { get; set; }
}
class ContactService : IService
{
public List<Contact> …Run Code Online (Sandbox Code Playgroud) 我已经讨论了一段时间了,但仍然没有得出结论.虽然我看到大多数示例都在应用程序层中有工厂代码,但我倾向于认为它应该在域层中.原因:我有时会在我的工厂进行初步验证,我希望所有对象的创建都能通过.我希望此代码可用于我的对象的所有实例化.有时,操作需要感觉不自然的参数信息传递给构造函数.还有一些不那么重要的原因.
有没有理由说这是一种不好的做法?这会破坏其他模式吗?
c# design-patterns domain-driven-design architectural-patterns
在MVC中," 模型 "只是数据的代码表示(例如,在ASP.NET MVC中,它是具有相应字段的类).
然而在Knockout(使用MVVM)中,我看到带有字段的对象称为"ViewModel".从官方KO文件:
模型:应用程序的存储数据.此数据表示业务域中的对象和操作(例如,可以执行汇款的银行帐户),并且独立于任何UI.使用KO时,通常会对某些服务器端代码进行Ajax调用,以读取和写入此存储的模型数据.
视图模型:UI上数据和操作的纯代码表示.例如,如果您正在实现列表编辑器,则视图模型将是一个包含项列表的对象,并公开添加和删除项的方法.
从示例中可以看出,ViewModel是具有字段的对象,包含数据,通常由Model在MVC中完成的操作:
var myViewModel = {
personName: ko.observable('Bob'),
personAge: ko.observable(123)
};
Run Code Online (Sandbox Code Playgroud)
所以我在这里有点失落.什么'模型'和'ViewModel'在Knockout.js域中意味着什么?
javascript model-view-controller architectural-patterns mvvm knockout.js
我的问题:
是否有一种普遍接受的设计模式可以用来实现这一目标?
但是你可以理解,我希望尽量减少这种变化带来的复杂性.
顺便说一下,我的应用程序是一个ASP.NET MVC 2应用程序,所以如果我可以利用任何现有的基础设施,那将是很好的.
编辑:我正在使用表单身份验证.
编辑:我还需要跟踪超级用户代表另一个用户行事的事实.我需要这样做有两个原因:
编辑: @Jordão提出了一个主要可行的解决方案.我唯一担心的是 - 如果超级用户(模仿另一个用户)导航到主屏幕,并且屏幕顶部显示'Hello [User]',我希望它说'Hello [模拟用户]'为反对'你好[超级用户]'.而且我担心@Jordão的解决方案会使这个屏幕和其他具有类似要求的屏幕的实现变得更加复杂.
impersonation design-patterns web-applications architectural-patterns asp.net-mvc-2
背景: 我已经考虑了很长一段时间了,我还没有找到任何好的答案.在使用WebForms工作了一段时间并定期使用MVC 2,3和4后,我仍然不明白ASP.NET MVC如何声称是MVC模式的实现.
我学习MVC(模式)的第一件事就是它是循环的 - 这意味着View使用Controller更新模型来更新视图 - 这样它就可以循环播放.当然,用户在圈子中输入新的指令/数据等.
但是,ASP.NET MVC实际上并不是一个循环实现,在W3CSchools下面的彩色图像中很好地证明了这一点.我在实践中也看到过这种情况,其中View具有Model的实例,并且Model从Controller更新,但Controller也负责在模型更新后更新View.
问题: ASP.NET MVC是否被有意识地错误地实现,是否应该只被视为专有解释或者我是否误解了MVC模式的规则?

asp.net model-view-controller asp.net-mvc architectural-patterns
我们正在构建一个基于微服务的平台。该平台将提供许多将用于各种独立项目的基本功能。我们需要提出这样一种架构,使我们能够扩展基本功能并与现有服务进行交互。主要任务是确保主要服务的代码保持不变,并且基于平台的自定义解决方案可以轻松复用。
我们正在考虑几种选择。例如,有一个服务“foo”提供了函数 foo1 和 foo2。为了扩展功能,我们可以创建一个独立的“foobar”服务并将其放在foo服务的前面,接受API请求,执行自定义函数,然后将请求重定向到foo。它是一种中介服务,它充当特定项目和主平台特定功能实现的主要环节。这种方法的优势可以归因于完全独立于基本服务的代码库。而主要的缺点是实现的复杂性和需要对主要服务的功能进行极大的碎片化。
正在考虑的第二个选项类似于单体应用程序中经常使用的方法 - 钩子系统,它允许您覆盖系统的行为。例如,您可以创建一个独立的服务来连接事件和订阅者。这种方式比较灵活,但同时实现起来还是比较困难的。这种方法的主要缺点是同步阻塞网络调用。
我们正在考虑的第三个选项是构建微服务本身,这样可以向它们添加额外的模块,以便可以在构建阶段定制服务。主要代码保持不变,但在流程内部,实现了已经提到的钩子和事件方案(在单个服务的代码级别)。好处是易于实施。在缺点中,在涉及多个服务的情况下很难实现定制。
也许我们正在尝试发明一辆自行车,并且有很好的解决方案。如果您知道这样,或者您对解决此问题的可能方法有很好的想法,请分享。
architecture networking design-patterns architectural-patterns microservices
CQRS和CRUD有什么不同,我可以在两种情况下使用UnitOfWork和Repository模式吗?
如果我推荐给你的那个人之间有一个复杂的关系,为什么?
CQRS模式:http ://martinfowler.com/bliki/CQRS.html
CRUD:http://en.wikipedia.org/wiki/Create,_read,_update_and_delete
任何帮助将不胜感激.
architecture entity-framework architectural-patterns sharp-architecture
我最近进入了函数式编程,并且学习了几种以引用透明的方式处理某些副作用的方法:
但是现在大多数“真实世界”的应用程序都与外部系统(如 Web 服务、数据库等)交互,这些系统可以由多个用户同时修改,它们有状态、长时间运行的操作等。所以情况并不那么简单如上述类别:向系统询问实体的状态或试图控制它的结果取决于其状态。此外,交互性也是一个要求:有一些用户可以任意点击的 GUI,也许我们还必须自动对来自系统的变化做出反应。
通过最大化纯函数的好处来设计和实现此类应用程序的模式是什么?或者上面的一些方法可以以我没有想到的方式应用于这个问题吗?该语言(例如 Java 或 Scala)不会强制执行 100% 纯度,因此我对由实践经验支持的实用解决方案感兴趣。
functional-programming architectural-patterns referential-transparency
目前,我正在开发一个利用多层体系结构的项目,如Application Architecture Guide 2.0中所述,它具有5个层(DAL,BLL,Facade,表示层和公共层)。
在这里,我们有一个业务逻辑层,它由业务组件和业务实体(它们是使用O / R映射器生成的实体)组成,通常我们需要在表示层中使用该实体来绑定数据并将其呈现给用户,因此我们会对这些实体进行气泡处理直到其他层的Presentation层。
现在的问题是:
这是正确的方法吗?(据我的定义,如果我们应该共享这些内容,则应将它们放置在“公共层”中,以便可以在所有层中使用它们)。我们不应该将这些实体移到公共层吗?还是我们应该定义诸如数据传输对象(DTO)之类的东西,然后将它们传递给各层(当然这似乎是多余的)。
任何澄清将不胜感激。
architecture entities business-logic-layer architectural-patterns
我刚刚开始使用android开发,我正在尝试开发我的第一个应用程序,我实际上要发布它.我有Java的编程背景和一些模式的知识但是我不知道在开发Android应用程序时我应该坚持哪些模式.还有把线放到哪里.我正在开发一个应用程序,它通过PHP脚本不断地从远程数据库加载数据并在UI上显示它们.我将应用程序划分为几层 - 表示层,域层/服务层和数据源层.在他们之间我创建了外观来访问下面的层的服务.根据其他一些模式,我真的不知道我是否应该坚持这个结构或完全重建这个应用程序.最好在开发开始时找到它,而不是在以后强制重建整个应用程序.
architecture ×4
activerecord ×1
android ×1
asp.net ×1
asp.net-mvc ×1
c# ×1
entities ×1
javascript ×1
knockout.js ×1
mvvm ×1
networking ×1