Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用聚合物构建ASP.NET MVC_Asp.net_Asp.net Mvc_Asp.net Core_Polymer 1.0 - Fatal编程技术网

使用聚合物构建ASP.NET MVC

使用聚合物构建ASP.NET MVC,asp.net,asp.net-mvc,asp.net-core,polymer-1.0,Asp.net,Asp.net Mvc,Asp.net Core,Polymer 1.0,我已经使用ASP.NET MVC和Polymer构建了3个应用程序,但我总是遇到同样的架构问题 目前,如果我想将MVC视图与Polymer webcomponents分开,我最终得到的结构如下: - wwwroot - bower_components (polymer) - elements (my components) - View (my views) - Controllers (my controllers) 然后,如果我必须解析特定视图,例如: 我将以如下方式结束:

我已经使用ASP.NET MVC和Polymer构建了3个应用程序,但我总是遇到同样的架构问题

目前,如果我想将MVC视图与Polymer webcomponents分开,我最终得到的结构如下:

 - wwwroot
  - bower_components (polymer)
  - elements (my components)
 - View (my views)
 - Controllers (my controllers)
然后,如果我必须解析特定视图,例如: 我将以如下方式结束:

 - Controller > Home
 - Action > Index
 - View > Index.cshtml
 - Element > paper-page-index.html
从我的Index.cshtml

<!-- import the element -->
<link rel="import" href=".../paper-page-index.html" />
<!-- render the element and pass properties -->
<paper-page-index first-name="@Model.FirstName"></paper-page-index>

问题是,我必须将ViewModel的每个属性传递到自定义元素中,这会变得非常冗长,有时甚至令人厌烦。 正确的方法应该是什么?每个.cshtml视图都应该被视为一个web组件,停止创建web组件本身并将其包含到my.cshtml页面中?或者我应该像Martin Fowler说的那样有两种GET方法:

  • 检索我的视图(Controller/Action/.cshtml页面)的一次获取
  • 可以从MVC中检索ViewModel
另外,我的表示逻辑应该只到我的聚合元素中,还是也到我的C#ViewModels中


有什么线索吗?

最后,我决定以这种方式构建项目:

后端

  • asp.net内核
  • 暴露REST方法的控制器
  • 使用asp.net标识进行安全保护
前端

  • “前端API”的asp.net核心
  • 聚合物的标准“静态页面”
  • 聚合物视图的标准“元素”结构
视图“按原样”提供,然后向“前端”API请求相应的表示模型。然后,如果需要数据存储/lucene中的数据,它将查询httprest端点

这代表了M.Fowler的“两步视图”架构模式,如下所述:

优势

  • 我仍然可以使用ASP.NET标识和OAuth保护整个前端静态内容
  • 我可以利用聚合物构建,因为聚合物和剃须刀之间没有严格的关系
  • 我可以将UI、表示逻辑和业务逻辑完全分为3个不同的区域

或许您应该抛弃MVC,在水疗应用中使用聚合物作为支撑层。C#用于后端,聚合物用于前端。这将是一个更干净、更易于维护的体系结构。我甚至建议将代码存储为两个不同的repo(前端,api)。完全删除wwwroot和Views文件夹。事实上-仅作为API启动项目。或者更好,使用.NETCore。是的,比你不把东西混在一起要好。此外,它还为移动应用程序等扩展/使用这些相同的API提供了可能性。如今,这是一种趋势。我不会从.NET提供静态HTML,我只会使用一些简单的HTTP“测试”服务器进行测试,而使用nginx/caddy/iis/apache/任何其他工具进行生产。如果你只是提供静态文件,为什么要使用杠杆.NET呢?如果你真的需要保护HTML,那么也许吧。但我不认为HTML源代码应该在授权之后。HTML源代码不会在SPA体系结构中保存任何敏感数据。