这似乎应该是一件显而易见的事情,但我一直在寻找答案几个小时,但没有成功。
我正在使用 NHibernate 来持久化域模型,其中有一个服务层为 ASP.NET MVC 前端提供服务(“服务层”目前只是一个标准类库,但将来可能会转换为 WCF)。Web 应用程序请求它想要的数据并指定它需要的域对象上的集合,服务层接受请求,加载对象和所需的集合(使用延迟加载)并将对象传回使用 AutoMapper 转换的位置到视图模型友好表示。
我想要做的是加载所需的集合,从会话中分离对象并将其传递给前端。但是,当 AutoMapper 尝试映射对象时,这会导致异常,因为它正在尝试访问尚未初始化的集合并且会话不再可用。我可以让对象保持连接,但在这种情况下,AutoMapper 转换最终导致对象上的所有属性无论如何都被延迟加载,如果我们沿着 WCF 路线走,这将不是一个选项。
我想要做的是改变这种行为,这样当集合没有连接到会话时,它不会抛出异常,而是返回 null(或者更好的是空)。这是 Entity Framework V1 中的默认行为(不可否认,它没有执行自动延迟加载),我之前使用过它,但我找不到在 NH 中执行此操作的方法。
有任何想法吗?我在这里走错路了吗?
编辑-为了更清楚地了解我要实现的目标,在访问集合属性时,我想要这种行为:
连接到会话:正常延迟加载集合。
没有会话:属性为空(而不是抛出异常)
更新 - 在Billy McCafferty 的这篇文章之后,我设法使用 IUserCollectionType 实现了一个解决方案,该解决方案到目前为止似乎有效。不过,我没有像他那样使用提供的 PersistentGenericBag,而是必须创建新类型,以在未连接到会话时更改行为。它并不完美,需要一些非常丑陋的映射,但至少我不需要接触我的域对象或客户端映射来让它工作。
我们正在尝试将我们的单体核心拆分为微服务,并添加一些使用消息系统(例如 Kafka)相互连接的新服务。
下一阶段是创建 API 端点,以便通过 Api 网关在移动应用程序和微服务之间进行通信。
开发 API 网关以向/从微服务传输数据的好解决方案是什么?
感谢您的建议和一些想法
我必须选择一种技术来连接我的应用程序/表示层(基于Java)和服务层(基于Java).基本上从业务代表对象中查找适当的Spring服务.
那里有很多选择让我很困惑.以下是我缩小到但不确定的选项..
春季RMI
Apache Camel
Apache ServiceMix(ESB)
Iona FUSE(ESB)
这是我想知道的
任何帮助都会有用.谢谢!
我对像StructureMap这样的DI容器有点新,我用asp.net mvc应用程序已经用了很短的时间.现在,我正在拆分我的架构,它将拥有一个WCF服务层和一些消费者,如ASP.NET MVC应用程序,Silverlight应用程序和Winfors/WPF应用程序.当我使用带有asp.net mvc的SM时,我已经通过asp.net mvc的应用程序启动初始化了IOC,现在,对于许多项目使用我无法想象IOC配置应该位于的好地方.我也想在服务层制作DI(注入存储库).
在这种情况下,我在哪里加载我的IOC配置以及我将如何在整个项目中使用(比如只在asp.net mvc应用程序中需要控制器工厂)?
我的团队正在讨论我们开展项目的未来方向.一半的团队相信纯粹的3层架构,而另一半则倾向于采用双层架构.
项目假设:
3层团队的优惠:
2层团队的优惠:
这就是高级别的论点.我们应该考虑哪些因素?您对这两种方法有什么经验?
任何人都可以简要解释一下WS安全性所涉及的概念,以保护肥皂免受中间网络服
公司内部系统的后端变得越来越复杂,我想探索做SOA风格架构而不是沉重的单片系统的想法.我应该从哪里开始?
我是SOA的新手.这是指个人CF实例,它们通过远程Web服务调用相互通信?如何处理诸如错误处理和服务器中断之类的事情?如果ESB的每个部分都在ColdFusion中,ESB是否会对架构有益?
DB层怎么样?他们应该共享一个巨大的数据库,还是应该自己以自己的方式存储?
谢谢
在工作中,我们正在讨论选择现成的全栈ESB(企业服务总线 - http://en.wikipedia.org/wiki/Enterprise_service_bus),而不是围绕AMQP系统(例如RabbitMQ).
部分关注点是我们的生态系统是PHP尽可能快地向Python移动,我们已经拥有的API都以JSON方式传递消息.ESB和"SOA解决方案"上的搜索空间确实受到严重污染; 或者这不是Python Thing(tm).因此我在这里问:似乎我们所考虑的所有全栈ESB解决方案主要集中在集成基于SOAP的组件上.这似乎是我们可能不想做的很多双重包装和解包的消息.另外,如果可以的话,我们真的想用Python编写我们的服务到ESB适配器.
我应该注意到PHP/Python生态系统是内部的 - 我们的许多客户都是使用我们的应用程序集成的大型单片企业软件的相当隐藏的组织.对于面向客户的API,他们会对SOAP,XML-RPC等感到满意.我们已经有了请求.因此,在边界,我们最终可能最终提供基于JSON和基于SOAP的服务; 只是没有内部.
tl; dr:有没有人喜欢使用Python应用程序的全栈ESB?那个与你合作过的不受欢迎的人怎么样(无论如何,它有多可怕)?你认为包装像RabbitMQ这样的东西对于PHP/Python生态系统来说更好吗?
我经常使用SOAP over HTTP来实现迄今为止运行良好的Web服务,而这只是我们留下的唯一选择.
我想知道如果您在需要SOAP over SMTP或SOAP over JMS类型的通信的项目中遇到过用例/场景?我只是想了解使用SMTP或JMS与SOAP的用途?
当针对在AWS等云上部署的大型系统使用SOA时,可以使用两种方法进行服务交互。
将每个服务群集放在内部Elb后面。客户端与相应的elb建立连接池,而elb进行循环平衡。
使用netflix eureka之类的服务发现方法。
当前,我们正在使用第一种方法,其中每个服务群集都位于内部elb后面,并且客户端通过elb进行通信,因此每个客户端实例仅需维护1个池,即与elb端点。
对于第二种方法,我有以下疑问。
在以上两个问题上需要输入/建议。
soa ×10
esb ×3
rest ×2
web-services ×2
.net ×1
amqp ×1
architecture ×1
asp.net-mvc ×1
c# ×1
coldfusion ×1
coldfusion-9 ×1
event-driven ×1
java ×1
java-ee ×1
jax-ws ×1
nhibernate ×1
python ×1
rabbitmq ×1
security ×1
service ×1
soap ×1
spring ×1
structuremap ×1
wcf ×1
websphere ×1
ws-security ×1