Feedback
“我一直都希望M$能够提供一个无图形界面的,从目前看来似乎是时间还早了,但是现在是朝着好的方向发展,PowerShell让我看到了希望,说不定PowerShell就是将来的无图形界面 Server 的雏形。”
DOS不就是无图形的界面吗?我想起了DOS年代的Shell,那个时候的Shell让鼠标有了用武之地。呵呵~~
什么是Shell呢?Shell的意思是“壳”,Shell强大了,充其量只是金玉其外,所以 Shell的强大与Server本身并没有什么关系。
为什么我们会需要图形界面的Server呢?还不是为了提到易用性吗? Windows Server抛弃了图形界面,恐怕和Unix/Linux过不上几招了。
回复 引用 查看
@FantasySoft
我的意思是
需要一个没有图形界面的 Windows Server
我相信,这个可以通过 PowerShell 实现。
m$也说了,PS是用于 Server 的管理工具,他能做的事很多,不过基本上没和GUI扯上关系,所以我才觉得可以作为无图形界面Server的Command Tool。
另外,易用性只是对普通用户而言,对系统管理员来说,用一个脚本文件就可以干的很多事,GUI是无法做到的。
去掉 GUI ,我觉得 Windows 的性能肯定会大幅提高。
毕竟 GUI和核心掺在一起,是要浪费很多资源的。
回复 引用 查看
@Zealic
没有图形界面的Server就不再成为Windows Server了~~
如果没有了图形界面,Windows Server的优势在哪里呢?
回复 引用 查看
2006-11-16 09:19 |
按照微软的策略, 只会推出一些吸引unix/linux的用户的东西的,而不会变得和unix/linux一样。 注定是两个阵营的。
回复 引用
一个hello world的输出就能显示powershell的强大,lz还是很风趣的。
power shell不一定power,microsoft不一定micro。
回复 引用 查看
好文!楼主的设想也不错。
我认为未来的Windows Server的GUI可能会像组件一样,服务器上可以装,客户机也可以装,也可以装个Shell来连接到服务器,例如SQLserver的osql
回复 引用 查看
dotNet 的 dll 按照 com 的方式能够调用, 但是有很多缺陷, 比如构造函数的参数以及函数重载等都会出错, 必须寻找更为有效的调用方案.
回复 引用 查看
PS之所以强大
是因为他能直接操作.Net和COM对象以及可扩展性
并且它还是一个简单的结构化语言
此外还有很多内定功能
ps脚本完全可以取代 Windows Script 中的 JScript和 VBScript
回复 引用 查看
@Wisdom-zh
PS是直接调用.Net对象
而非通过COM调用的
.Net中很多对象都ComVisible(false)的
回复 引用 查看
2006-11-17 10:24 |
Longhorn Server Beta 2已经提供一个core的版本,默认安装极少组件,应该是向无GUI界面的一个尝试。
Windows Server将GUI分离出来应该也是可行的,你可以通过内部的一台有图形界面的管理端去管理,易用性方面不会有太大的损失。
回复 引用
@Zealic
就是不知道不用 dotNet 写,用普通的 win32 程序如何无限制的访问 dotNet 的类库(当然跳过 com)了。
不知兄台对此是否有些研究,不吝赐教!
回复 引用 查看
@Wisdom-zh
据我所知
你所说的功能应该是用 CLR Host 实现的
不过不用COM是不可能的
CLR原本就是COM2.0,很多关键函数都是通过COM调用的
具体你可以参考一下SSCLI的实现机制
以寻找用COM接口查询.Net对象和函数并调用的方法~
回复 引用 查看
@Zealic
谢谢回复!
我翻看过微软的SDK文档, 里面有介绍用非托管的方法查询.NET对象和函数, 但是具体到调用上, 还是很复杂的, 比如我前面提到的构造函数带有参数的类对象如何创建, 以及函数重载(注意在.NET中, 函数是靠返回值, 函数名和所有的参数来区别的)如何调用, 这些问题都非常的关键, 因为大部分的.NET类库都是这么设计的.
回复 引用 查看
@Wisdom-zh
可以把那篇文档的地址发给我看么,我也向看一下,看有没有什么价值~
另外,.Net中的方法都是以Token来标记的,方法名可以说是无所谓的。
我这里提供一些想法给你
1.使用C++/CLI封装System.Reflector中的函数,公开为C函数以直接调用。
2.通过宿主和元数据接口加载程序集以获得_Assembly,封装其反射函数,公开为C函数调用,这样做相比方法1的好处是可以动态释放程序集。
总的来说,想要完整的调用.Net函数和对象,必须通过反射等手段,你说的判断参数类型也应该不是什么问题,通过反射你可以获得函数的所有信息,包括参数、MarshalType、函数名、Attribute,或者通过判断方法的MetadataToken应该就可以了,虽然这样说效率可能低一些。
至于类型的比较,直接用Type.GUID比较就可以了。
回复 引用 查看
@Zealic
其实我看的也仅仅是微软的SDK文档, 在Tool Developers Guide目录中的一些: Assembly Metadata Unmanaged API.doc, Metadata Unmanaged API.doc, 介绍了如何通过非托管的代码去取得.NET的元数据信息.
但是对于调用则相对较难(主要的问题也就是构造函数以及重载问题).
对于这方面感兴趣的原因是:
我们现有一个Nuva脚本语言(参考
http://www.macrobject.com), 作为一种脚本语言, 能够实现访问各种现有的编程资源是非常有用的, 目前我们实现了 Win32 DLL 和 COM 的访问, .NET 通过 COM 也能非常有限的访问, 计划中也包括 Web Service 和 Java Class 的访问.
动态语言访问 .NET , 目前似乎只有 IronPython 可以作为先例, 与 IronPython 不同的是, Nuva 语言的实现是 Win32 的, 可以说比 IronPython 要更为麻烦.
有什么想法或建议, 大家不妨交流交流!
回复 引用 查看
@Wisdom-zh
上面我已经说了一个较好的方法了,用C++/CLI封装反射功能,对外部公开为C函数,我想这是最简单的方法了。
加我WLM : rszealic(at)gmail.com
我把我刚写的Win32调用C++/CLI DLL 给你看~
回复 引用 查看
@Zealic
已经加了:)
可能我要反过去研究一下 VB.NET,进入 .NET 环境以后,到底都做了些什么改变,原来的动态特性,如何在新的环境中实现。。。
回复 引用 查看
使用VBScript和JScript也可以访问系统,使用COM,可以做很多的管理工作,这个东西确实只是一个吸引吸引unix/linux的用户的东西
回复 引用 查看
2007-09-02 00:24 |
无界面的OS已经有了,
Windows Server 2008的Server Core。
不过,具体和有界面的windows Server差别有多少,我也不太清楚。
回复 引用