我正在实现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中的等价物是什么?
我觉得现在已经足够了.
任何帮助,将不胜感激.
干杯.
看一下将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传递给服务器端.
在.Net中,我认为Web服务是一种项目类型,您可以从菜单中选择,然后定义您的类和方法.Net会在引擎盖下完成所有这些黑魔法,以允许世界另一端的人参考我的网络服务,直接在他们的visual studio中使用我的类和方法开始编码.
所以有了这个先入为主的观念,当我看到使用MVC 3编写REST Web服务时(我知道MVC 4有一个REST api,但我正在等待完整版本)我想知道所有常见的东西,比如"这是一个好主意","这将经得起大量使用"和"我只是在写其他开发者会嘲笑的玩具网络服务".
现在我认为很多我的焦虑可能归结为微软尚未包装一个大的,过于复杂,臃肿,闪亮的REST包.因此,我希望人们告诉我,MVC网络服务是非常好的创造,我希望能让我的焦虑得到缓解.
有帮助吗?
我注意到,在将文件发布到服务器以在请求"qqfile"中调用文件时,似乎存在这种不成文的约定.谷歌搜索我似乎无法找到任何关于为什么选择"qqfile"的探索.
在历史中是否存在一些根据为何使用此名称的原因?
因此,我一直在修改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) 每当我尝试序列化具有IEnumerable集合的对象时,我都会遇到一个很大的错误,告诉我它无法序列化它,因为它是一个接口.现在我知道它为什么会发生,但它为我提出了一些其他问题.就像我打算在我的对象中拥有集合并且我想序列化它们,我需要求助于
什么是最好的练习方式?
我对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);相似的形式直接进入存储库.
请原谅示例的粗糙,因为我没有太多时间.我写的任何东西都是有意义的,还是我在荒野中?
当数据库编写通过标准的应用程序为每个表,我有以下特性:CreatedOn,CreatedBy,ModifiedOn,ModifiedBy,Archived.
但是试图跟踪DDD我在质疑这些属性是否真的是域的一部分,应该包含在域对象中.如果我要从域中排除这些"元数据"属性但仍然希望它们在我的数据库中,那么如果我打算使用ORM,我需要实现某种DTO层.
所以,领域模型映射到DTO的CreatedOn,ModifiedOn等设置,然后推到数据库中.
所以我想我的问题是:
我们需要使用外部REST Api并动态更新我们网站上的内容,并遇到了跨站脚本和Ajax这个古老的问题.
我已经阅读了JSONP但是我不想在一百万年内沿着那条路走下去,因为它看起来真的是一个相当肮脏的黑客.
作为这个问题的解决方案,有一个本地服务作为任何外部Api请求的代理是"正确"和"正确"吗?所以在客户端上会有一个Ajax调用,../RestProxy/MakeRequest要求它向外部api传递它需要的请求的细节,它执行请求并返回传回的任何内容.
任何想法将不胜感激.
我正在经历一些奇怪的事情.我正在通过代码修改NHibernate 3.2映射,并且有一个非常简单的对象模型,我只是用来玩.
我在整个模型中的所有属性都没有标记为虚拟,因为我不想延迟加载.我正在按代码映射,并在每个类映射中进行设置Lazy(false);
但是,当涉及映射集合时,如果我在会话结束后尝试访问集合,则会出现错误"failed to lazily initialize a collection of role...".
我必须collectionMapping.Lazy(CollectionLazy.NoLazy);在它急于加载集合之前明确设置.我的理解是,除非您的模型中的属性是在虚拟定义的,否则无法进行延迟加载?
我从根本上错过了什么吗?
我已经在互联网上搜索了 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 设置的所有组合。
我现在真的很困惑。
我正在考虑使用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# ×9
json ×2
nhibernate ×2
rest ×2
ajax ×1
dto ×1
eclipse ×1
file-upload ×1
http ×1
ienumerable ×1
irepository ×1
java ×1
lambda ×1
lazy-loading ×1
transactions ×1
xml ×1
xsd ×1