小编Dav*_*vid的帖子

C#转移到Java,只需知道一些事情

我正在实现Android应用程序和Java开发的飞跃,并试图找到我的方式围绕java世界,特别是eclipse.我是一名经验丰富的C#.Net开发人员,一切看起来都很熟悉,但我需要了解一些基础知识.

我只需要澄清一些与C#/ Visual相关的Java/Eclipse:

1:Java项目/包/类是否等同于C#/ VS解决方案/项目/类?

2:在C#/ VS中我的项目"ProjectName"将编译成ProjectName.dll然后我可以参考,这在Java世界中是如何工作的?

3:在C#/ VS中你有不同的项目类型,控制台应用程序,win form应用程序,类库等,如果有的话,Java中的等价物是什么?

我觉得现在已经足够了.

任何帮助,将不胜感激.

干杯.

c# java eclipse visual-studio

15
推荐指数
2
解决办法
1616
查看次数

基于JSON的架构,如何最好地同步前端和后端

看一下将JSON用于基于.net REST的新系统,看起来很棒,但有一点可以暗示我的理解.保持应用程序任一端的JSON同步的策略是什么?

我的意思是,如果您为以下网站进行GET:www.mysite.com/item/12345.然后应用程序的.net端转到db,检索ID为12345的Item并将其解析为对象模型Item,然后将其序列化为JSON并返回.

如果您执行POST操作:www.mysite.com/item并通过 -

{
    "Id": "12346",
    "ItemName": "New Item",
    "ItemCost": 45
}
Run Code Online (Sandbox Code Playgroud)

然后,应用程序的.net端将其拾取,将其反序列化为Item对象,然后将其移交以添加到db.

如何让双方,JS对象模型和.net对象模型序列化同步?这只需要手工维护,还是有一种基于.net模型序列化为JSON提供模板的聪明方法?

我只是在寻找最佳实践,并了解已完成的事情,并且没有看到客户端如何知道将JSON传递给服务器端.

c# json

7
推荐指数
1
解决办法
671
查看次数

使用MVC的REST Web服务,这是一个好主意吗?

在.Net中,我认为Web服务是一种项目类型,您可以从菜单中选择,然后定义您的类和方法.Net会在引擎盖下完成所有这些黑魔法,以允许世界另一端的人参考我的网络服务,直接在他们的visual studio中使用我的类和方法开始编码.

所以有了这个先入为主的观念,当我看到使用MVC 3编写REST Web服务时(我知道MVC 4有一个REST api,但我正在等待完整版本)我想知道所有常见的东西,比如"这是一个好主意","这将经得起大量使用"和"我只是在写其他开发者会嘲笑的玩具网络服务".

现在我认为很多我的焦虑可能归结为微软尚未包装一个大的,过于复杂,臃肿,闪亮的REST包.因此,我希望人们告诉我,MVC网络服务是非常好的创造,我希望能让我的焦虑得到缓解.

有帮助吗?

c# rest asp.net-mvc-3

7
推荐指数
1
解决办法
5156
查看次数

为什么文件上传示例使用名称"qqfile"?

我注意到,在将文件发布到服务器以在请求"qqfile"中调用文件时,似乎存在这种不成文的约定.谷歌搜索我似乎无法找到任何关于为什么选择"qqfile"的探索.

在历史中是否存在一些根据为何使用此名称的原因?

file-upload http httpwebrequest

6
推荐指数
1
解决办法
2125
查看次数

Linq.Expression TryCatch-将异常传递给Catch块?

因此,我一直在修改Linq.Expressions(如果有人可以提出一种更合适或更优雅的方式来做我在做的事情,请随时鸣叫),并在尝试做某事时碰壁。

假设我们有一个简单的数学课:

public class SimpleMath {
    public int AddNumbers(int number1, int number2) {           
        return number1 + number2;
    }
}
Run Code Online (Sandbox Code Playgroud)

我决定将我们的AddNumbers方法转换为简单的Func<object, object, object>委托。

为此,请执行以下操作:

// Two collections, one for Type Object paramaters and one for converting to Type int.
List<ParameterExpression> parameters = new List<ParameterExpression>();
List<Expression> convertedParameters = new List<Expression>();

// Populate collections with Parameter and conversion
ParameterExpression parameter1 = Expression.Parameter(typeof(object));
parameters.Add(parameter1);
convertedParameters.Add(Expression.Convert(parameter1, typeof(int)));

ParameterExpression parameter2 = Expression.Parameter(typeof(object));
parameters.Add(parameter2);
convertedParameters.Add(Expression.Convert(parameter2, typeof(int)));

// Create instance of SimpleMath
SimpleMath simpleMath …
Run Code Online (Sandbox Code Playgroud)

c# lambda linq-expressions

6
推荐指数
1
解决办法
389
查看次数

用IEnumerable对C#Xml序列化对象

每当我尝试序列化具有IEnumerable集合的对象时,我都会遇到一个很大的错误,告诉我它无法序列化它,因为它是一个接口.现在我知道它为什么会发生,但它为我提出了一些其他问题.就像我打算在我的对象中拥有集合并且我想序列化它们,我需要求助于

  1. 在我的对象中使用List <>,CollectionBase,ReadOnlyCollectionBase.
  2. 使我的对象实现IXmlSerializable接口.
  3. 用可怕的属性装饰我的课程.
  4. 编写自己的序列化程序.

什么是最好的练习方式?

c# ienumerable xml-serialization

4
推荐指数
1
解决办法
4133
查看次数

业务逻辑层应该访问数据库/数据访问层吗?

我对BLL和DAL的关系有点困惑.BLL是否应通过依赖注入封装DAL?或者BLL是否只对域对象和DAL单独保存/更新?

例如,想象(在典型的MVC应用程序中)取消订单功能,要求您更新订单并更新库存.以下是我的行动的样子吗?

public ActionResult CancelOrder (Guid orderId) {
    Order order = orderRepository.Get(orderId);
    StockItem stockItem = stockRepository.Get(order.StockItemId);

    _orderService.CancelOrder(order, stockItem);
    orderRepository.Update(order);
    orderRepository.Update(stock);
    Return View();
}
Run Code Online (Sandbox Code Playgroud)

或者它应该更像下面这样?

public ActionResult CancelOrder (Guid orderId) {
    _orderService.CancelOrder(orderId);
    Return View();
}

(within OrderService)
public void CancelOrder(Guid orderId) {
    Order order = orderRepository.Get(orderId);
    StockItem stockItem = stockRepository.Get(order.StockItemId);

    order.Cancelled = true;
    stockItem.AmountInStock = stockItem.AmountInStock + order.Amount;
    orderRepository.Update(order);
    orderRepository.Update(stock);
}
Run Code Online (Sandbox Code Playgroud)

使用此选项,BLL将处理所有内容,包括数据访问.将注入存储库以避免紧密耦合.然后,任何实体检索将采用_orderService.GetOrder(orderId);相似的形式直接进入存储库.

请原谅示例的粗糙,因为我没有太多时间.我写的任何东西都是有意义的,还是我在荒野中?

c# design-patterns business-logic-layer data-access-layer

4
推荐指数
1
解决办法
3643
查看次数

DDD - 域模型中的CreatedBy/CreatedOn?

当数据库编写通过标准的应用程序为每个表,我有以下特性:CreatedOn,CreatedBy,ModifiedOn,ModifiedBy,Archived.

但是试图跟踪DDD我在质疑这些属性是否真的是域的一部分,应该包含在域对象中.如果我要从域中排除这些"元数据"属性但仍然希望它们在我的数据库中,那么如果我打算使用ORM,我需要实现某种DTO层.

所以,领域模型映射到DTO的CreatedOn,ModifiedOn等设置,然后推到数据库中.

所以我想我的问题是:

  1. 我是否只将这些属性作为我的域模型的一部分?
  2. 我是否删除它们但是不得不映射DTO的头痛?
  3. 是否有一种替代方案可以消除诸如实施某种形式的审计日志之类的问题?

design-patterns domain-driven-design dto

4
推荐指数
1
解决办法
1146
查看次数

代理正确的外部REST Api方式?

我们需要使用外部REST Api并动态更新我们网站上的内容,并遇到了跨站脚本和Ajax这个古老的问题.

我已经阅读了JSONP但是我不想在一百万年内沿着那条路走下去,因为它看起来真的是一个相当肮脏的黑客.

作为这个问题的解决方案,有一个本地服务作为任何外部Api请求的代理是"正确"和"正确"吗?所以在客户端上会有一个Ajax调用,../RestProxy/MakeRequest要求它向外部api传递它需要的请求的细节,它执行请求并返回传回的任何内容.

任何想法将不胜感激.

ajax rest json

3
推荐指数
1
解决办法
465
查看次数

NHibernate延迟加载但没有虚拟属性?

我正在经历一些奇怪的事情.我正在通过代码修改NHibernate 3.2映射,并且有一个非常简单的对象模型,我只是用来玩.

我在整个模型中的所有属性都没有标记为虚拟,因为我不想延迟加载.我正在按代码映射,并在每个类映射中进行设置Lazy(false);

但是,当涉及映射集合时,如果我在会话结束后尝试访问集合,则会出现错误"failed to lazily initialize a collection of role...".

我必须collectionMapping.Lazy(CollectionLazy.NoLazy);在它急于加载集合之前明确设置.我的理解是,除非您的模型中的属性是在虚拟定义的,否则无法进行延迟加载?

我从根本上错过了什么吗?

c# nhibernate lazy-loading

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

使用具有导入的 xsd 验证 XML 文档

我已经在互联网上搜索了 24 小时,但找不到有效的解决方案。

我有一个包含导入行的架构文件:

<xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" 
            schemaLocation=
              "http://www.w3.org/TR/2001/PR-xmldsig-core-20010820/xmldsig-core-schema.xsd"/>
Run Code Online (Sandbox Code Playgroud)

这是我验证 Xml 的代码:

XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas.Add(null, @"C:\TEMP\myschema.xsd");

XmlReader xmlReader = XmlReader.Create(new StringReader(document.InnerXml), settings);
while (xmlReader.Read()) { }
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到:The 'http://www.w3.org/2000/09/xmldsig#:Signature' element is not declared.

如果我将代码(根据搜索建议)更改为:

settings.ValidationType = ValidationType.DTD;
settings.DtdProcessing = DtdProcessing.Parse;
Run Code Online (Sandbox Code Playgroud)

然后我没有收到错误,但验证不起作用,因为我故意插入了一个无效值来测试验证是否正常工作。

我尝试添加直接导入的架构:

settings.Schemas.Add(null, @"C:\TEMP\xmldsig-core-schema.xsd");
Run Code Online (Sandbox Code Playgroud)

但收到错误:For security reasons DTD is prohibited in this XML document. To enable DTD processing...

我已经尝试了我能想到的以及搜索建议的 XmlReaderSettings 设置的所有组合。

我现在真的很困惑。

c# xml xsd xsd-validation

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

使用IRepository的C#Shared Transactions和NHibernate

我正在考虑使用NHibernate实现IRepository模式,我有一个问题,我无法回答搜索网络.

假设我有3个存储库,PersonRepository,PersonAddressRepository和PersonAccountRepository.现在假设业务逻辑指示存在调用PersonRepository.Deactivate(),PersonAddressRepository.Deactivate()和PersonAccountRepository.Deactivate()的"Deactivate Person"进程.

我希望能够按照......的方式做点什么.

using (ITransaction transaction = session.BeginTransaction()) { 
    session.Update(Person);
    session.Update(PersonAddress);
    session.Update(PersonAccount);
}
Run Code Online (Sandbox Code Playgroud)

因此,如果任何更新失败,整个过程将在数据库中回滚.现在我对NHibernate的理解是,你只能为每个对象创建一个Session,所以...

var cfg = new Configuration();
cfg.Configure();
cfg.AddAssembly(typeof(Person).Assembly);
ISessionFactory sessionFactory = cfg.BuildSessionFactory();
using (ISession session = sessionFactory.OpenSession()) {
    using (ITransaction transaction = session.BeginTransaction()) {
    session.Save(Person);
}
Run Code Online (Sandbox Code Playgroud)

这是对的还是我弄错了?有关NHibernate的多表更新和事务的事务的最佳实践是什么?

提前致谢.

c# nhibernate transactions irepository

0
推荐指数
1
解决办法
1099
查看次数