新社区网站

通常,你会在正确的地方,但我们最近推出了一个全新的社区网站……为社区,受社区。

耶……带我去社区!

社区博客是社区成员的个人观点,绝不是DNN公司或DNN平台的官方立场。这是一个表达个人对DNNPlatform、社区及其生态系统的想法的地方。你有什么有用的信息想要与DNN社区分享吗?如果有,请联系

社区博客的使用由我们的社区博客指南-请在评论或发布之前阅读。


2sxc-Polymorph(多版本)使心脏直视手术

这是一个转载自2sxc博客

几乎每个人都在生产环境中进行更改和错误修复,这需要冒很大的风险。新的Polymorph功能可以让您在没有风险的情况下做到这一点。

注意,这还不是一个完整的解决方案。我们正在为此工作,并有它的一部分工作,并将逐步添加功能。

让我们将完美的多版本(变形)设置与经典解决方案进行比较:

app-polymorph-classic-vs

正在进行的工作

app-polymorph-progress到目前为止(2sxc 9.35),我们已经完成了第一步,允许WebAPI控制器是多态的。这是目前的发展状况:

这意味着:

  1. Api控制器已经是完全多态的了。它们可以放在子文件夹中,例如[app-root] / / api / WtfController.cs生活并且可以使用名称中带有版本的url来访问,从而允许使用多个同名控制器。
  2. 如果您手动选择视图,则视图是多态的。这意味着,您可以将视图放在子文件夹中,例如[app-root] /生活/ list.cshtml然后有一个入口点[app-root] / list.cshtml哪个将选择使用哪个版本-然后使用@RenderPage选择那个版本。这仍然是手工的,因为我们还不确定完美的实现是什么,所以我们宁愿在标准化一个糟糕的解决方案之前等待。
  3. 所有数据(模式、项、查询、设置和资源)仍然只是一个版本。数据模型能够执行多版本内容管理,但是我们还没有准备好为此提供ui等,因为它可能会导致混乱,所以我们现在将保留这一点。

如何使用WebApi Polymorph (2sxc 9.35+)

到目前为止,要使用WebApi Polymorp,这是你要做的:

  1. 而不是把你的WtfController.cs[app-root] / api /文件夹,你把它放在[app-root] /生活/ api文件夹中。
  2. 活动的默认JS将使用
    [dnn-api-root] / app /汽车/生活/ api / Wtf
  3. 然后可以将该控制器复制到[app-root] / dev / api并在那里进行更改。
  4. 在您的JS中,您将(在测试/开发时)使用
    [dnn-api-root] / app /汽车/ dev / api / Wtf
    而不会对实时解决方案造成问题,因为所有其他用户仍在访问生活版本,当你在做dev版。
  5. 一旦一切正常,部署(复制)现在修改的文件WtfController.csdev / api文件夹生活/ api所有用户都能从这些变化中受益。

如何使用视图变形(手动)

如上所述,这还不是自动化的,但愿景是清晰的,它的工作原理是这样的:

  1. 比如说,表达你的真实观点list.cshtml没有。[app-root] / list.cshtml但在一个版本文件夹一样[app-root] /生活/ list.cshtml
  2. 在根目录下,也创建一个[app-root] / list.cshtml,但这基本上只会从editions文件夹中呈现文件,使用@RenderPage(“生活/ list.cshtml”)
  3. 现在,确定您希望如何在版本之间切换—例如基于cookie值或主机用户。将此逻辑添加到[app-root] / list.cshtml确定要使用的版本,并以此为基础如果()()其他……来呈现生活/ list.cshtmldev / list.cshtml
  4. 现在你可以做dev / list.cshtml不影响实时用户。
  5. 准备好后,部署(复制)dev / list.cshtml生活/ list.cshtml

下一步开发步骤

接下来,我们想标准化一些东西,比如:

  1. 提供一个UI或其他东西来将一个版本移动/部署到另一个版本,这样您就可以在登台工作,然后使用UI或其他东西来部署您的工作。这还应该自动备份之前的活动内容,以防您想回滚。
  2. 标准化如何自动确定用户所处的“变形”以及如何将用户设置为该变形,使其更易于使用,并消除了“切换视图”的要求,该“切换视图”决定要显示哪个真实视图。

目前,数据多态性的优先级较低,因为我们还不确定是否能够以一种不会让用户感到困惑的方式“实现这一点”。

开始

  1. 下载最新的2sxcGithub
  2. 在2sxc wiki上获得最新的文档,特别是Polymorph-conceptWebApi文档和DotNet WebApi文档。

来自瑞士的爱,
丹尼尔


丹尼尔·梅特勒(Daniel Mettler)在印度尼西亚的丛林中长大,是sic互联网解决方案在瑞士和列支敦士登,他是一位20名网络专家,自1999年以来参与了800多个DNN项目。他也是2 sxc(见github),一个用于创建的开源模块有吸引力的内容和DNN应用程序。



阅读更多文章丹尼尔·梅特勒

评论

DnnModule.com
只要从Github下载2sxc并在DNN 9.2站点下测试它,非常喜欢它。谢谢。
DnnModule.com 2019年2月21日星期四凌晨2:55 (链接)

评论形式

只有注册用户才能发表评论。

NewsArchives


Aderson Oliveira(22岁)
亚历克·惠廷顿(11岁)
亚历山德拉·戴维斯(3岁)
Alex Shirley(10岁)
安德鲁·霍夫林(3岁)
安德鲁·纳斯(30岁)
安迪·特里巴(1)
安东尼·格伦赖特(5岁)
安东尼奥·夏格里(28岁)
阿什·普拉萨德(37岁)
本·施密特(1)
本杰明·赫尔曼(25岁)
伯努瓦·萨顿(9岁)
贝丝·费尔堡(12岁)
比尔·沃克(36岁)
鲍勃·克鲁格(5岁)
波格丹·莱特斯库(1)
布莱恩·杜克斯(2岁)
白雪皑皑(1)
布鲁斯·查普曼(20岁)
布莱恩·安德鲁斯(1)
卡塔·康诺利(55岁)
查尔斯·纳斯(163)
克里斯·哈蒙德(第213届)
克里斯·帕特拉(55岁)
克林特·帕特森(108)
邝党(21岁)
丹尼尔·巴塞洛缪(2岁)
丹尼尔·梅特勒(181)
丹尼尔·瓦拉达斯(48岁)
戴夫·巴克纳(2岁)
大卫·波因德克斯特(12岁)
大卫·罗德里格斯(3岁)
萧耀文(1)
道格·豪厄尔(11岁)
Erik van Ballegoij(30岁)
恩斯特·彼得·塔明加(80岁)
弗朗西斯科·佩雷斯·安德烈斯(17岁)
杰夫·巴洛(12岁)
乔治·阿拉特拉什(12岁)
吉福德·沃特金斯(3)
吉尔·勒·皮戈彻(3)
伊恩·罗宾逊(7岁)
以色列·马丁内斯(17岁)
简·布洛姆奎斯特(2)
简·乔纳斯(3岁)
贾斯普雷特·巴蒂亚(1)
詹妮·梅里菲尔德(6岁)
乔·布林克曼(274)
约翰·米切尔(1)
乔恩·亨宁(14岁)
乔纳森·希利(4岁)
乔丹·库珀史密斯(1)
约瑟夫·克雷格(2岁)
马侃(1)
凯文贝吉(3岁)
凯利·福特(4岁)
肯·格里尔森(10岁)
凯文·施莱纳(6岁)
利·波因特(31岁)
洛林·杨(60岁)
Malik Khan (1)
马特·拉特利奇(2岁)
马蒂亚斯·施洛曼(16岁)
毛里西奥Márquez (5)
迈克尔·多克西(7岁)
迈克尔·托比什(3岁)
迈克尔·华盛顿(2002)
米格尔·加梅坦(3)
迈克·霍顿(19岁)
米歇尔·塞勒斯(40岁)
弥敦罗孚(3)
Navin V Nagiah(14岁)
n (31)
Nik Kalyani(14岁)
奥利弗·海因(1)
帕特里西奥·f·萨利纳斯(1)
帕特里克·瑞恩(1)
彼得·唐克(54岁)
菲利普·比德尔(135岁)
菲利普·贝克尔(4岁)
理查德·杜马斯(22岁)
罗伯特·J·柯林斯(5岁)
罗杰·塞尔温(8岁)
鲁本·洛佩兹(1)
莱恩·马丁内斯(1岁)
Sacha Trauwaen (1)
爱沙尼亚语(4)
Sanjay Mehrotra(9岁)
斯科特·麦卡洛克(1)
斯科特·施莱西尔(11岁)
斯科特·威尔金森(3岁)
斯科特·威尔海特(97岁)
塞巴斯蒂安·洛波德(80岁)
肖恩·沃克(237)
肖恩·梅哈菲(17岁)
斯蒂芬·卡尔曼(12岁)
Stefan Kamphuis(12岁)
史蒂夫·法比安(31岁)
史蒂文·费舍尔(1)
蒂莫·布鲁梅尔霍夫(24岁)
托尼·亨利克(3岁)
托斯滕·韦根(3岁)
第谷·德·沃德(4)
Vicenç Masanas(27岁)
Vincent Nguyen(3岁)
维塔利·科扎达耶夫(6岁)
威尔·摩根维克(40岁)
威尔·斯特罗尔(180岁)
威廉·塞弗伦斯(5岁)
什么是液体含量?
找出
什么是液体含量?
找出
什么是液体含量?
找出
Baidu
map