我在ASP.NET MVC项目中使用Castle Windsor 2.5.1并使用属性注入来创建一个我期望在基本控制器类上始终可用的对象.我正在使用工厂来创建这个对象,但是如果构造函数中有错误,我根本不会收到来自Windsor的警告,它只是返回我的对象但没有注入属性.
这是预期的行为,如果是这样,当工厂无法返回任何内容时,如何引发错误?
这是一个例子
public class MyDependency : IMyDependency
{
public MyDependency(bool error)
{
if (error) throw new Exception("I error on creation");
}
}
public interface IMyDependency
{
}
public class MyConsumer
{
public IMyDependency MyDependency { get; set; }
}
[TestFixture]
public class ProgramTest
{
[Test]
public void CreateWithoutError() //Works as expected
{
var container = new WindsorContainer().Register(
Component.For<IMyDependency>().UsingFactoryMethod(() => new MyDependency(false)).LifeStyle.Transient,
Component.For<MyConsumer>().LifeStyle.Transient
);
var consumer = container.Resolve<MyConsumer>();
Assert.IsNotNull(consumer);
Assert.IsNotNull(consumer.MyDependency);
}
[Test]
public void CreateWithError_WhatShouldHappen() //I would …Run Code Online (Sandbox Code Playgroud) 程序如何与微内核/单片内核/外核内核通信?

我已经阅读了很多书,如图所示,单片内核通过系统调用表/文件系统层与程序通信.
但是微内核和exo内核如何与程序通信?
微内核的基础是否与程序直接对话,然后微内核与服务器通信?
更新:我发现这很好地回答了它
客户端 - 服务器或微内核操作系统操作系统设计中的新概念microkernel的出现旨在将操作系统的传统服务从单片内核迁移到用户级进程.这个想法是将操作系统分成几个进程,每个进程实现一组服务 - 例如,I/O服务器,内存服务器,进程服务器,线程接口系统.每个服务器都以用户模式运行,为请求的客户端提供服务.客户端可以是另一个操作系统组件或应用程序,通过向服务器发送消息来请求服务.在内核模式下运行的AnOS内核(或微内核)将消息传递给适当的服务器; 服务器执行操作; 和微内核在另一条消息中将结果传递给客户端
我一直在阅读AROS,尤其是托管版本.AROS说如下.
Run Code Online (Sandbox Code Playgroud)kernel.resource contains AROS microkernel. It's the lowest level component, which is responsible for handling CPU and motherboard. For hosted ports kernel.resource contains a virtual machine.
从我读到的有关虚拟机的内容来看,有两种类型的系统虚拟机和进程虚拟机.我知道AROS不是一个系统虚拟机,但是所有的流程虚拟机都可以像Java JVM,Mono,Python,Ruby等一样.它们都是特定于语言的.AROS接缝是一个完整的系统/平台,在用户模式下运行,如用户模式Linux.
AROS托管:操作系统中的操作系统?
AROS最初是在基于Intel的计算机上运行的Linux上开发的.但它可以运行在更多的机器和操作系统上.这可能听起来很奇怪:运行在其他操作系统之上的操作系统,这是仿真,对吧?
AROS托管的一个很好的术语是"API仿真".API是Application Programmer接口的三个字母的缩写.用简单的英语:API提供程序员可以使用的(C语言)函数.AmigaOS API包含一系列库调用,Amiga程序员可以使用它来制作Amiga程序.AROS模拟AmigaOS API:它尝试提供与AmigaOS相同的库调用.Amiga仿真器,如阿联酋; 模拟Amiga计算机:处理器,连接的硬件,一切.这有其优点,例如能够在不同硬件上播放二进制Amiga游戏,以及它的缺点,例如无法在"真实"处理器上将模拟器用作"真实"OS.AROS托管在"真正的"处理器上运行.但它不是"真实的" 操作系统,除非你以不需要Linux的方式运行.这被称为"原生"AROS.
AROS可以在Intel和Amiga计算机上本机运行,但不如在Linux上运行.AROS库函数首先在Linux下运行,内部使用Linux内核和库调用.这样,程序员就有机会首先关注整个系统的实现,并在以后的体育场中打扰技术细节.人们正在努力使"原生"AROS更加有用.结果非常令人印象深刻,完全可以将AROS-native用作IBM PC兼容机器上的真实(且唯一)操作系统.
当然,AROS不仅仅是一个API模拟器.它还试图为所有AmigaOS 3.1系统软件提供替代品,你也会发现AROS附带的一些演示和游戏,只是为了表明它们有效 - 我们可能只占整个系统的77%,但我们已经有Quake运行了!
从这些信息中可以看出,当用作虚拟机时,AROS kernel.resource只是包装了Linux内核的系统调用接口?或者我错过了什么
另外还有像AROS这样的其他系统吗?
我想制作一些可以在许多操作系统上托管的东西.
知道两者都是微内核,b/w Mach(赫德所基于的)和Minix的区别是什么.有任何架构差异吗?对"什么是L4"稍微有点了解将会非常有帮助.我找不到任何涉及此的文件.
我是C程序员,是Linux内核编程的新手.我发现有三种类型的内核单片,微型和模块化内核.而googling我可以找到一些网站称linux有单片内核(在Stack溢出),还有一些说微内核,其余的说混合内核.所以我在阅读模块化概念时完全感到困惑,该模块概念表示可以在不重新编译内核的情况下添加驱动程序的新模块,这与我假设Linux使用单片内核相反.单片内核在单个地址空间中运行,并且作为单个进程, 如果是这样,这也有点令人困惑
我有下面的Akka微内核:
class ServiceKernel extends Bootable {
val system = ActorSystem("service-kernel")
def startup = {
system.actorOf(Props(new Boot(false))) ! Start
}
def shutdown = {
system.shutdown()
}
}
Run Code Online (Sandbox Code Playgroud)
因为内核扩展Bootable而不是App,我如何访问启动内核时使用的命令行参数?例如,如果我使用start namespace.ServiceKernel -d rundevmode或类似地运行内核.谢谢!
我认为值得在微内核中添加有关启动脚本的信息.在/bin/start你注意到以下内容:
#!/bin/sh
AKKA_HOME="$(cd "$(cd "$(dirname "$0")"; pwd -P)"/..; pwd)"
AKKA_CLASSPATH="$AKKA_HOME/config:$AKKA_HOME/lib/*"
JAVA_OPTS="-Xms256M -Xmx512M -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:ParallelGCThreads=2"
java $JAVA_OPTS -cp "$AKKA_CLASSPATH" -Dakka.home="$AKKA_HOME" akka.kernel.Main "$@"
Run Code Online (Sandbox Code Playgroud)
虽然om-nom-nom最初提出了-D选项,但看起来它正在使用中,并且主要启动参数被传递给akka.kernel.Main类(在本例中将是ServiceKernel上面的类).
我被告知,Windows NT最初是为实现微内核架构而设计的,但却转移到了混合内核.
是什么导致了变化?我无法找到有关此信息的任何信息.
我正在尝试在用户空间中为 sel4 编写示例 USB 驱动程序。任何人都可以了解 sel4 用户空间驱动程序,请与我分享...如果有人有 sel4 用户空间驱动程序的示例代码(示例驱动程序),请与我分享...
我正在调用Resolve的异常:
KernelException: Could not instantiate custom activator
Inner Exception:
{"Constructor on type 'MyProj.MyAdapter`1[[MyProj.MyBusinessObject, MyAsm, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' not found."}
Run Code Online (Sandbox Code Playgroud)
肯定有一个公共无参数构造函数(我在运行时使用反射验证了这一点)...所以我认为这个问题可能与它是通用的事实有关吗?我已经尝试获取组件模型对象并将RequiresGenericArguments设置为true,但这并没有让我在任何地方.
任何帮助将非常感激!谢谢.
最初我以为Fuchsia是第一个广泛使用基于功能的安全性的内核,但是看起来在seL4中它们也是主要的安全性原语。
microkernel ×10
kernel ×3
sel4 ×2
activator ×1
akka ×1
amiga ×1
c# ×1
command-line ×1
fuchsia ×1
linux ×1
mach ×1
minix ×1
scala ×1
usb-drive ×1
windows-nt ×1