小编Alw*_*wyn的帖子

WCF与ASP .Net Web API

使用每种技术的优缺点是什么?

WCF Web Api现已合并到Asp.net Asp.net web api现在支持自托管.

我仍然想象如果我想为相同的操作公开多个协议模式,我仍然倾向于WCF,或者Mvc端点也可以这样做吗?

新的Asp.Net web api也暴露了Wsdl吗?如果不是,客户如何找出他们可以使用的操作?

可以说,Mvc的最佳特性是模型绑定器.WCF的等效性有多强?

那么有人能告诉我Asp.net web api带来哪些优势?WCF似乎绝对是更强大/可扩展的选择,imo.关于Mvc Web Api对WCF模型的唯一要求可能是易于开发,但这意味着如果它最终成为严重的设计限制则蹲下.

wcf asp.net-mvc-4 asp.net-web-api

93
推荐指数
3
解决办法
5万
查看次数

如何在AutoMapper中配置条件映射?

假设我有以下实体(类)

public class Target
{
    public string Value;
}


public class Source
{
    public string Value1;
    public string Value2;
}
Run Code Online (Sandbox Code Playgroud)

现在我想配置自动映射,如果Value1以"A"开头,则将Value1映射到Value,否则我想将Value2映射到Value.

这是我到目前为止:

Mapper
    .CreateMap<Source,Target>()
    .ForMember(t => t.Value, 
        o => 
            {
                o.Condition(s => 
                    s.Value1.StartsWith("A"));
                o.MapFrom(s => s.Value1);
                  <<***But then how do I supply the negative clause!?***>>
            })
Run Code Online (Sandbox Code Playgroud)

然而,我仍然不知道的部分是如果在早期条件失败时告诉AutoMapper 采取s.Value2措施.

在我看来,API的设计并不像它可能......但可能是我缺乏知识妨碍了.

c# lambda automapper automapper-2

40
推荐指数
2
解决办法
4万
查看次数

加入声明操作顺序

鉴于以下3种方式加入

select t1.* from t1
left join t2 on t1.fk = t2.pk
join t3 on t2.fk = t3.pk
Run Code Online (Sandbox Code Playgroud)

如果t2和t3之间的连接失败,那么是否会返回t1和t2之间成功连接的行?如果操作顺序从左到右,我假设没有,但是如果它从右到左进行评估(t3首先连接到t2),那么即使前者失败,t1仍然会被返回.

它是如何工作的?

sql t-sql sql-server join left-join

24
推荐指数
1
解决办法
1万
查看次数

丰富的域模型和ORM

Martin Fowler认为Anemic Domain Model是一种反模式.

由于Object Relational Impedence Missmatch,将持久性模型作为域模型滚动似乎也很严重.对于持久性和规范化的问题,我们倾向于将类分解为非常小的小块,在这些类之上打字方法是愚蠢的.加上持久性很少发生变化,但业务逻辑变化很大.

所以我们需要一个基于持久性模型构建的DomainModel(而不是同一个).然后,此域模型将包含业务逻辑属性和方法.

但是现在这些领域模型仍然落后于服务,为了将它们暴露给外部世界,我们需要将它们转换为DTO.

我们在这里做的是manny mappings.

  1. 对域模型的持久性
  2. 将域模型转换为DTO以在服务之间传递

它不会在那里结束,因为DTO可能需要映射到ViewModel.

所有这些以及重复验证逻辑的问题仍然没有消失,因为客户需要实时验证.ViewModel对验证一无所知,因此在SPA中,您不得不在客户端(通常使用javascript)再次重写验证逻辑.

服务本质上是无状态的(消息或面向RPC),所以我们在Persistence,OO之间进行所有这些映射,然后返回到Procedural,有什么好处?您如何证明大多数IT预算的实际成本?

我知道如何拥有完整的DDD,使用Aggregate Roots,Domain Models等会很"酷",但你怎么能证明成本和开发效率的打击?

反模式(或反模式)是社交或商业运营或软件工程中使用的模式,可能是常用但在实践中无效和/或适得其反

如果是这样,DDD和Rich Domain Model不会适合上面的反模式定义而不是"精益"域模型.对不起,我鄙视加载的单词"Anemic".

通过保持域模型,"精益"你实际上允许它被共享而不违反"抽象依赖原则","不要重复自己"以及将一个数据载体映射到另一个数据载体的耗时,繁琐且容易出错的过程,以及除此之外的任何相关单元测试(除非您考虑使用单元测试进行映射并希望获得最佳效果).

architecture design-patterns domain-driven-design anti-patterns

20
推荐指数
3
解决办法
6531
查看次数

Assembly.GetTypes()抛出异常

装配GetTypes()在幕后做什么?假设已经加载了一个程序集AppDomain,它还需要从物理DLL中读取吗?汇编清单的作用是什么?

通过这样的程序集迭代:

AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes()) 
Run Code Online (Sandbox Code Playgroud)

我偶尔会收到以下错误:

 Could not load file or assembly 
Run Code Online (Sandbox Code Playgroud)

这告诉我,因为一个程序集被加载到AppDomain它不一定完全加载到内存.有时它仍然需要返回文件.

我的问题:

  1. 它为什么这样做?
  2. 如何检测这些半负载组件?

.net c# reflection

15
推荐指数
1
解决办法
1万
查看次数

你如何对Crm 2011进行索引?

我们使用Crm 2011作为我们的持久层,我们注意到了糟糕的性能.

我们看起来并且看到有索引,但索引是实体中所有列的组合(差不多).这使得它在所有意图和目的上几乎无用.

那么我该如何加快速度呢?我可以去数据库并手动添加一个索引,但是如果可能的话,我希望通过适当的渠道以及将来的可维护性.我已经转移了Bing和Google以及Stackoverflow,但我找不到有关此基本功能的任何信息.

请帮忙.

indexing xrm dynamics-crm-2011

13
推荐指数
1
解决办法
6077
查看次数

入住前运行单元测试

使用Visual Studio和TFS,最好是Specflow或标准单元测试.

我希望开发人员在签入之前将所有单元测试作为策略运行.如果单元测试中断,则vS应该阻止他们检入,就像在合并冲突中运行一样.

我知道有可以执行此操作的后期构建脚本,但实际上如果单元测试中断,我宁愿它根本不进入源代码控制.另外,等待完整构建的转变相当缓慢.然后是那些打破谁的东西的争吵.

所以不,我希望在办理登机手续之前将本地考试通过.我该怎么做?是的,他们可以点击按钮,但我喜欢让他们比这更"激励".

c# tdd bdd unit-testing visual-studio

11
推荐指数
2
解决办法
5857
查看次数

如何解决.NET Dll地狱?

怎么修?

我有2个第三方程序集,它们使用NewtonSoftJson.dll.捕获的是其中一个使用较旧的3.xx而另一个使用4.5.x. 所以在运行时,两个组件中至少有一个抱怨另一个.

我该如何解决这个问题?我可以设置服务,但代码和环境目前没有这样设置.在给定的时间内,它也可以安全地完成重构.

.net c# dll

11
推荐指数
1
解决办法
4845
查看次数

设计时间反思

有没有办法在设计时进行预编译反射?

我的意图是使用T4基于实现某些接口的类来吐出自定义代码.我知道我可以调用反射,但我希望T4脚本在编译之前吐出额外的代码,否则我需要编译代码两次,一次生成dll,两次让T4反映先前生成的dll并添加额外的脚手架.

有没有办法在设计时做反思?

有一个更好的方法吗?

.net reflection t4 design-time visual-studio

10
推荐指数
2
解决办法
3981
查看次数

通过GET进行Mvc Web API复杂对象查询

有没有办法通过"GET"查询web api,但是参数中有复杂的对象?

到目前为止我看到的所有例子似乎都表明我必须使用"POST".但我不想使用"POST",因为这是一个查询,同时我不想要一个带有16个参数的函数,因为它只是尖叫脆弱.

public Product Get(int id, string name, DateTime createdBy, string stockNumber, ... ) 
    { 
          ...
    }
Run Code Online (Sandbox Code Playgroud)

我希望将上述内容转化为:

public Product Get(ProductQuery query) 
    { 
          ...
    }
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?你如何使HttpClient与上述服务一起工作.

asp.net rest asp.net-mvc-4 asp.net-web-api

10
推荐指数
1
解决办法
6144
查看次数