我的asp.net控制器操作将FormCollection作为参数.
然后我遍历我自己的集合,在表单集合中查找值等.
我将所有代码移动到业务逻辑层,只需在我的操作中调用业务逻辑层,如:
SomeManager.Update(formCollection);
Run Code Online (Sandbox Code Playgroud)
但是我感觉有点厌倦了将formcollection传递给我的业务逻辑层.
我真的有选择吗?还有其他想法吗?
还是完全没问题?
此外,当我需要在松散耦合的对象(例如MVVMViewModel 的)之间进行通信时,有关最佳编程实践的不同书籍和博客建议使用 Mediator/EventAggregator 模式。我的问题是关于这些模式之间的差异/关系。谁能为我描述一下?
我对整个微服务潮流还很陌生。我一直在研究良好的微服务环境背后的架构和原则。
定义微服务的主要内容之一应该是每个服务的松散耦合特性。微服务 A永远不应该直接调用微服务 B,否则您正在有效地创建一个失去架构模式提供的可扩展性的单体系统。
问题/例子
如果我开发了一个返回 GUID 的微服务(例如),建议环境中的其他微服务可能会在需要时直接调用 GUID 服务是合理的。
我知道可以使用各种排队系统将数据从一个服务传递到下一个服务,但在我看来,它们主要用于插入、删除或更新。
我无法理解如何将队列用于简单读取(如我的 GUID 示例)以及为什么您不直接从另一个微服务调用 GUID 服务。
注意:返回 GUID 只是一个例子,我知道大多数语言都能够在内部生成它们
对此有所澄清将不胜感激。
我正在阅读Loose Coupling及其优点,这些都是非常好的东西,但我开始想知道哪些工具可以很好地创建松耦合解决方案?首先我想到的是Type和Interfaces以及Abstract类,但我确信有很多方法可以提供松散耦合.也许Polymorphism有助于创建松散耦合的对象和系统.
谢谢.
从设计和松散耦合的角度来看.为项目中的每个类创建一个可能是组合模型一部分的接口是一个好主意吗?
我有一个项目,我正在这样做,但现在我得到了相当多的接口,试图保持相对松散耦合的东西.
我想了解关注点分离和松散耦合之间的区别.
通过分离关注点进行编码是否真的会产生松散耦合的代码?
谢谢.
我正在设计一个医院集成系统,它消耗来自不同医院(我们的客户)的数据,然后根据数据库的读取配置将特定的业务规则应用于所述数据.如果我使用Java,我的第一直觉是构建一系列代表各种业务规则的接口,然后注入具体实例(使用Spring/guice)来组成一个完全配置的对象.这样我就可以在配置逻辑(什么商业规则应该适用于Hospital Foo?)和实际的业务规则本身之间实现清晰的分离.
不幸的是,我没有使用Java,我正在使用Lua.在过去的几天里,我沉浸在Lua文学中,与DI最接近的模拟似乎是模块的使用.此外,似乎管理lua模块在运行时如何解析的规则完全基于询问本地文件系统.
"模块模式"是实现我之后的最佳/唯一方式(将配置逻辑与业务逻辑分离)吗?如果是这样,如何利用Lua的模块加载规则来改变运行时加载的实际模块?
我最近学习了Ruby和Rails,我遇到了这些术语,我无法理解.
所以请解释一下(如果可能的话,类比)什么是松散耦合代码.
我知道我们几乎一直都希望在应用程序中的组件之间实现松散耦合以及为什么。
但是在下面的例子中,如果有人可以澄清为什么当我们将服务作为参数传递给构造函数时它没有紧密耦合,那么我就可以理解幕后发生的逻辑。
export class Test(){
dataResults;
constructor(service: testService){
this.dataResults = service.getData()
}
}
Run Code Online (Sandbox Code Playgroud) 我们有一个庞大的系统通过Unity与其数据源(Navision)松散绑定 - 我们有机会将其交换出来并拥有自己的数据库.
所以我们已经浏览了一下,并且非常喜欢Fluent NHibernate的外观 - 我们试图获得概念验证并交换掉一些服务.
我们想要使用NHibernates HiLo算法 - 不幸的是我们从Navision继承了字符串ID,它的ID是前缀(例如COL00001),所以要匹配我们需要使用字符串Id的接口.
有谁知道我会怎么样......
Id(x => x.ID).GeneratedBy.HiLo("100");
Run Code Online (Sandbox Code Playgroud)
在ID是字符串的地方工作?我们目前正在获取Identity必须是int,long等
谢谢,
安迪
------更新------
我在文章建议中尝试了这个例子但是这个功能已经从Fluent NHibernate的更高版本中删除了 - 但是有一个.Custom - 但我似乎无法让它工作!
public class ManufacturerMap : ClassMap<Manufacturer>
{
public ManufacturerMap()
{
Id(x => x.ID).GeneratedBy.Custom(typeof(StringTableHiLoGenerator));
Map(x => x.Name);
}
}
public class StringTableHiLoGenerator : TableHiLoGenerator
{
public override object Generate(ISessionImplementor session, object obj)
{
return base.Generate(session, obj).ToString();
}
}
Run Code Online (Sandbox Code Playgroud) 紧耦合是指一组类高度依赖彼此的情况.
class C {
A a;
C(B b) {
a = b;
}
}
Interface A {
}
class B implements A {
}
Run Code Online (Sandbox Code Playgroud)
在我的代码中,我通过类B的引用而不是父接口A接受类的对象.
我的代码松散或紧密耦合?
通过促进单一责任和关注点分离的设计实现松耦合.
使用父类或接口的引用使代码更灵活地采用任何子类的对象,但它如何促进单一责任.
松散耦合是否可以通过任何其他方式实现,而不是使用父类引用变量,在任何情况下都不是特定于我的代码?
loose-coupling ×11
c# ×3
.net ×1
angular ×1
asp.net-mvc ×1
coupling ×1
interface ×1
java ×1
lua ×1
mvvm ×1
nhibernate ×1
soc ×1
wpf ×1