我正在分析一个潜在的大型网站,我有很多问题.

该网站将使用剃刀视图引擎在ASP.NET MVC 3中编写.在大多数示例中,我发现控制器直接使用底层数据库(使用域/存储库模式),因此之间没有WCF服务.我的第一个问题是:这个架构适合大型交通网站吗?总是可以平衡网站,但这是一个好的方法吗?还是应该让网站使用与数据交互的WCF服务?

问题2:我想采用CQS原则,这意味着我想将查询与命令部分分开.因此,这意味着查询部分将具有与命令部分不同的模型(针对视图进行了优化)(针对业务意图进行了优化,并且仅包含完成命令所需的属性),但都是作用于同一数据库.你认为这是一个好主意吗?

感谢您的建议!

解决方法

>对于可扩展性,它有助于将后端代码与前端代码分开.因此,如果您将UI代码放在MVC项目中以及在一个或多个单独的WCF和业务逻辑项目中尽可能多的处理代码,那么您的代码不仅可以更清晰,而且您还可以独立于每个层次其他.
> CQRS对于高流量网站来说非常棒.我认为CQRS与DDD良好的基础库相结合,即使是低流量网站也是很好的,因为它使业务逻辑更容易实现.将数据分离成读取优化模型和写入优化模型从架构角度来看也是有意义的,因为它使得更改变得更容易(也许更多的工作,但是在不破坏某些东西的情况下进行更改肯定更容易).

但是,如果两者都在同一个数据库上,我将确保读取模型完全由视图组成,以便您可以根据需要修改实体,而不会破坏读取代码.这样做的优点是您需要编写更少的代码,但是您的写入模型仍将包含一个完整的实体模型,而不仅仅是一个事件存储.

编辑回答您的额外问题:

我喜欢做的是为阅读模型使用WCF数据服务.该技术(特定于.NET 4.0)在数据模型(如Entity Framework EDMX)之上构建了一个OData(=具有LINQ支持的REST Atom)Web服务.

所以,我在sql Server(Views)中构建一个Read模型,然后从中构建一个实体框架模型,然后在只读模式下构建一个WCF数据服务.这听起来比它复杂得多,只需要几分钟.您不需要创建另一个模型,只是将EDMX公开为只读.参见http://msdn.microsoft.com/en-us/library/cc668794.aspx.

命令服务只是一个单向的常规WCF服务,读取服务是WCF数据服务,您的MVC应用程序也同时使用它们.

c# – ASP.NET MVC应用程序的架构的更多相关文章

  1. ios – Xcode 9架构x86_64的未定义符号

    先谢谢你的帮助.解决方法陷入类似的问题.只需在此处发布,以防它可以帮助任何人.在我们的应用程序的Objective-c类B中使用来自框架的类AbcService.从Xcode8/Swift3升级到Xcode9/Swift4后,由于未定义的符号,它无法为发布配置构建存档链接期间此类的错误:奇怪的是,它可以存档调试配置,并在模拟器中运行.花了差不多1天才找出根本原因:框架中的Swift类AbcService缺少一个公共修饰符.

  2. ios – Xcode 7.1 PrototypeTools链接器错误(仅限模拟器)

    我正在尝试使用Xcode7.1在iOS模拟器中运行我的应用程序,但我收到链接器错误.这是错误:clang:错误:链接器命令失败,退出代码为1这似乎是一个新问题,因为我在升级到新的Xcode之前没有它.我在Google上搜索过,但是这个问题几乎没有相关主题.有趣的是,该应用程序在设备上运行良好.我已经尝试重置模拟器并再次清洁/建造,但两者都没有奏效.有没有其他人遇到过这个问题,你能提供什么建议吗?

  3. xcode – 这是什么意思:架构的未定义符号x86_64“_main”

    在Xcode上构建我的应用程序时,我不断收到错误:我的代码没有错误,错误是奇怪的错误,我做的任何事情都无法解决.我不认为该代码与问题相关,因为它在错误中未被引用.这是错误的屏幕截图.解决方法链接器无法在主swift入口点的链接过程中找到任何文件.这可能是由于文件在项目中根本不存在,或者它存在但尚未包含在编译或链接构建阶段.在Swift中,主要的快速入口点在主要的SWF模块中定义,或者在AppDel

  4. ios – 当架构设置为64位时,图像不显示

    任何线索?

  5. iOS,ld:framework没有找到适用于架构arm64的GoogleMaps

    Podfile看起来像这个Cocoapodsv1.0beta6):解决方法更新请检查您是否在架构中具有相同的构建设置,并仅构建活动体系结构中的目标键你的podfile应该是这样的在您启动ProjectTest目标之前结束项目目标,也是为什么添加继承!

  6. ios – Zbar SDK – 缺少必需的架构x86_64

    在最近的Xcode5.1中,我在构建应用程序时遇到了一个问题.编译失败,出现“未定义的架构x86_64符号”错误.我使用有效架构构建我的项目:armv7,armv7s和arm64.在切换到最新的环境(Xcode)后,我在同一个架构中重新构建了libzbar.a库(我已经根据在LinkerErrorinXcode-5处找到的解决方案)也许有人也有同样的问题,最后他解决了,请分享解决方案:)解决方法我

  7. ios – Appstore FailureNo架构在二进制文件中. Lipo未能检测到bundle可执行文件中的任何架构.“在SoftwareAssets / SoftwareAsset

    嗨,我刚刚尝试将我的应用程式上传到应用程式商店,但失败了.****解决方法嗨,我很高兴我找到了答案.问题实际上是在info.plist中的“Productname”.在我的第一个版本是不同的.

  8. Xcode 8警告:没有规则处理类型为net.daringfireball.markdown的架构x86_64的文件

    我在Xcode8中得到上述警告,用于我的可可卡源源码中的CHANGELOG.md文件.如何清除?解决方法>选择ProjectNavigator>选择你的项目>选择您的目标>选择构建阶段>移动文件,您不希望编译器从编译源处理以复制捆绑资源

  9. iOS可用架构问题

    我对iOS构建设置中可用的体系结构有点困惑.我发现有4种类型:>i386>armv6>armv7>armv7s.我知道i386用于模拟器,armv6用于iOS设备.但我对armv7和armv7s感到困惑.1)armv7和armv7s有什么区别?2)基于armv7和armv7s架构的应用程序是否支持较旧的iOS版本?

  10. ios – ld:xx架构armv7 Xcode项目的重复符号

    大家好我有一个Xcode项目,每次我尝试构建项目时都会给我这个错误:ld:xx架构armv7Xcode项目的重复符号clang:错误:链接器命令失败,退出代码1…我已经google了,大多数解决方案说要摆脱在中的重复文件构建阶段–>编译项目的资源部分或在某些文件中将导入.m更改为.h.问题是编译资源列表甚至没有排序,我甚至不知道要修复哪些文件,因为我的项目中有很多文件.关于如何清理它的任何建议?

随机推荐

  1. c# – (wpf)Application.Current.Resources vs FindResource

    所以,我正在使用C#中的WPF创建一个GUI.它看起来像这样:它现在还没有完成.这两行是我尝试制作一种数据表,它们在XAML中是硬编码的.现在,我正在C#中实现添加新的水果按钮功能.我在XAML中有以下样式来控制行的背景图像应该是什么样子:因此,在代码中,我为每列col0,col1和col2创建一个图像,如果我使用以下代码,它添加了一个如下所示的新行:如你所见,它不太正确……为什么一个似乎忽略了一些属性而另一个没有?

  2. c# – 绑定DataGridTemplateColumn

    似乎我已经打了个墙,试图在DataGrid上使用DataTemplates.我想要做的是使用一个模板来显示每个单元格的两行文本.但是似乎无法以任何方式绑定列.以下代码希望显示我想做的事情.注意每个列的绑定:模板列没有这样的东西,因此,这个xaml不可能工作.我注定要将整个DataTemplate复制到每个列,只是对每个副本都有不同的约束?解决方法我不完全确定你想要做什么,但如果您需要获取整行的DataContext,可以使用RelativeSource绑定来移动视觉树.像这样:

  3. c# – 学习设计模式的资源

    最近我来到了这个设计模式的概念,并对此感到非常热情.你能建议一些帮助我深入设计模式的资源吗?

  4. c# – 是否有支持嵌入HTML页面的跨操作系统GUI框架?

    我想开发一个桌面应用程序来使用跨系统,是否有一个GUI框架,允许我为所有3个平台编写一次代码,并具有完全可脚本化的嵌入式Web组件?我需要它有一个API来在应用程序和网页之间进行交流.我知道C#,JavaScript和一些python.解决方法Qt有这样的事情QWebView.

  5. c# – 通过字符串在对象图中查找属性

    我试图使用任意字符串访问嵌套类结构的各个部分.给出以下(设计的)类:我想要从Person对象的一个实例的“PersonsAddress.HousePhone.Number”获取对象.目前我正在使用反思来做一些简单的递归查找,但是我希望有一些忍者有更好的想法.作为参考,这里是我开发的(crappy)方法:解决方法您可以简单地使用标准的.NETDataBinder.EvalMethod,像这样:

  6. c# – 文件下载后更新页面

    FamilyID=0a391abd-25c1-4fc0-919f-b21f31ab88b7&displaylang=en&pf=true它呈现该页面,然后使用以下元刷新标签来实际向用户提供要下载的文件:你可能需要在你的应用程序中做类似的事情.但是,如果您真的有兴趣在文件完全下载后执行某些操作,那么您的运气不佳,因为没有任何事件可以与浏览器进行通信.执行此操作的唯一方法是上传附件时使用的AJAXupload.

  7. c# – 如何在每个机器应用程序中实现单个实例?

    我必须限制我的.net4WPF应用程序,以便每台机器只能运行一次.请注意,我说每个机器,而不是每个会话.我使用一个简单的互斥体实现单实例应用程序,直到现在,但不幸的是,这样一个互斥是每个会话.有没有办法创建机器互连,还是有其他解决方案来实现每个机器应用程序的单个实例?

  8. c# – WCF和多个主机头

    我的雇主网站有多个主机名,都是同一个服务器,我们只是显示不同的皮肤来进行品牌宣传.不幸的是,在这种情况下,WCF似乎不能很好地工作.我试过overridingthedefaulthostwithacustomhostfactory.这不是一个可以接受的解决方案,因为它需要从所有主机工作,而不仅仅是1.我也看过thisblogpost,但是我无法让它工作,或者不是为了解决我的问题.我得到的错误是“这

  9. c# – ASP.NET MVC模型绑定与表单元素名称中的虚线

    我一直在搜索互联网,试图找到一种方式来容纳我的表单元素的破折号到ASP.NET的控制器在MVC2,3或甚至4中的默认模型绑定行为.作为一名前端开发人员,我更喜欢在我的CSS中使用camelCase或下划线进行破折号.在我的标记中,我想要做的是这样的:在控制器中,我会传入一个C#对象,看起来像这样:有没有办法通过一些正则表达式或其他行为来扩展Controller类来适应这种情况?我讨厌这样的事实,我必须这样做:甚至这个:思考?

  10. c# – 用户界面设计工具

    我正在寻找一个用户界面设计工具来显示文档中可能的GUI.我不能生成代码.我知道MicrosoftVisio提供了一个功能.但有什么办法吗?您使用哪种软件可视化GUI?

返回
顶部