我是一名经过authentication的.NET开发人员,在工作中我做了很多Sharepoint开发。 添加/编辑/删除用户需要使用AD,当然,与Sharepoint中的站点结构有任何关系都与IIS有关系。
作为开发人员,我需要了解IIS / AD和Windows Server的整体情况? 我想知道的一个问题是我怎样才能让用户被包含在几个组中?
谢谢
了解活动目录 :任何用户可以在AD的许多组中,问题是如何让他们在那里。 以编程方式进行编程是可能的,也是很容易的,但问题是您的安全策略是否允许这样的事情? 谁来控制应用程序将要部署的AD,以及如何将这些东西与将人员添加到组中的实际技术细节有关。 在开始推出阶段之前,这些都是很好的问题。
IIS也是一样。 政策问题几乎总是大于技术问题。 问问你能做什么,做不了什么大惊小怪,这是一个很好的开始。 虚拟目录和虚拟网站的使用是让你头脑发热的另一件好事。
只要你问,这里有更多的东西,我希望更多的开发者有兴趣了解。
服务器不是永久不变的实体 ,硬件被取代,ISP改变,驱动器填充。不要硬编码像绝对文件path,IP地址和服务器名称的东西。
另外一个重要的是知道你的应用程序实际需要运行什么 。 在服务器上,没有人真的想要安装所有的花里胡哨的东西,因为开发者不能告诉你他们在打什么电话。 一个为我记忆的应用程序是我最终不得不在服务器上安装MSSQL Server 2005的原因之一,因为如果没有它,代码将无法运行。 最后(几个月和几个小时后)我们知道发生了什么,以及如何避免这种情况。 如果没有这么重要的应用程序背后有这样的影响力,我会把它推回去,并说:“绝对不是,因为这是一个巨大的安全风险”
这些事情在后端造成无尽的故障排除头痛。 “它在我的机器上运行”只是非常有用,因为你的机器上可能比我们希望安装在服务器上的工具多得多。 testing环境也应尽可能接近生产,以消除这些问题。
从我的经验来看,这些是我希望开发者更多关注的领域:
IIS。 对于ASP.Net应用程序尤其重要。 一些关键的领域需要研究:
IP绑定和主机头。 当您创build一个新的IIS站点时,确保您知道如何正确configurationIP和主机标头。
应用程序池设置。 这里有许多设置会影响您的应用程序,包括超时值和回收。 一定要了解这些可能会影响你的会议。
启用方法。 如果您正在执行REST API,请了解如何启用其他方法,如PUT。
SSL证书。 了解如何安装SSL证书以及获取证书的过程如何工作。
性能调整。 确保您知道如何启用GZIP,禁用电子标签,configuration内容过期以及设置caching标头。 使用Fiddler查看IIS如何响应请求。 您可以通过一些简单的更改显着提高应用程序的性能。
WCAT。 与IIS相关,但了解如何设置WCAT并为您的应用程序设置负载testing。 这样你就可以获得有关应用程序响应时间和限制的硬数据。
权限。 了解什么权限需要在您的应用程序的哪些文件夹。 例如,如果您的应用程序写入一个文件夹,您是否需要NETWORK_SERVICE访问该文件夹?
Windows防火墙。 似乎基本,但特别是对于Windows Server 2008,了解如何向防火墙添加条目,设置端口,设置范围等。
SMTP服务器。 了解如何设置,configuration和排除Windows SMTP服务器故障。 您也可以将HMailServer视为与您的应用程序一起使用的替代scheme。 另外,请阅读垃圾邮件过滤以及如何正确创build电子邮件(正确的从,到,多部分邮件等)。
SQL Server IP和端口绑定。 与Windows Server没有直接关系,但是出现了很多。 了解如何设置SQL Server绑定到特定的IP和端口。 了解dynamic和静态端口之间的区别,如何设置和连接到非标准端口,如何使用实例名称和自定义端口构build连接string。
上面列表中的许多项目都位于服务器pipe理员的域中,但如果您能够理解和排除这些问题,则可以使自己变得更有价值。
嗯,这可能实际上是一个stackoverflow.com问题(从其他程序员获得答案)。 如果你想知道系统pipe理员想让程序员知道什么,我会说:
性能监控 – 您的代码在硬件上越容易越好
了解(并logging)您的代码如何与不同版本的IIS和Sharepoint进行交互
至于你的组员问题,我会使用GUI或DSADD – 但你可能在那里寻找代码? 如果您真的在寻找编码器input,我们可以将此问题迁移到姊妹网站。
我build议知道32位与64位和多less内存你的应用程序(networking通过IIS或winforms)可以消耗。 我也会专门研究IIS7的所有接口,事件和整个访问处理pipe道,可以利用Windows服务。
活动目录(AD)的一般知识是绝对有用的,如果你的应用程序需要进行身份validation。 请注意帐户和权限作为Web应用程序和WinForms或一般应用程序都必须在一个活动目录帐户下运行。 IIS进程都在IUSR_machinename下运行,文件共享也受安全权限的约束。 在开发过程中,这看起来可能没有什么意义,因为没有人会想到这个问题,但Windows域被AD严格限制,并且它们的权限/ ACL会影响域内的所有内容。 只是要记下的东西。 注意:AD策略也会影响应用程序。
我还build议在.NET平台中使用EventLogging(对于错误和应用程序消息),因为我已经开发了一些应用程序,所以我们必须在创build自己的(错误)日志logging系统的同时拥有Windows EventLog提供给我们。 创build日志logging系统并不困难,但为什么在EventLog已经可用的时候做更多工作呢?
另外从应用程序的angular度来看,我会研究微软消息队列(MSMQ)。 如果您的应用程序/站点有大量数据在数据库和Web服务器上进行混洗,或者需要将数据发送到其他系统/应用程序,排队是一种有用的技术,MSMQ是免费的,并内置于Windows Server中。 MSMQ是基于事务的消息传递系统,对于具有dynamic数据需求的应用程序非常有用。 对不起,是模糊的,但要进入MSMQ将需要很大的努力,可能是矫枉过正。 我build议阅读关于MSMQ及其在MSDN或维基百科的初始概念。
希望这可以帮助!
编辑:我会问在添加一个用户(我承担通过.NET)的具体问题到Stackoverflow的不同组,但我认为有关AD和Windows的一般问题适用于Serverfault。
这很大程度上取决于你的angular色。
如果您拥有架构师/开发人员angular色,那么您需要知道系统将如何在生产环境中工作。
如果您正在进行任何部署,则还需要了解要安装的平台。
如果你是一个开发人员,只是得到“写一个x的函数”这样的任务,你不需要太多的知识。
这里有趣的是,了解运营方的开发者的市场价值远高于只是开发者的市场价值。
你永远不会打开Windows系统资源pipe理器。 它会一直吃9-11%的CPU,因为没有人知道什么。