三年之前,我做过一个在线调查,当时有不少人还是对一个在线社区表示出期待。.NET Core 技术正风声水起,所以我就开始了用它来开发一个论坛的计划。最近正式将项目推动到了一个 MVP 的状态。感兴趣的朋友,现在可以访问 preview.dotnetclub.net 来预览这个项目的最新状态,去往 GitHub 在 Projects 页面查看最近的开发计划,并在 issues 页面提出宝贵意见。
下面就一些话题展开分享一下:
为什么要开发这个项目?
三年之前,在 ASP.NET vNext 刚刚宣而时,我就做过一个在线问卷,36 人提交了他们对 ASP.NET 社区的看法。参与者 100% 表示认为 ASP.NET 需要一个新的社区。点击此链接 可查看该问卷上的更多数据(密码 asp.net)
我参与过很多线上的群聊,包括微信群和 QQ 群等,尤其是 Mike 组织的群一直保持比较不错的活跃度。大家时常聊到很好的话题,在群里聊的时候当时大家都很兴奋、参与感很强,但事后也就过去了,基本也没有什么沉淀。这事实上是一种比较遗憾的浪费,除非事后有人总结了下来,否则对于没参与的人来说基本也没有机会再见到了。现在也有不少微信公众账号,特别是张善友组织的公号 “dotNET跨平台” 一直保持着很高的活跃度。可是公众号文章的范围也基本被限定在微信中,难以让更多人受益——特别是那些遇到了临时的问题,迫切地需要一些信息的时候,公众号的文章却不能第一时间就能在手边提供帮助。
实话说,我不太知道今天的初学者如何学习的,每当想到这一点,我就感到一丝愧疚。因为在过去,我从菜鸟成长的路上,是得益于网上无数前辈们的无私付出的,印象比较深的是周金桥的 ASP.NET 夜话系列,以及老赵的 MVC 系列。
然而现在,我们看到的一个结果是,除了博客园网站上时不时还有人发些文章,但人们看不到 .NET 人员在网上聚集的踪影。在线社区虽然看起来是一种过去用得比较多的形式,但它独有的形式能让参与者讨论的形式得以保存,它保存在开放的互联网上,供需要了解的人们随时检索。
这越发让我感觉到一个在线社区的紧迫性:我们需要一个社区,成为围绕 .NET 技术、特别是 .NET Core 技术的交流场合。它能够让有益的讨论得以沉淀,它能够为初学者提供清晰的指导,它能够让更广阔的技术社区看到 .NET 平台的实践方法和社区气氛。
社区项目的表现形式会是怎样的?
上面说到,我的出发点很简单,根据网友们的反馈,社区基本会是小型论坛的形式,但也会刊载初学者入门、典型场景的解决方案,以及社区活动等内容。
是的,就是形如 cnodejs.org 那样。
社区项目目前的开发进展如何?
社区项目的开发还在进行中,刚发了一个小版本。包含基本话题发布功能:
匿名用户可以注册成为会员
会员登录后可以发布新的话题,话题列表可以翻页
不过,相对于产品,其实社区重在运营。因此,可以说目前社区还没有正式开始运营,目前正在筹备阶段。 目前,上线了测试站 preview.dotnetclub.net 现在可以随便注册,发内容参与测试(测试站上注册的用户和内容会不定期删除)。正式上线时会使用 dotnetclub.net 的域名,届时正式版的内容会一直保留。
项目采用 .NET Core 2.1 开发,源码位于 github.com/jijiechen/dotnetclub,接下来的开发计划在 GitHub 页面的 Projects 页面,欢迎参与贡献,或者提 issues。
社区项目的代码怎样?
这个项目并不难,但我也希望用一些最佳实践去打造它,把项目打造成初学者学习的起点。目前,项目采用 .NET Core 2.1 开发,是一个 ASP.NET Core MVC 项目,目前支持数据库用的是基于 Entity Framework Core 的 Sqlite 数据库。部分所用的技术是:
应用框架: ASP.NET Core MVC
DI 框架:内置 DI
数据库:EF Core,Sqlite,FluentMigrator
身份验证:ASP.NET Identity
日志:内置日志组件和 Serilog 文件日志
前端:jQuery, Bootstrap, Summernote, Turndown.js
依赖管理:NuGet、bower
单元测试:xunit 有 Moq
自动化编译:cakebuild,gulp
持续集成:TravisCI 和 AppVeyor
打包工具:docker
部署平台:Hyper.sh
跨平台支持:Windows、Mac 和 Linux:开发在 Mac 和 Windows,部署在 Docker on Linux
可以根据 GitHub 页面上的提示,来编译和运行代码。 接下来的开发计划,前台主要是添加评论功能,另外要增加管理后台功能。管理后台准备做成前后分离的模式,目前还没有确定使用什么框架和工具。
.NET 技术是好技术吗?比起 Java 来如何?
这几乎是每次讨论 .NET 的时候,人们总会问到的一个问题。曾经,老赵直接地对 Java 和 C# 进行了全面的比较,说明了为什么 C# 是优秀的。然而,关于 .NET 和 Java 的讨论仍然不绝于耳。现在让我再一次简单地定义一下对这个问题的理解吧:
.NET 平台,尤其是 .NET Core 平台是优秀跨平台和开源的开发平台,这是与任何其他开发平台无关的客观事实,不容争辩
.NET 平台的繁荣有益于整个技术圈的创新,也有益于各个开发平台的相互竞争与互补
Java 语言是有用的。不过迄今为止,在 .NET 开发人员眼里,它是丑陋的:各种语法和 API 别扭啰嗦、性能差是它的典型问题
围绕 Java 平台的生态是庞大而活跃的,也是包括 .NET 的各种其他开发平台都可以利用的宝库
.NET 和 Java 平台,以及对应平台上的各种开发语言都没必要声称自己是最好的开发语言和平台。关于最好的开发平台和编辑语言的争论是徒劳的
显然,.NET 技术是好技术,没必要与 Java 相比。
.NET 社区活跃吗?
.NET 社区的活跃度是一个一言难尽的话题。不好说它不活跃,也并不是很活跃。.NET 技术最火热的时代大约是在十年之前,曾在一段时间里没有跟上互联网化的发展,出现低迷的情况。从四年之前开始的 .NET Core 技术已经重新唤起了人们对 .NET 技术未来的信任。
尤其是从去年开始,.NET Core 的社区日渐活跃起来。张善友的公号有数万的订阅者,每天的阅读量都在 5000 人次以上;最近由 ThoughtWorks 西安的同事张阳组织的活动有近一百人参与。今天我说要组织 dotnetClub 社区,一上午就组织起了 100 人的微信群。从这些简单数据都能看出来,社区里喜爱 .NET 技术的大有人在。而且社区气氛也在越来越好。
社区将以怎样的方式运营?
通常,技术人员并不善于做运营,我也不例外。所以看到善友兄的公众号那么有人气,我个人是十分佩服的。简单分享一下我的想法。本质上,社区的精髓在于人,而不在于代码。因此,关于社区的建设,我提出几点倡议:
鼓励专题分享、视频直播、开源项目、线下活动和出书立作等有益于知识传播和生态构建的活动
与其他形式的既有 .NET 社区(如在线群聊、用户组、翻译组、线下活动等)合作,推动在内容、会员和活动等方面的合作;与平行的其他方面的技术网站合作,组织线上和线下活动,推动 .NET 技术参与到整个技术生态之中
网站以非盈利性组织的形式运营。开通捐款通道,用于支持网站的日常运作。在网站公开接收捐款和使用款项的状况,确保捐款人的利益得到保障,确保网站持续运营。
努力保障日常发贴的能力,采用高可用性基础设施确保数据不会丢失。定期公布运营状况,与会员共享对网站的统计分析数据
后续会支持 GitHub 账号登录,并关闭自主注册机制,以确保用户的质量。引导分享和原创内容方向,鼓励围绕 .NET 及周边技术的内容。邀请注册用户参与内容审核与编辑,接受不良内容举报,确保内容质量的同时,杜绝各类违法信息的传播
项目的代码是开源的,希望大家一同贡献;社区网站的归属也是所有注册会员的,只要是符合上面的运营精神的内容,会员可自由发布,并可以编辑和删除自己发布的内容。
社区的参与者是哪些人?
设想中,社区的参与者包括这些类别:
会员:参与社区讨论和内容贡献的人们。可自由、免费注册。
管理员:从事各类编辑和管理工作,保障社区的日常运营秩序。邀请制。
运维组:从事各类基础工作的人员,以确保社区网站的正常运转。邀请制。
代码贡献者:社区网站项目的功能开发和技术升级的人员。通过贡献代码可自由地成为贡献者。
上述各类用户都是双向无偿的,即社区不向他们支付报酬,他们也不向社区或其他类别的参与者收取酬劳。
社区会商业化吗?
暂时没有这方面的打算,事实上,目前也没有一个对应的法律实体,或者社会化概念。因此,暂时没有人能代表这个社区。目前,如果有针对社区的捐款,或者以其他形式获得的收入,将用于社区的运营。
上文中的“我”是谁
“我”即是“诺普博客”的博主,陈计节。我是 ThoughtWorks 中国的一名咨询顾问,主要工作是与各类型的客户一同工作,改进他们团队的实践方式,提升团队的技术能力,以改善团队产品的质量和开发效率。请到我的博客查看关于我的介绍、取得联系。dotnetClub 社区项目由我发起,项目的代码目前主要由我贡献,网站也将由我运营。
原文地址: https://blog.jijiechen.com/post/dotnetclub/
.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com