想象一个更复杂的CRUD应用程序,它具有三层架构并通过Web服务进行通信.客户端开始与服务器的对话,并做一些像向导一样的向导.要处理向导,客户端需要服务器提供的反馈.
我们开始讨论这种方法的有状态或无状态Web服务.我结合自己的经验做了一些研究,这让我想到了后面提到的问题.
具有以下属性的无状态Web服务(在我们的示例中):
+ high scalability
+ high availability
+ high speed
+ rapid testing
- bloated contract
- implementing more logic on server-side
Run Code Online (Sandbox Code Playgroud)
但是我们可以划掉前两点,我们的应用程序不需要高可伸缩性和可用性.
所以我们来到有状态的网络服务.我已经阅读了大量的博客和论坛帖子,实现有状态网络服务的最发明点是:
+ simplifies contract (protocol)
- bad testing
- runs counter to the basic architecture of http
Run Code Online (Sandbox Code Playgroud)
但几乎所有的Web应用程序都没有这些坏点吗?Web应用程序使用cookie,查询字符串,会话ID和所有内容来避免http的无状态.
那么为什么网络服务不好呢?
如果文件数量更多,CouchDB中的数据查询速度会变慢吗?
示例场景:
问题:查询数据库是否需要超过2 - 3秒才能找到匹配的客户名称?如果CouchDB中有很多文档(例如大约100000个文档),查询是否会为每个查询花费更多时间?
有关如何创建视图/索引的任何指针都会有所帮助.
提前致谢.
这是代码.
void sendMail()
{
MailMessage mail = new MailMessage();
mail.To.Add("abc@gmail.com");
mail.From = new MailAddress("abc@gmail.com", txt_name.Text);
mail.Subject = txt_subject.Text;
mail.Body = txt_body.Text;
SmtpClient smtp = new SmtpClient("smtp.gmail.com");
smtp.EnableSsl = true;
NetworkCredential yetki = new NetworkCredential("abc@gmail.com", "11111111");
smtp.Credentials = yetki;
smtp.Send(mail);
Response.Write("mailiniz ba?ar?l? bir ?ekilde gönderilmi?tir");
}
protected void btn_gonder_Click(object sender, EventArgs e)
{
sendMail();
}
Run Code Online (Sandbox Code Playgroud) 我在C#中创建了两个实体(简化):
class Log {
entries = new List<Entry>();
DateTime Date { get; set; }
IList<Entry> entries { get; set; }
}
class Entry {
DateTime ClockIn { get; set; }
DateTime ClockOut { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我使用以下代码初始化对象:
Log log1 = new Log() {
Date = new DateTime(2010, 1, 1),
};
log1.Entries.Add(new Entry() {
ClockIn = new DateTime(0001, 1, 1, 9, 0, 0),
ClockOut = new DateTime(0001, 1, 1, 12, 0, 0)
});
Log log2 = new Log()
{
Date …Run Code Online (Sandbox Code Playgroud) 我正在使用拆分视图模板来创建一个简单的拆分视图,当然在纵向模式下有一个弹出窗口.我正在使用模板生成的默认代码,添加/删除工具栏项并设置弹出控制器并将其删除.这两个方法是splitViewController:willShowViewController:...和splitViewController:willHideViewController:...
我试图弄清楚如果用户在显示弹出窗口时点击工具栏按钮,弹出窗口就会消失.如果你点击弹出窗口外的任何地方,你可以使弹出窗口消失而不选择项目,但如果用户再次点击按钮我也想让它消失.
我被困的地方就是:似乎没有一种明显的,简单的方法来挂钩工具栏按钮的动作.我可以使用调试器告诉我在按钮上调用的操作是showMasterInPopover.我承认,我不熟悉以编程方式与选择器合作.
我可以以某种方式编写一个动作并将其设置在工具栏上,而不会覆盖已存在的动作吗?例如,添加一个调用现在那个的动作?或者我是否必须编写一个动作来显示/隐藏自己的弹出窗口(现在可能是由分割视图控制器在幕后进行的行为???).
或者我错过了一种简单的方法来将此行为添加到此按钮而不更改为我设置的现有行为?
谢谢!
我正在为.net框架寻找一个开源(GPL,LGPL等)图形布局库,最好是完全托管代码.我并不担心事物的可视化方面.
我可以找到很多用于Java的,但没有用于.net ...
谢谢!
我有一个奇怪的问题,Hibernate运行的查询比我要求的多,并且看不到需要.
这是我的控制器:
@Autowired UserService users;
@RequestMapping("/test")
@ResponseBody
public String test() {
User user = users.findUser(1L);
return "Found user: "+user.getEmail();
}
Run Code Online (Sandbox Code Playgroud)
这是UserService:
@Component
public class UserService {
@javax.persistence.PersistenceUnit private EntityManagerFactory emf;
private JpaTemplate getJpaTemplate() {
return new JpaTemplate(emf);
}
public User findUser(long id) {
long start = System.currentTimeMillis();
JpaTemplate jpaTemplate = getJpaTemplate();
User user = jpaTemplate.find(User.class, id);
System.out.println(System.currentTimeMillis() - start);
return user;
}
}
Run Code Online (Sandbox Code Playgroud)
对findUser()的调用大约需要140ms ......相当令人费解.数据库对其他查询执行得很好,包括一些处理程序中的这个(我怀疑它不是第一个查询运行时).
JProfiler建议每次调用它时,会向数据库发送四个查询(不一定按此顺序):
1) [5ms] select user... (the actual query) 2) [7ms] SHOW COLLATION 3) …
我正在使用带有特定端口的Visual Studio开发服务器.有没有办法添加虚拟目录?
编辑:
对不起,我不太清楚.我希望能够将一个或多个虚拟目录添加到任意物理目录中.例如:http:// localhost/c_drive /将映射到C:\,http:// localhost:/ d_drive /将映射到D:\等.
asp.net virtual-directory webdev.webserver visual-studio-2008
让我们以CVS中提交的单个文件为例,其中包含以下历史记录.
test.cpp
rev 1.1
rev 1.2
rev 1.3
如何恢复到版本1.2丢弃1.3中的更改,然后继续从该点进行修改?
在64位计算机上,哪项操作(即32位操作或64位操作(如屏蔽32位标志或64位标志))会更便宜?
c# ×3
asp.net ×2
.net ×1
32bit-64bit ×1
algorithm ×1
couchdb ×1
cvs ×1
graph-layout ×1
hibernate ×1
ipad ×1
java ×1
jprofiler ×1
linq ×1
mysql ×1
performance ×1
popover ×1
spring ×1
stateful ×1
stateless ×1
uisplitview ×1
web-services ×1