Michael Abrash" Дзэн Ассемблера " имела некоторый изящный материал, хотя я признаю, что не вспоминаю специфических особенностей первое, что пришло на ум.
На самом деле это кажется на все, что Abrash записал, имел некоторый изящный материал оптимизации в нем.
ответ, используйте IoC для создания интерфейса членства, который использует уровень сервиса. реализация веб-сайта может использовать пространство имен web. И приложение для Windows может иметь другую реализацию. и поскольку вы можете внедрить эту зависимость, ваш уровень обслуживания не должен меняться: -)
Членство в ASP.NET зависит от сети, поэтому доступ к нему должен осуществляться в контроллере. MHO заключается в том, что уровень сервиса не должен быть жестко привязан к сети. Поэтому для добавления / удаления пользователей делайте это через контроллер.
OTOH на уровне сервиса можно прочитать Thread.CurrentPrincipal.Identity
, который не зависит от сети, но, как оказалось, полностью совместим с членством в ASP.NET. Так что, если вам нужно получить только текущего пользователя, вы можете сделать это без предварительного разделения проблем.
Неужели использование System.Web действительно проблема? Это ничем не отличается от привязки к System.Configuration или System.IO. Его может использовать любое приложение, вне зависимости от того, находится оно в автономном режиме или нет.
Я обычно привязываю свои веб-приложения к сборкам, которые более классичны, чем сборки «winforms», чтобы получить доступ к полезным объектам коллекций и тому подобное.
111987]