我正在开发自己的社交网络,我还没有在网上找到用户操作流的实现示例...例如,如何过滤每个用户的操作?如何存储动作事件?我可以将哪种数据模型和对象模型用于操作流和自己的操作?
使用新线程和使用线程池中的线程有什么区别?有什么性能优势,为什么我应该考虑使用池中的线程而不是我明确创建的线程?我在这里专门讨论.NET,但一般的例子很好.
我正在阅读关于Flux但是示例Todo应用程序太简单了,我无法理解一些关键点.
想象一下像Facebook这样的单页应用程序,它具有用户个人资料页面.在每个用户个人资料页面上,我们希望显示一些用户信息及其最后的帖子,并带有无限滚动.我们可以从一个用户档案导航到另一个用户档案.
在Flux架构中,这将如何与商店和调度员相对应?
我们会为PostStore每个用户使用一个,还是会有某种全球商店?那么调度员呢,我们会为每个"用户页面"创建一个新的Dispatcher,还是我们会使用单例?最后,该架构的哪个部分负责管理"特定于页面"的商店的生命周期以响应路由变化?
此外,单个伪页面可以具有多个相同类型的数据列表.例如,个人资料页上,我想同时显示关注和跟随.UserStore在这种情况下,单身人士如何工作?将UserPageStore管理followedBy: UserStore和follows: UserStore?
我们正在开发ASP.NET MVC应用程序,现在正在构建存储库/服务类.我想知道创建一个所有存储库实现的通用IRepository接口是否有任何重大优势,而每个存储库都有自己独特的接口和方法集.
例如:一个通用的IRepository接口可能看起来像(取自这个答案):
public interface IRepository : IDisposable
{
T[] GetAll<T>();
T[] GetAll<T>(Expression<Func<T, bool>> filter);
T GetSingle<T>(Expression<Func<T, bool>> filter);
T GetSingle<T>(Expression<Func<T, bool>> filter, List<Expression<Func<T, object>>> subSelectors);
void Delete<T>(T entity);
void Add<T>(T entity);
int SaveChanges();
DbTransaction BeginTransaction();
}
Run Code Online (Sandbox Code Playgroud)
每个Repository都会实现此接口,例如:
我们在之前的项目中遵循的备选方案是:
public interface IInvoiceRepository : IDisposable
{
EntityCollection<InvoiceEntity> GetAllInvoices(int accountId);
EntityCollection<InvoiceEntity> GetAllInvoices(DateTime theDate);
InvoiceEntity GetSingleInvoice(int id, bool doFetchRelated);
InvoiceEntity GetSingleInvoice(DateTime invoiceDate, int accountId); //unique
InvoiceEntity CreateInvoice();
InvoiceLineEntity CreateInvoiceLine();
void SaveChanges(InvoiceEntity); //handles inserts or updates
void DeleteInvoice(InvoiceEntity);
void …Run Code Online (Sandbox Code Playgroud) 我很难为微服务架构选择合适/安全的身份验证策略.我在这个主题上发现的唯一SO帖子就是这个:微服务架构中的单点登录
我的想法是在每个服务(例如,身份验证,消息传递,通知,配置文件等)中为每个用户提供一个唯一的引用(在逻辑上user_id与他相当)以及在id登录时获取当前用户的可能性.
从我的研究中,我发现有两种可能的策略:

在此策略中,身份验证应用程序是其中一项服务.但是每个服务必须能够进行转换session_id=> user_id所以它必须简单易行.这就是为什么我想到Redis,它会存储密钥:值session_id:user_id.

在此策略中,会话存储并不重要,因为它仅由身份验证应用程序处理.然后user_id可以转发到其他服务.我想到了Rails + Devise(+ Redis或mem-cached,或cookie存储等),但有很多可能性.唯一重要的是Service X永远不需要对用户进行身份验证.
这两种解决方案如何比较:
或者你可能会建议我在这里没有提到的另一种解决方案?
我更喜欢解决方案#1,但没有找到太多的默认实现,这可以保证我正朝着正确的方向前进.
我希望我的问题不会被关闭.我真的不知道还能在哪里问它.
提前致谢
我将学习RESTful Web服务(最好说我必须这样做,因为它是CS硕士学位课程的一部分).
我在维基百科上阅读了一些信息,我还在Sun Developer Network上阅读了一篇关于REST的文章,我发现这不是一项简单的技术,有一些用于构建RESTful应用程序的特殊框架,而且它经常与SOAP Web服务和程序员应该了解何时使用SOAP以及何时REST可能是很好的方法.
我记得几年前SOAP很受欢迎(时尚?),而'SOAP'项目必须出现在每个好的简历中.但在实践中,它很少用于实现非常简单的目的.
在我看来,REST是另一个"时尚的最后一句话"(或者我完全错了,因为我在实践中从未见过REST).
你能给我一些例子,说明应该使用REST吗?为什么我们不能在没有REST的情况下做同样的事情(或者为什么我们应该花更多的时间在没有REST的情况下做同样的事情)?
UPD:不幸的是,在第一次评论中,我看不到任何可以引起我注意的具体论点.让我觉得REST是很棒的技术!
我希望看到这样的答案:
我正在开发另一个复杂的HelloWorld应用程序,我们需要传输大量/微小的数据,我向我的同事提出了REST解决方案:
- 哦,该死的!Jonny,我们当然应该使用REST来实现这个应用程序!
- 是的,Billy,我们可以使用REST,但我们最好使用SOAP.相信我,因为我对开发HelloWorld应用程序有所了解.
- 但SOAP是上个世纪的老式技术,我们可以使用更好的技术.
- 比利,你准备花3天时间试验REST吗?我们可以在2小时内使用SOAP做到这一点.
- 是的,我确信我们将花费更多的时间来实现相同的安全性/性能/ /可扩展性/其他任何与SOAP相关的东西.我确信HelloWorld应用程序应该只使用REST开发.
我真的没有看到UUID的观点.我知道碰撞的可能性实际上是零,但实际上零甚至几乎不可能.
有人可以举个例子,除了使用UUID之外别无选择吗?从我见过的所有用途中,我可以看到没有UUID的替代设计.当然设计可能稍微复杂一点,但至少它没有非零概率的失败.
UUID闻起来像全球变量.全局变量有许多方法可以实现更简单的设计,但它只是懒惰的设计.
我正在构建一个需要以多种语言和语言环境提供的应用程序.
我的问题不仅仅是技术问题,而是关于架构,以及人们实际在生产中用来解决这个问题的模式.我找不到任何"食谱",所以我转向我最喜欢的Q/A网站:)
这是我的要求(它们真的是"标准"):
以下是我可以想到的可能解决方案:
每个组件都孤立地处理翻译
这意味着每个组件具有例如一组en.json,fr.json等文件以及与翻译的字符串一起的文件.还有一个辅助函数可以帮助读取取决于所选语言的值.
每个组件通过道具接收翻译
所以他们不知道当前的语言,他们只是将字符串列表作为与当前语言匹配的道具
你稍微绕过了道具,并可能使用上下文来传递当前语言
如果您有任何其他想法,请说!
你怎么做呢?
当我们在互联网上阅读有关设计模式时,我们注意到有3个类别:
但是当我们创建软件架构时,我们会考虑MVP,MVC或MVVM.
例如,在创作模式中我找到了单身模式,但我也在我的MPV中使用了单身.
所以我的问题是:设计模式是否超过了产品的所有结构?
如果是,那么单身如何成为一种设计模式?因为我可以在应用程序的任何地方使用它.基本上,它仅限于在内存中一次创建一个实例,但这个概念不能定义软件的设计方式吗?
如果没有,那么MVP,MVC和MVVM在哪三种模式中呢?软件的设计和架构有什么区别?
最近我一直在用docker compose进行一些实验,以便部署多个协作微服务.我可以看到微服务提供的许多好处,现在有一个很好的工具集来管理它们,我认为跳进微服务车并不是很难.
但是,我也一直在尝试Elixir,我非常喜欢它本身提供的好处.鉴于它鼓励将代码打包到多个解耦的应用程序中,并支持热代码升级,您如何将docker与elixir(或erlang)混合使用?
例如,如果我想使用docker因为它提供了dev-prod奇偶校验,那么elixir如何适应它?鉴于docker容器是不可变的,我失去了进行热代码升级的能力,对吗?蓝/绿部署或金丝雀发布怎么样?
我的意思是,我可以用Elixir编写微服务并使用它们就像用任何其他语言编写的那样,多语言无论如何都是微服务的好处之一,但是后来我没有得到使用OTP平台的全部好处,我猜测纯粹的协作erlang应用程序比使用中间队列在以不同(或非)语言编写的微服务之间进行通信更为优化.
architecture ×10
reactjs ×2
.net ×1
asp.net ×1
asp.net-mvc ×1
docker ×1
elixir ×1
erlang ×1
facebook ×1
javascript ×1
reactjs-flux ×1
redux ×1
rest ×1
soap ×1
stream ×1
threadpool ×1
translation ×1
uuid ×1
web-services ×1