2. Solid Web Content (SWC) Dizin Yapısı

Hızlı ve basit, fakat profesyonel web siteleri geliştirmek için hazırladığım web yazılım geliştirme Framework'üm. Sayısız iş çıkardım, bir kere alışırsanız ASP.NET size çok bayaa gelir.

2. Solid Web Content (SWC) Dizin Yapısı

Mesajgönderen freakmaxi tarih Pzr Kas 16, 2008 1:06 am

Solid Web Content belli bir dizin yapısı içinde çalışmaktadır. Bununla ilgili dizin yapısını aşağıda verip açıklamasını yapacağım.

[WebROOT]
-- [Versiyon Dizini]
---- bin
---- Themes
------ Dlls
------ [Tema Adı]
-------- PublicContents
---------- [Her Dil Dosyası için Aynı isimli İçerik Klasörü]
-------- Templates
-------- Translations
-------- Addons [Opsiyonel]
---------- [AddonAdı]
------------ Dlls
------------ Content
-------------- PublicContents
---------------- [Her Dil Dosyası için Aynı isimli İçerik Klasörü]
-------------- Templates
-------------- Translations

Yukarıdaki explorer penceresindeki çıktısı aşağıdaki gibi olacaktır.

Resim

Şimdi bu yapıyı açıklayalım.

Öncelikli olarak Versiyon Dizini neden var? Bir sitenin farklı versiyonları zaman içinde olabilir. Örneğin yaptığınız bir tasarımın yeni hali veya eklemiş olduğunuz yeni bir özellik. Eğer yazılımınız her iki siteninde ayrı versiyonlarını aynı yapı altında çalışmasını gerektiriyorsa ozaman versiyonları tanımlayarak, yazılımlar arasında kullanıcılar ve siz geçiş yapabiliyorsunuz. Solid Web Content da hazırlanmış bir yazılım versiyon bağımlı olarak başka bir versiyon altında çalışabilmektedir. Örneğin 1.x versiyonundaki bir fonksiyon 2.x de kullanılmaktadır. Bu durumda 2.x, 1.x'in upgrade i konumunda olacaktır. Sizde 2.x de SWC'de bulunan CrossCall ile 1.x'deki bir fonksiyonu 2.x içinde çalıştırıp kullanabileceksiniz. Tabii bu opsiyonel bir durum. Eğer böyle bir versiyon ayrımınız yok ise ozaman hiç versiyon dizinini kullanmadan da Solid Web Content'i çalıştırabilirsiniz.

bin dizini, framework dll dosyalarının bulunacağı klasördür.
Themes dizini, Tema ve bu temalara bağlı dll dosyalarını barındıran klasördür.
Themes\Dlls dizini içinde Temanın yazılımsal dll dosyaları bulunmaktadır.
Themes\[Tema Adı] dizini Tema içeriğinizi barındıran klasördür. Bir Themes dizini içinde bir tane Dlls klasörü olur fakat farklı adlarda birden fazla Tema klasörü bulunabilir. Üst Limit yoktur...

Her Tema klasörü içinde bulunması GEREKEN 3 adet klasör vardır. Bunlar;
- PublicContents
- Templates
- Translations

Templates dizini içinde HTML Template dosyalarınız bulunacaktır. Bu dosyalar [templateadı].htm şeklinde tanımlanmalıdır. Bunlara ek olarak Template dosyaları ile bağlantılı olarak Configuration.xml ve ControlsMap.xml adlarında 2 adet XML dosyası bulunması gerekmektedir. Bu dosyalar, kullanım amaçları ve içerik biçimleri hakkında yazının ilerleyen kısımlarında bilgi vereceğim.

Translations klasörü içinde sadece dile ait XML dosyaları olması gerekmektedir. Bu dosyanın ismi içeriğinde belirtilen code attribute nun değeri ile aynı adda olması gerekmektedir. Bu dizin içinde MUTLAKA 1 adet dil dosyası bulunması gerekmektedir. Dosyanın standart içeriği aşağıdaki gibidir.

Kod: Tümünü seç
<?xml version="1.0" encoding="utf-8" ?>
<translations name="Turkçe" code="tr-TR">
  <translation id="TEMPLATE_IDMUSTBESET">TemplateID belirtilmemiş</translation>
  <translation id="CONTROLSMAPNOTFOUND">ControlsMapXML dosyası bulunamadı</translation>
  <translation id="CONFIGURATIONNOTFOUND">ConfigurationXML dosyası bulunamadı</translation>
  <translation id="TEMPLATE_NOFOUND">{0} İsimli Şablon dosyası bulunamadı</translation>
  <translation id="TEMPLATE_AUTH">Bu Şablon Kimlik Bilgisi Gerektirmektedir</translation>
  <translation id="SITETITLE">Tuna Çelik SWC Anlatım Sitesi</translation>
</translations>


Kendi çevrimlerinizi bu dosya içerisine aşağıdaki şekilde ekleyebilirsiniz.

Kod: Tümünü seç
<?xml version="1.0" encoding="utf-8" ?>
<translations name="Turkçe" code="tr-TR">
  <translation id="TEMPLATE_IDMUSTBESET">TemplateID belirtilmemiş</translation>
  <translation id="CONTROLSMAPNOTFOUND">ControlsMapXML dosyası bulunamadı</translation>
  <translation id="CONFIGURATIONNOTFOUND">ConfigurationXML dosyası bulunamadı</translation>
  <translation id="TEMPLATE_NOFOUND">{0} İsimli Şablon dosyası bulunamadı</translation>
  <translation id="TEMPLATE_AUTH">Bu Şablon Kimlik Bilgisi Gerektirmektedir</translation>
  <translation id="SITETITLE">Tuna Çelik SWC Anlatım Sitesi</translation>

  <!-- Dil Çevrimleri -->
  <translation id="code_noimage">Oyuncunun Internette Kaydı Bulunamadı</translation>
  <translation id="code_deleteerror">Web Kayıtlarının Silinmesinde Sorun Oluştu</translation>
  <!-- Dil Çevrimleri SONU -->
</translations>


Dil dosyasında TEMPLATE_IDMUSTBESET, CONTROLSMAPNOTFOUND, CONFIGURATIONNOTFOUND, TEMPLATE_NOFOUND, TEMPLATE_AUTH, SITETITLE idlerine atanmış herhangi bir çevrim bulunmazsa, bu çevrimlere karşılık gelen ingilizce mesajlar sistem tarafından ihtiyaç duyulduğunda kullanıcıya gösterilecektir.

PublicContents dizini içerisinde her bir dil dosyası ile aynı adı taşıyan bir çevrim klasörü olması gerekmektedir. Örneğin yukarıdaki örnekte dosyanın adı tr-TR.xml ise, bu dizin içinde tr-TR adında bir klasör bulunması gerekmektedir. Bu dizin içine tüm çevrimle ilgili resimleri, css dosyalarını, js dosyalarını veya ilişkili herhangi bir başka dosyayı konumlandırabilirsiniz.

Addons dizini opsiyonel bir dizindir. Eğer herhangi bir Addon var ise bu dizini yaratıp içine addon'un TopLevel Class ismi ile bir dizin yaratmanız ve içeriğini oraya koymanız yeterli olacaktır.

Bir Addon dizini içinde Contents ve Dlls olmak üzere 2 adet klasör vardır.
Addon'a bağlı Dlls dizini içinde Addon ile ilgili dll dosyaları, Content dizini içinde de aynı Tema klasörü içeriğinde olduğu gibi 3 adet klasörün bulunması GEREKMEKTEDIR. Bu klasörlerin yapısı ve çalışma mantığı Tema klasörünün ki ile tamamen aynıdır.

Templates dizini içinde konumlandıracağınız Configuration.xml dosyasının içeriği sayfa güvenliğini sağlamak ve temel bazı SWC ayarlarını atamaktır. Bu dosyanın içeriği aşağıdaki gibi olacaktır.

Kod: Tümünü seç
<?xml version="1.0" encoding="utf-8" ?>
<Settings>
  <Configuration>
    <Item key="authenticationpage" value="login" />
    <Item key="defaultpage" value="main" />
    <Item key="defaulttranslation" value="tr-TR" />
    <Item key="defaultcaching" value="TextsOnly" />
  </Configuration>
  <Services>
    <AuthenticationKeys>
      <Item id="IsLoggedIn" />
    </AuthenticationKeys>
    <Item type="template" id="login" authentication="false" />
    <Item type="template" id="main" authentication="true" />
  </Services>
</Settings>


Settings\Configuration tagı altında bulunan Item değerleri SWC'nin ihtiyaç duyduğu değerleri
Settings\Services tagı altında bulunan değerler ise Template dosyalarının ihtiyaç duyduğu ayaları içermektedir.

ControlsMap.xml dosyasının içeriği ise, Template'lerde kullanılacak Server-Side kontrollerin tanımlarını tutması amaçlıdır. Bu dosyanın içeri aşağıdakine benzer olacaktır.

Kod: Tümünü seç
<?xml version="1.0" encoding="utf-8" ?>
<ControlsMap>
  <!-- TEMPLATE: login -->
  <Map controlid="AdminPassword">
    <Type>Password</Type>
    <CallFunction />
    <DefaultButtonID>AdminLoginButton</DefaultButtonID>
    <Attributes />
  </Map>
  <Map controlid="AdminLoginButton">
    <Type>Button</Type>
    <CallFunction>AdmPanelLib?AdminControl.DoLogin,~AdminPassword</CallFunction>
    <Text>Giriş Yap</Text>
    <Attributes />
  </Map>
  <!-- TEMPLATE: login END -->
</ControlsMap>


Eğer tüm SWC üzerinde herhangi bir Server-Side kontrol tanımlamanız yok ise ozaman bu dosyanın içeri aşağıdaki gibi olmalıdır.

Kod: Tümünü seç
<?xml version="1.0" encoding="utf-8" ?>
<ControlsMap />


Bu bahsi geçen ControlsMap.xml ve Configuration.xml dosyaları ile ilgili ayrıntılı anlatımları Solid Web Content forumu altında bulabilirsiniz.

SOLID WEB CONTENT'DE KULLANACAĞINIZ TÜM TEXT DOSYALARININ UTF-8 FORMATINDA KAYIT OLMASI GEREKMEKTEDİR.

Yukarıdakilerin ötesinde Application tanımlaması yaptığınız dizin içerisinde bulunan web.config dosyasının içeriği aşağıdaki gibi olmalıdır.

Kod: Tümünü seç
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
   <appSettings>
      <!--   You have to put a "\" at the end of the value attribute's
         value if there is not a "\" exists...
         
         LoggingRoot Directory HAVE TO HAVE the PERMISSION to write and read file for ASP.NET account...
   -->
      <add key="DefaultTheme" value="[Varsayılan Tema Adı]" />
      <add key="VirtualRoot" value="/" />
      <add key="PyhsicalRoot" value="[Yazılımın Çalıştığı Alanın Fiziksel Yol]" />
      <add key="SiteVersion" value="[Site Versiyonu]" />
                <add key="Debugging" value="true" />
      <add key="LoggingPath" value="[Yazılımın Çalıştığı Alanın Fiziksel Yol]\SWCLogs" />
   </appSettings>
   <system.web>
    <httpRuntime executionTimeout="86400" maxRequestLength="2048000" />
    <httpModules>
      <add name="SWCRequestModule" type="SolidDevelopment.Web.RequestModule" />
    </httpModules>
    <httpHandlers>
      <add verb="*" path="*" type="SolidDevelopment.Web.RequestHandlerFactory" validate="true" />
    </httpHandlers>
      <!--  DYNAMIC DEBUG COMPILATION
          Set compilation debug="true" to insert debugging symbols (.pdb information)
          into the compiled page. Because this creates a larger file that executes
          more slowly, you should set this value to true only when debugging and to
          false at all other times. For more information, refer to the documentation about
          debugging ASP.NET files.
    -->
      <compilation defaultLanguage="vb" debug="true">
         <assemblies>
            <add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
            <add assembly="System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /></assemblies></compilation>
      <!--  CUSTOM ERROR MESSAGES
          Set customErrors mode="On" or "RemoteOnly" to enable custom error messages, "Off" to disable.
          Add <error> tags for each of the errors you want to handle.

          "On" Always display custom (friendly) messages.
          "Off" Always display detailed ASP.NET error information.
          "RemoteOnly" Display custom (friendly) messages only to users not running
           on the local Web server. This setting is recommended for security purposes, so
           that you do not display application detail information to remote clients.
    -->
      <customErrors mode="RemoteOnly" />
      <!--  AUTHENTICATION
          This section sets the authentication policies of the application. Possible modes are "Windows",
          "Forms", "Passport" and "None"

          "None" No authentication is performed.
          "Windows" IIS performs authentication (Basic, Digest, or Integrated Windows) according to
           its settings for the application. Anonymous access must be disabled in IIS.
          "Forms" You provide a custom form (Web page) for users to enter their credentials, and then
           you authenticate them in your application. A user credential token is stored in a cookie.
          "Passport" Authentication is performed via a centralized authentication service provided
           by Microsoft that offers a single logon and core profile services for member sites.
    -->
      <authentication mode="Windows" />
      <!--  AUTHORIZATION
          This section sets the authorization policies of the application. You can allow or deny access
          to application resources by user or role. Wildcards: "*" mean everyone, "?" means anonymous
          (unauthenticated) users.
    -->
      <authorization>
         <allow users="*" />
         <!-- Allow all users -->
         <!--  <allow     users="[comma separated list of users]"
                             roles="[comma separated list of roles]"/>
                  <deny      users="[comma separated list of users]"
                             roles="[comma separated list of roles]"/>
            -->
      </authorization>
      <!--  APPLICATION-LEVEL TRACE LOGGING
          Application-level tracing enables trace log output for every page within an application.
          Set trace enabled="true" to enable application trace logging.  If pageOutput="true", the
          trace information will be displayed at the bottom of each page.  Otherwise, you can view the
          application trace log by browsing the "trace.axd" page from your web application
          root.
    -->
      <trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />
      <!--  SESSION STATE SETTINGS
          By default ASP.NET uses cookies to identify which requests belong to a particular session.
          If cookies are not available, a session can be tracked by adding a session identifier to the URL.
          To disable cookies, set sessionState cookieless="true".
    -->
      <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20" />
      <!--  GLOBALIZATION
          This section sets the globalization settings of the application.
    -->
      <globalization fileEncoding="iso-8859-9" culture="tr-TR" uiCulture="tr-TR" />
   </system.web>
</configuration>


Diğer başlıkları takip ederek konuya devam ediniz...
Kullanıcı avatarı
freakmaxi
Site Admin
 
Mesajlar: 4
Kayıt: Prş Eki 23, 2008 2:07 am
Konum: İstanbul, Suadiye

Dön Solid Web Content

Kimler çevrimiçi

Bu forumu gezen kullanıcılar: Hiç bir kayıtlı kullanıcı yok ve 1 misafir

cron