问题标签 [web-architecture]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - .NET Entity framework 项目布局(架构)
我正在尝试确定如何最好地构建 .NET 实体框架项目以实现良好的分层方法。到目前为止,我已经在一个玩家拥有和操作行星的基于浏览的游戏中进行了尝试。这就是我得到它的方式:
网站
这包含所有的前端。
C# 项目 - MLS.Game.Data
这包含带有我所有数据映射的 EDMX 文件。这里不多。
C# 项目 - MLS.Game.Business
这包含我称之为“经理”的各种类,例如 PlanetManager.cs。行星管理器具有各种用于与行星交互的静态方法,例如getPlanet(int planetID),它将从 MLS.Game.Data 返回生成的代码对象。
从网站上,我会做这样的事情:
var planet = PlanetManager.getPlanet(1);
它从 MLS.Game.Data(从 EDMX 生成)返回一个Planet对象。它有效,但它在一定程度上困扰着我,因为这意味着我的前端必须引用 MLS.Game.Data。我一直觉得 GUI 应该只需要引用业务项目。
此外,我发现我的 Manager 课程往往会变得非常繁重。我最终会得到几十个静态方法。
所以......我的问题是 - 其他人如何布置他们的 ASP EF 项目?
编辑
不过,再过一些之后,还有一些让我烦恼的东西。例如,假设我有我的 Planet 对象,它也是由向导生成的代码。如果有一天我的星球需要有一个专门的属性,比如说“人口”,它是基于星球对象的其他属性的某种计算。我想创建一个继承自 Planet 的新类然后返回它吗?(嗯,我想知道这些类是否被 EF 密封?)
谢谢
javascript - 使用 AJAX/JSON 提供静态 HTML 和生成内容有什么好处?
http://blog.urbantastic.com/post/81336210/tech-tuesday-the-fiddly-bits
Urbantastic 的 Heath 描述了他的 HTML 生成系统:
Urbantastic 中的所有 HTML 都是完全静态的。所有动态数据都通过 AJAX 以 JSON 格式发送,然后使用 Javascript 与 HTML 结合。换句话说,Urbantastic 的服务器软件专门生产和消费 JSON。HTML、CSS、Javascript 和图像都通过不同的服务(普通 Nginx 服务器)发送。
我认为这是一个有趣的模型,因为它在物理上将表示与数据分开。我不是架构专家,但似乎效率和稳定性会有所提高。
但是,以下问题与我有关:
[主观] Clojure 非常强大;Javascript 不是。在为另一个目标创建的语言上编写所有内容生成会产生一些痛苦(想象用 CSS 编写 Javascript 类型的代码)。除非他有一个用于生成 Javascript 的宏系统,否则 Heath 可能会在 JavaScript 和 Clojure 之间不断切换。他还会有很多JS代码;可能比 Clojure 更多。在切换到基于 LISP 的语言时,这在功能、快速开发、简洁性以及我们正在考虑的所有方面可能并不好。
[性能] 我对此不确定,但在用户机器上渲染所有内容可能会滞后。
[可访问性] 如果您禁用了 JS,则根本无法使用站点。
[accessibility#2] 我怀疑大量使用 JavaScript 填充的动态数据会产生跨浏览器问题。
任何人都可以发表评论吗?我有兴趣阅读您对这种架构的意见。
参考:
web-architecture - 您如何构建您的网站内容?
您是否尝试保持简单并有一个根文件夹,然后有一个用于图像、javascript、flash 等的文件夹?您通常如何称呼您的文件夹?你给你的文件命名约定吗?
architecture - 使用 IBM Websphere、IBM Http Server、Load Balancer(或 Dispacher)构建场
您是否知道网页或 pdf 或任何书籍来学习如何构建这些产品以创建农场?
此外,任何通用的 Web 应用程序场架构最佳实践资源都值得赞赏......
我想了解高度可用和可扩展的 Web 架构,尤其是使用 IBM 产品...
hibernate - Web架构:MVC、延迟初始化、数据传输对象、Open Session In View,有没有共识的方法?
对于典型的 Web 3 层应用程序,您在以下设计中看到了哪些缺陷(以及您理想的架构建议)?
我目前的蓝图方法是非常粗略的(假设 Java、Spring、Hibernate、JSP)
控制器
无状态,可能用只读事务包装(以避免惰性初始化异常),仅通过服务从持久存储中获取实体,将它们作为模型传递给视图。对它们进行业务逻辑(BL应该只在服务层吗?),如果需要,传递回服务层进行持久化。
优点:对于只读事务包装 - 只有一个连接,同一个持久实体没有冗余命中,更好地利用查询缓存,服务层不应该“知道”请求参数或所需的初始化图跨度,避免惰性初始化异常。
缺点:只读事务方法可能有风险,控制器不是理想的业务逻辑悬挂场所......很难做 JUnits(你的输入是一个请求......)
看法
非事务性(访问非惰性集合/成员将导致惰性初始化异常)
优点:
视图作者不应仅仅通过点符号来影响应用程序的性能(例如,由于延迟初始化大型集合而导致 N+1 选择。
同样在断开连接的客户端(Flex 或其他富客户端)中,远程延迟初始化要么不受支持,要么不明智
缺点:控制器/服务/DAO 必须为视图仔细准备正确的实体图,并且可能会过冲(性能)/下冲(惰性初始化异常)。无数的服务器端方法可能会导致混乱,因为对于可以初始化实体图的排列数量存在笛卡尔积
模型
按原样使用持久对象(无数据传输对象),状态保存在会话中。
优点:无需重写 POJO,重用现有实体,会话状态比隐藏字段状态处理更安全。
缺点:对断开连接的框架不利,保存陈旧断开连接对象的风险,锁定问题的风险,覆盖其他数据,有时需要乐观锁定。
服务
事务性的,不知道请求范围,调用 DAO 层进行实际的持久化存储访问。这是 BL 通常应该在的地方,但似乎 BL 一遍又一遍地泄漏到控制器端。
道
包含原子持久化存储门面,不知道 BL,或任何上下文
最后,问题:
你会在上述架构中修复什么?
您是否(像我一样)认为这是一种相当普遍的方法(有一些细微差别,例如开放会话等)?或者这是您第一次看到它并且我正在做一些非常错误(或正确)的事情?
你如何在你的应用程序中解决它?您是否也将实体 POJO 用于您的模型和视图?还是将其连接到更简单的 UI bean(全部已完全初始化且安全)?
这可能是一个主观问题,但我确信有明确的最佳实践设计模式可以聚集到最多一个、两个或三个一般“宗教”。
url - 在网络上路由 mvc
我想知道是否有人可以就如何改进应用程序每个“部分”的路由(和/或架构)提供一些建议。(我正在用 PHP5 编写,并尝试使用严格的 MVC)
基本上,我有一个应用程序的通用索引页面,它会喷出 jquery 和 css 等样板文件,它还会为整个站点生成主要导航,但我不确定连接的最佳方法“主菜单”项(超链接)及其关联的控制器。到目前为止,我一直在将字符串附加到 url 中,并使用“switch”语句通过从“$GET[]”中提取字符串来分支到正确的控制器(和视图),让它执行对应的代码行动。例如,如果我有一个用于客户数据的基本 crud 系统,则编辑客户详细信息的 url 看起来像“www.example.com/index.php?page=customer&action=edit&id=4”。
我担心这样做会带来安全问题,并且我不确定在用户单击链接后将主“index.php”文件分支到每个操作的正确控制器的替代方法。
使用 mod_rewrite 来伪装控制器名称会更好吗?或者创建一个类似于 ASP MVC 框架的系统,其中有一个单独的路由系统,每个 url 都被过滤以获取关联的控制器?
干杯!
web-farm - Web 场中的 Web 应用程序体系结构
我知道当从单个 Web 服务器移动到两个或更多 Web 服务器时,Web 应用程序会发生一些变化。但在架构上,向服务器场添加更多服务器时是否需要考虑其他任何更改?我知道随着场中服务器的增多,部署会变得更加复杂。我问是因为不久前在一次采访中,有人担心我没有足够的经验来处理大型网络农场。三台服务器大约是我使用过的最大的服务器。
css - 类似站点之间共享的目录中的通用共享 CSS JS 文件?
背景信息:我有一个托管多个网站的 ISS6 网络服务器。我有大约 15 个域可以被视为共享样式、布局等的“姐妹”站点,但它们仍然会有自己的自定义样式。(除了这些基本站点,我还没有创建任何东西)
因此问题是:由于每个站点的大部分 CSS 和 JS 将是相同的,有哪些方法可以在同一 IIS 服务器上的站点之间共享一个公共的主 CSS 和 JS 目录?
我知道我可以在其中一个域上托管这个通用文件的主目录,并从那里托管它,但这似乎不是最优雅的选择。或者我也可以为每个域提供自己的 CSS 和 JS 文件的个人副本,这可能是最糟糕的选择。
我不使用任何版本控制软件或 Visual Studio,只使用 notepad++,所以我不太关心在开发人员之间共享文件。
感谢您的任何意见。
orm - 是否建议制作一个 Web 程序来连接与数据库无关的层?
我以前是 Winforms 程序员;我总是将我编写的程序分为两部分,前端(Winforms)和中间层(由 Remoting/WCF 促进)
在这种方法中,前端代码无法访问 Linq 或 System.Data.SqlClient。但这还有一个额外的优势,即中间层是即时 SOA 公民(面向服务的架构),可用于 B2B 场景,与数据库无关,并且支持互联网,即使它只是一个 Winforms 应用程序。
现在我正在学习网络技能。使用 Pro ASP.NET MVC 一书中的 SportsStore 项目,我不可避免地会比较我的旧(?)方法(中间层)和那本书上的存储库方法。存储库方法直接在前端(SportsStore.WubUI)上公开数据访问机制(Linq to SQL)。使用存储库方法,SportsStore.WebUI 仍然可以直接连接到数据库。
问题是,在 Web 程序上,我是否应该希望前端只与中间层接口(因此前端可以与数据库无关,而中间层是即时 SOA 公民),还是我应该在前端直接使用数据库(通过存储库方法、ORM 或类似方法)?
asp.net-mvc - 页面控制器模式到底是什么?
Page-Controller 模式(如使用 Microsoft .NET 的企业解决方案模式中描述的 MVC 模式的改进)基本上是简单 URI 页面请求的模式(即 URI + 表单提交 + 查询字符串);ASP的基本上?或者它是更复杂的东西。
任何人?